《軟件設(shè)計(jì)人才選拔賽試題》由會(huì)員分享,可在線(xiàn)閱讀,更多相關(guān)《軟件設(shè)計(jì)人才選拔賽試題(8頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、全國(guó)軟件專(zhuān)業(yè)人才設(shè)計(jì)與開(kāi)發(fā)大賽選拔賽試題
一、基礎(chǔ)篇(50 分)
1、單選(每題 1 分,10 小題共 10 分)
1). 執(zhí)行下列程序中的輸出語(yǔ)句后,x 的值是______.
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ù)
2、: 14 22 XxYy (回車(chē)) 則能給 a 賦整數(shù) 14,給 b 賦整數(shù) 22,給 x 賦字符 x,給 y 賦字符 y 的正確程序段 是________.
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的值賦給變量
3、 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). 閱讀下面程序,該
4、程序段的功能是_____.
#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
5、)對(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”
6、,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; f
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) ;
7、
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)
8、break;}
C) int k=0; D) int s=36;
do { ++k;} while(k>=0) ; while(s); --s;
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
9、[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ō)明: a[5][9]; 則下列選項(xiàng)中對(duì)數(shù)組元素a[i][j]的引用錯(cuò)誤的有_____. (0≤i<4,0≤j<9)
A) *(&a[
10、0][0]+9*i+j) B) *(a+i)(j)
C) *(*(a+i)+j) D) *(a[i]+j)
6). 若有定義:char *st=“how are you!”;下面程序段正確的有_____.
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
{
11、 int a ; float b ; } stutype ;
則下列敘述正確的有_______.
A) struct 是結(jié)構(gòu)體類(lèi)型的關(guān)鍵字
B) struct stu 是用戶(hù)定義的結(jié)構(gòu)體類(lèi)型
C) stutype 是用戶(hù)定義的結(jié)構(gòu)體類(lèi)型名
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++)pr
12、intf(“%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、程序
13、填空(每空 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àn)上填入所編寫(xiě)的 若干表達(dá)式或語(yǔ)句。
試題程序:
#include
#include
#define N 40
void fun(char *str1,char *s
14、tr2)
{ 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);
pr
15、intf("**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。
注意:部分源程序給
16、出如下。 請(qǐng)勿改動(dòng)主函數(shù) main 和其他函數(shù)中的任何內(nèi)容,僅在函數(shù) fun 的橫線(xiàn)上填入所編寫(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()
17、 {
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ù)
18、,結(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àn)上填入所編寫(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
19、(*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)
20、;
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)從鍵盤(pán)上輸入兩個(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;
21、
}
a=num1;b=num2;
while(b!=0)
{ temp=【2】;
a=b;
b=temp;
}
printf("%d,%d",a,num1*num2/a);
}
二、奧數(shù)題(填空 每小題2分,共10分)
1)給你8顆小石頭和一架托盤(pán)天平。有7顆石頭的重量是一樣,另外一顆比其它石頭略重,除此之外,這些石頭完全沒(méi)有分別。請(qǐng)問(wèn):最少要稱(chēng)量 次,你才能把那顆較重的石頭找出來(lái)?
2)六年級(jí)有3個(gè)班,在一次數(shù)學(xué)競(jìng)賽中,至少有 人獲獎(jiǎng)才能保證在獲獎(jiǎng)的同學(xué)中一定有4名學(xué)生同班。
3)?1塊錢(qián)一瓶汽水,喝完后兩個(gè)空瓶換一瓶汽水。問(wèn):你有
22、20塊錢(qián),最多可以喝到 瓶汽水?
4)?有一牧場(chǎng),已知養(yǎng)牛27頭,6天把草吃盡;養(yǎng)牛23頭,9天把草吃盡。如果養(yǎng)牛21頭,那么 天能把牧場(chǎng)上的草吃盡呢?并且牧場(chǎng)上的草是不斷生長(zhǎng)的。??
5)有四個(gè)人要在深夜通過(guò)一座橋。這座橋最多只能承受兩個(gè)人的重量,而且必須打著手電筒才能通過(guò)。四個(gè)人只有一把手電筒,并且每個(gè)人的行走速度也不一樣:第一個(gè)人通過(guò)這座橋要花1分鐘,第二個(gè)人要花2分鐘,第三個(gè)人要花5分鐘,第四個(gè)人要花10分鐘;如果兩人同行,他們就只能以比較慢的那個(gè)人的速度前進(jìn)。這四個(gè)人全部通過(guò)這座橋的最短時(shí)間是 分鐘 ?
三、編程題(每題20分,共40分)
1、在西方
23、,星期五和數(shù)字13都代表著壞運(yùn)氣,兩個(gè)不幸的個(gè)體最后結(jié)合成超級(jí)不幸的一天。所以,不管哪個(gè)月的十三日又恰逢星期五就叫“黑色星期五”。
要求:輸入年份,輸出是:判斷該年是否包含黑色星期五,如包含,給出具體日期。
2、小明去銀行存錢(qián),拿了一堆硬幣。已知1角的硬幣厚度為1.8mm,5角的硬幣厚1.5mm,1元的硬幣為2.0mm。小明將1角的硬幣放成一摞,將5角的硬幣硬幣放成一摞,將1元的硬幣放成一摞,發(fā)現(xiàn)3摞硬幣一樣高。銀行正好把這些硬幣換成若干張面值為10元的紙幣。問(wèn)小明至少帶了多少錢(qián)的硬幣(元為單位),每種面值的硬幣有多少個(gè)????要求輸出格式為:1角的數(shù)量,5角的數(shù)量,1元的數(shù)量,總金額。