《全國(guó)軟件專業(yè)人才設(shè)計(jì)與開(kāi)發(fā)大賽題目選拔試題.doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《全國(guó)軟件專業(yè)人才設(shè)計(jì)與開(kāi)發(fā)大賽題目選拔試題.doc(9頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
全國(guó)軟件專業(yè)人才設(shè)計(jì)與開(kāi)發(fā)大賽題目選拔試題
一、基礎(chǔ)篇(50分)
1、單選(每題1分,10小題共10分)
1). 執(zhí)行下列程序中的輸出語(yǔ)句后,x的值是__A____.
main()
{int x ;
printf(“%d\n”,(x=5*6,x*2,x+20));}
A)30 B)60 C)50 D)80
2). 在C語(yǔ)言中,下列選項(xiàng)屬于合法的長(zhǎng)整型常數(shù)的是_______.
A)0L B)1234567 C)0.0234567 D)3.14159e3
3). 若有定義:int a,b;char x,y;并有以下輸入數(shù)據(jù): 14 22 XxYy (回車)
則能給a賦整數(shù)14,給b賦整數(shù)22,給x賦字符x,給y賦字符y的正確程序段是___C_____.
A) scanf(“%d %d”,&a,&b);x=getchar();y=getchar();
B) scanf(“%d%d %c %c”, &a, &b,&x,&x,&y,&y);
C) scanf(“%d %d %c%c%c %c”, &a,&b,&x,&x,&y,&y);
D) scanf(“%d%d %c %c”, &a, &b,&x,&y);
4). 當(dāng)c的值不為0時(shí),下列選項(xiàng)中能正確將c的值賦給變量a、b的是_______.
A)c=b=a; B)(a=c)‖(b=c); C)(a=c)&&(b=c); D)a=c=b;
5). 語(yǔ)句printf(“%d\n”,strlen(“asd\n\x12\1\\”));的輸出結(jié)果是______.
A)9 B)11 C)7 D) 8
6). 下列程序的運(yùn)行結(jié)果是________.
main()
{ int y=10;
do { y- - ;} while(- -y);
printf(“%d\n”,y- -);}
A)-1 B)1 C)8 D)0
7). 閱讀下面程序,該程序段的功能是_____.
#include
main()
{ int c[ ]={23,1,56,234,7,0,34},i,j,t;
for(i=1;i<7;i++)
{ t=c[i];j=i-1;
while(j>=0&&t>c[j]) { c[j+1]=c[j];j- - ;}
c[j+1]=t;}
for(i=0;i<7;i++)printf(“%d ”,c[i] );
putchar(\n);
}
A)對(duì)數(shù)組元素的升序排列 B)對(duì)數(shù)組元素的降序排列
C)對(duì)數(shù)組元素的倒序排列 D)對(duì)數(shù)組元素的隨機(jī)排列
8). 有如下程序:
#define f(x)x*x
main()
{ int i ;
i=f(4+4)/(2+2);
printf(“%d\n”,i);}
該程序執(zhí)行后的輸出結(jié)果是_______.
A)28 B)21 C)16 D)4
9). 下列程序的運(yùn)行結(jié)果是_______.
main()
{ unsigned c1=0xff,c2=0x00;
c1=c2|c1>>2;c2=c1^0236;
printf(“%x,%x\n”,c1,c2);
}
A)0x3f,0XA1 B)3f,A1 C)ffff,61 D)3f,a1
10). 有以下程序:
#include
main()
{ FILE *fp;int i=20,j=30,k,n;
fp=fopen(“d1.dat”,“w”);
fprintf(fp,“%d\n”,i);fprintf(fp,“%d\n”,j);
fclose(fp);
fp=fopen(“d1.dat”,“r”);
fscanf(fp,“%d%d”,&k,&n);printf(“%d %d\n”,k,n);
fclose(fp);}
該程序運(yùn)行后的輸出結(jié)果是_______.
A)20 30 B)20 50 C)30 50 D)30 20
2、多選(每題2分,共10題,共 20分,錯(cuò)選,漏選均不得分)
1). 下列符號(hào)串中,不屬于C語(yǔ)言合法標(biāo)識(shí)符的有_____.
A)_1_2_3 B)a-b-c C)int D)9cd
2). 下列選項(xiàng)中,沒(méi)有構(gòu)成死循環(huán)的程序段有_____.
A)int i=100; B)for( ; ; )
while(1)
{ i=i%100+1;
if(i>=100)break;}
C)int k=0; D)int s=36;
do { ++k;} while(k>=0); while(s);——s;
3). 下列判斷正確的是_______.(知識(shí)點(diǎn)10.3)
A) char *a=“china”;等價(jià)于 char *a;*a=“china”;
B) char str[6]={“china”};等價(jià)于char str[ ]= {“china”};
C) char *s=“china”;等價(jià)于char *s;s=“china”;
D) char c[4]=“abc”,d[4]=“abc”;等價(jià)于char c[4]=d[4]=“abc”;
4). 設(shè)有如下定義:
char *s[2]={“abcd”,“ABCD”};
則下列說(shuō)法正確的有_____.
A) s數(shù)組元素的值分別是“abcd”和“ABCD”兩個(gè)字符串的首地址
B) s是指針數(shù)組名,它含有兩個(gè)元素分別指向字符型一維數(shù)組
C) s數(shù)組的兩個(gè)元素分別存放的是含有四個(gè)字符的一維字符數(shù)組中的元素
D) s數(shù)組的兩個(gè)元素中分別存放了字符a和A的地址
5). 若有以下說(shuō)明:int a[5][9];則下列選項(xiàng)中對(duì)數(shù)組元素a[i][j]的引用錯(cuò)誤的有_______.(0<=i<4,0<=j<9)
A)*(&a[0][0]+9*i+j) B)*(a+i)(j) C)*(*(a+i)+j) D)*(a[i]+j)
6). 若有定義:char *st=“how are you!”;下面程序段正確的有_____.(知識(shí)點(diǎn):7.3)
A) char a[11],*p;strcpy(p=a+1,&st[4]);
B) char a[11];strcpy(++a,st);
C) char a[11];strcpy(a,st);
D) char a[ ],*p;strcpy(p=&a[1],st+2);
7). 設(shè)有以下說(shuō)明語(yǔ)句:
Struct stu
{ int a ;
float b ;
}stutype ;
則下列敘述正確的有_______.
A) struct是結(jié)構(gòu)體類型的關(guān)鍵字 B) struct stu是用戶定義的結(jié)構(gòu)體類型
C) stutype是用戶定義的結(jié)構(gòu)體類型名 D) a和b都是結(jié)構(gòu)體成員名
8). 設(shè)有定義語(yǔ)句: int x[6]={2,4,6,8,5,7},*p=x,i;
要求依次輸出x數(shù)組6個(gè)元素中的值,下列選項(xiàng)中能完成次操作的語(yǔ)句有_______.
A)for(i=0;i<6;i++)printf(“%2d”,*(p++));
B)for(i=0;i<6;i++)printf(“%2d”,*(p+i));
C)for(i=0;i<6;i++)printf(“%2d”,*p++);
D)for(i=0;i<6;i++)printf(“%2d”,(*p)++);
9). 下列敘述正確的有_____.
A) 函數(shù)可以嵌套定義,但不能嵌套調(diào)用
B) 函數(shù)可以嵌套調(diào)用,也可以嵌套定義
C) 函數(shù)不可以嵌套定義,但可以遞歸調(diào)用
D) 函數(shù)可以嵌套調(diào)用,但不能嵌套定義
10). 下列選項(xiàng)中可以將變量n清零的表達(dá)式有_______.
A)n=n&~n B)n=n&0 C)n=n^n D)n=n|n
3、程序填空(每空2分,共10空,共20分)
1)、請(qǐng)補(bǔ)充函數(shù)fun(),該函數(shù)的功能是:把從主函數(shù)中輸入的字符串str2接在字符串str1的后面。例如:str1=“How do”,str2=“ you do?”,結(jié)果輸出:How do you do?
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的橫線上填入所編寫(xiě)的若干表達(dá)式或語(yǔ)句。
試題程序:
#include
#include
#define N 40
void fun(char *str1,char *str2)
{
int i=0;
char *p1=str1;
char *p2=str2;
while(【1】)
i++;
for( ;【2】;i++)
*(p1+i)=【3】;
*(p1+i)=\0;
}
main()
{
char str1[N],str2[N];
clrscr();
printf("*****Input the string str1 & str2*****\n");
printf(" \nstr1:");
gets(str1);
printf(" \nstr2:");
gets(str2);
printf("**The string str1 & str2**\n");
puts(str1);
puts(str2);
fun(str1,str2);
printf("*****The new string *****\n");
puts(str1);
}
2)、請(qǐng)補(bǔ)充函數(shù)fun(),該函數(shù)的功能是求一維數(shù)組x[N]的平均值,并對(duì)所得結(jié)果進(jìn)行四舍五入(保留兩位小數(shù))。
例如:當(dāng)x[10]={15.6,19.9,16.7,15.2,18.3,12.1,15.5,11.0,
10.0,16.0},結(jié)果為:avg=15.030000。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的橫線上填入所編寫(xiě)的若干表達(dá)式或語(yǔ)句。
試題程序:
#include
#include
double fun(double x[10])
{
int i;
long t;
double avg=0.0;
double sum=0.0;
for(i=0;i<10;i++)
【1】;
avg=sum/10;
avg=【2】;
t=【3】;
avg=(double)t/100;
return avg;
}
main()
{
double avg,x[10]={15.6,19.9,16.7,15.2,
18.3,12.1,15.5,11.0,10.0,16.0};
int i;
clrscr();
printf("\nThe original data is :\n");
for(i=0;i<10;i++)
printf("%6.1f",x[i]);
printf("\n\n");
avg=fun(x);
printf("average=%f\n\n",avg);
}
3)、請(qǐng)補(bǔ)充函數(shù)fun(),該函數(shù)的功能是:從‘a(chǎn)’到‘z’統(tǒng)計(jì)一個(gè)字符串中所有字母字符各自出現(xiàn)的次數(shù),結(jié)果保存在數(shù)組alf中。注意:不區(qū)分大小寫(xiě),不能使用字符串庫(kù)函數(shù)。
例如,輸入:“A=abc+5*c”,結(jié)果為:a=2,b=1,c=2。
注意:部分源程序給出如下。
請(qǐng)勿改動(dòng)主函數(shù)main和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun的橫線上填入所編寫(xiě)的若干表達(dá)式或語(yǔ)句。
試題程序:
#include
#include
#define N 100
void fun(char *tt,int alf[])
{
int i;
char *p=tt;
for(i=0;i<26;i++)
【1】;
while(*p)
{
if(*p>=A&&*p<=Z)
【2】;
if(*p>=a&&*p<=z)
alf[*p-a]++;
p++;
}
}
main()
{
char str[N];
char a=a;
int alf[26],k;
clrscr();
printf("\nPlease enter a char string:");
scanf("%s",str);
printf("\n**The original string**\n");
puts(str);
fun(str,alf);
printf("\n**The number of letter**\n");
for(k=0;k<26;k++)
{
if(k%5==0)
printf("\n");
printf("%c=%d ",a+k,alf[k]);
}
printf("\n");
}
4)、從鍵盤上輸入兩個(gè)整數(shù)m和n,求其最大公約數(shù)。
main()
{int a,b,num1,num2,temp;
scanf("%d,%d",&num1,&num2);
if(【 1 】)
{ temp=num1;
num1=num2;
num2=temp;
}
a=num1;b=num2;
while(b!=0)
{ temp=【2】;
a=b;
b=temp;
}
printf("%d,%d",a,num1*num2/a);
}
二、智力題(30分)
1、單選題:(每小題4分,5小題,共20分)
1)給你8顆小石頭和一架托盤天平。有7顆石頭的重量是一樣,另外一顆比其它石頭略重,除此之外,這些石頭完全沒(méi)有分別。你不得假設(shè)那顆石頭到底比其它的石頭重了多少。請(qǐng)問(wèn):最少要稱量幾次,你才能把那顆較重的石頭找出來(lái)?
A1次B2次C3次D4次
2)一個(gè)人花8塊錢買了一只雞,9塊錢賣掉了,然后他覺(jué)得不劃算,花10塊錢又買回來(lái)了,11塊賣給另外一個(gè)人。問(wèn)他賺了多少?
A1塊B2塊C3塊D4塊
3)1塊錢一瓶汽水,喝完后兩個(gè)空瓶換一瓶汽水。問(wèn):你有20塊錢,最多可以喝到幾瓶汽水?
A37瓶B38瓶C39瓶D40瓶
4)有一牧場(chǎng),已知養(yǎng)牛27頭,6天把草吃盡;養(yǎng)牛23頭,9天把草吃盡。如果養(yǎng)牛21頭,那么幾天能把牧場(chǎng)上的草吃盡呢?并且牧場(chǎng)上的草是不斷生長(zhǎng)的。
A12天B13天C14天D15天
5)有四個(gè)人要在深夜通過(guò)一座橋。這座橋最多只能承受兩個(gè)人的重量,而且必須打著手電筒才能通過(guò)。四個(gè)人只有一把手電筒,并且每個(gè)人的行走速度也不一樣:第一個(gè)人通過(guò)這座橋要花1分鐘,第二個(gè)人要花2分鐘,第三個(gè)人要花5分鐘,第四個(gè)人要花10分鐘;如果兩人同行,他們就只能以比較慢的那個(gè)人的速度前進(jìn)。這四個(gè)人全部通過(guò)這座橋的最短時(shí)間是多少?
A15分鐘B17分鐘C19分鐘D21分鐘
2、推理 (共10分)
假設(shè)有一個(gè)池塘,里面有無(wú)窮多的水。現(xiàn)有2個(gè)空水壺,容積分別為5升和6升。問(wèn)題是如何只用這2個(gè)水壺從池塘里取得3升的水。
三、編程題(20分`二選一)
1、在西方,星期五和數(shù)字 13 都代表著壞運(yùn)氣,兩個(gè)不幸的個(gè)體最后結(jié)合成超級(jí)不幸的一天。所以,不管哪個(gè)月的十三日又恰逢星期五就叫“黑色星期五”。
要求:輸入年份,輸出是:判斷該年是否包含黑色星期五,如包含,給出具體日期
2、小明去銀行存錢,拿了一堆硬幣。已知1角的硬幣厚度為1.8mm ,5 角的硬幣厚1.5mm ,1元的硬幣為2.0mm 。小明將1 角的硬幣放成一摞,將5 角的硬幣硬幣放成一摞,將1元的硬幣放成一摞,發(fā)現(xiàn)3 摞硬幣一樣高。銀行正好把這些硬幣換成若干張面值為10 元的紙幣。問(wèn)小明至少帶了多少錢的硬幣(元為單位),每種面值的硬幣有多少個(gè)?
要求輸出格式為: 1 角的數(shù)量,5 角的數(shù)量,1 元的數(shù)量,總金額。(例如:20,30,40,50)
說(shuō)明在結(jié)果中只輸出各個(gè)對(duì)應(yīng)的數(shù)字即可
全國(guó)軟件專業(yè)人才設(shè)計(jì)與開(kāi)發(fā)大賽題目選拔試題參考答案
一、基礎(chǔ)篇(50分)
1、單選(每題1分,10小題共10分)
AACCC DBBDA
2、多選(每題2分,共10題,共 20分,錯(cuò)選,漏選均不得分)
1、BCD 2、AC 3、BC 4、ABD 5、B 6、A 7、ABD 8、ABC 9、CD 10、ABC
3、程序填空(每空2分,共10空,共20分)
1、【1】*(p1+i) 【2】*p2 【3】*p2++
2、【1】sum+=x[i] 【2】avg*1000 【3】(avg+5)/10
3、【1】alf[i]=0 【2】*p+=32
4、【1】num1>num2 【2】a%b
二、智力題(共30分)
1、單選題:(每小題4分,5小題,共20分)
BBCAB
2、推理 (共10分)
a、由滿6向空5倒,剩1升,把這1升倒5里。
b、然后6剩滿,倒5里面,由于5里面有1升水,因此6只能向5倒4升水,然后將6剩余的2升,倒入空的5里面。
c、再灌滿6向5里倒3升,剩余3升。
三、編程題(20分`二選一)
1、參考答案:
#include
typedef struct
{
int month;
int day;
}Data;
int main()
{
Data data[10];
int a[13]={0,12,43,71,102,132,163,193,224,255,285,316,346};
int b[13]={0,12,43,72,103,133,164,194,225,256,286,317,347};//閏年時(shí)
int n=0,i,year;
scanf("%d",&year);
if(((year%4==0)&&(year%100!=0))||(year%400==0))//閏年時(shí)
{
for(i=1;i<=12;i++)
{
if((year*365+(year-1)/4-year/100+year/400+b[i])%7==5)
{
data[n].month=i;
data[n].day=13;
n++;
}
}
}
else//平年
{
for(i=1;i<=12;i++)
{
if((year*365+year/4-year/100+year/400+a[i])%7==5)
{
data[n].month=i;
data[n].day=13;
n++;
}
}
}
if(n==1)
{
printf("There is %d Black Friday in year %d.\nIt is:\n",n,year);
printf("%d/%d/%d\n",year,data[0].month,data[0].day);
}
else
{
printf("There are %d Black Fridays in year %d.\nThey are:\n",n,year);
for(i=0;i
void main()
{
int yijiao;
int wujiao;
int yiyuan;
int sum;
for(yiyuan=0;yiyuan<100;yiyuan++)
{
for(wujiao=0;wujiao<100;wujiao++)
{
for(yijiao=0;yijiao<100;yijiao++)
{
sum=yijiao+wujiao*5+yiyuan*10;
if((sum>=100)&&(sum%100==0)&&(18*yijiao==15*wujiao)&&(15*wujiao==20*yiyu
{
printf("%d,%d,%d,%d\n",yijiao,wujiao,yiyuan,sum/10);
break;
}
}
}
}
}
鏈接地址:http://www.820124.com/p-7922024.html