《C语言程序设计试题(45页).doc》由会员分享,可在线阅读,更多相关《C语言程序设计试题(45页).doc(46页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-全国软件专业人才设计与开发大赛校内选拔赛C语言程序设计试题说明:本试题共15页,请把答案写在答题卡上。一、单选题(共60小题,每题1分,共60分)1. 执行下列程序中的输出语句后,x的值是_.main()int x ;printf(“%dn”,(x=5*6,x*2,x+20);A)30 B)60 C)50 D)802. 下列程序的输出结果是_. main()int x=1,y=0,z;z=(x=0);printf(“%d %d% d%n”,z,x,y) ;A)0 -1 -1 B)0 -1 0 C)0 1 0 D)0 1 -13. 在C语言中,下列选项属于合法的长整型常数的是_. A)0L B
2、)1234567 C)0.0234567 D)3.14159e34. 下列选项中属于不正确的赋值语句的是_. A)t+; B)n1=(n2=(n3=0); C)k=i= =j; D)a=b,c=1;5. 若有定义:int a,b;char x,y;并有以下输入数据: 14 22 XxYy (回车)则能给a赋整数14,给b赋整数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
3、%c%c %c”, &a,&b,&x,&x,&y,&y);D) scanf(“%d%d %c %c”, &a, &b,&x,&y);6. 下列转义字符不正确的是_.A) B) C)053 D)07. 下列选项可作为C语言赋值语句的是_.A)x=3,y=5 B)a=b=6 C)i- -; D)y=int(x);8. 当c的值不为0时,下列选项中能正确将c的值赋给变量a、b的是_.A)c=b=a; B)(a=c)(b=c); C)(a=c)&(b=c); D)a=c=b;9. 有以下程序:main() unsigned int a ;int b=-1;a=b;printf(“%u”,a);该程序运
4、行后的输出结果是_.(知识点4.5)A)-1 B)65535 C)32767 D)-3276810. 若x、b、m、n均为int型变量,执行下面语句后b的值为_.m=20;n=6;x=(- -m= =n+)?- -m:+n;b=m+;A)11 B)6 C)19 D)1811. 有以下程序:main() int a=111,b=222;printf(“%dn”,a,b);该程序运行后的输出结果是_. A)错误信息 B)111 C)222 D)111,22212. 以下程序的输出结果是_. main() int a=2,c=5;printf(“a=%d,b=%dn”,a,c);A) a=%2,b=
5、%5 B) a=2,b=5 C) a=%d,b=%d D) a=%d,b=%d13. 对于浮点型变量f,能实现对f中的值在小数点后第三位进行四舍五入的表达式是_. A)f=(f*100+0.5)/100.0 B)f=(f*100+0.5)/100C)f=(int)(f*100+0.5)/100.0 D)f=(f/100+0.5)*10014. 设 a=5, b=6, c=7, d=8, m=2, n=2, 执行(m=ab)&(n=cd) 后m,n的值为_. A) 2,2 B) 2,0 C) 0,2 D) 0,015. 语句printf(“%dn”,strlen(“asdnx121”);的输出结
6、果是_. A) 9 B) 11 C) 7 D) 816. 有以下程序:main( )int y=1234;printf(“y=%6d”,y);printf(“y=%+06dn”,y);该程序的运行结果是_.A) y= 1234y=001234 B) y= 1234y=+01234C) y=1234y=+01234 D) y= 1234y=123417. 语句:printf(“%d”, !9);的输出结果是_.A) 0 B) 1 C) 有语法错误,不能执行 D) -918. 已有定义语句:int x=6,y=4,z=5;执行以下语句后,能正确表示x、y、z值的选项是_.if(xy)z=x;x=y
7、 ;y=z;A) x=4,y=5,z=6 B) x=4,y=6,z=6C) x=4,y=5,z=5 D) x=5,y=6,z=419. 下列选项中属于正确的switch语句的是_.A)switch(1.0) B)swicth(1) case 1.0 :printf(“An”); case 1 :printf(“An”);case 2.0 :printf(“Bn”); case 2 :printf(“Bn”);C)switch(int)(1.0+2.5) D)switch(“a”); case 1 :printf(“An”); case “a” :printf(“An”);case 1+2 :p
8、rintf(“Bn”); case “b” :printf(“Bn”);20. 若k为int型变量,以下语句段执行后的输出结果是_.k=-3;if(kb)if(cd)x=1 ;elseif(ad)x=2 ;else x=3 ;else x=4 ;else x=5 ;A)2 B)3 C)4 D)522. 下列程序的运行结果是_.main() int y=10;do y- - ; while(- -y);printf(“%dn”,y- -);A)-1 B)1 C)8 D)023. 下列程序的运行结果是_.# include main()int i ;for(i=1;i=5;i+) if(i %2)
9、printf(“*”);else continue ;printf(“#”);printf(“$n”);A)*#*#$ B)#*#*#*$ C)*#*#*#$ D)*#$24. 若x是int型变量,且有下面的程序片段: for(x=5;x8;x+)printf(x%2)?(“*%d”):(“#%dn”),x);该程序片段的输出结果是 _.A)*5#6 B)#5 C)#5*6#7 D)*5#6*7 *7 *6#725. 有以下程序:main()int a=1,b=0;switch(a) case 1:switch(b) case 0:printf(“*”);break ;case 1:print
10、f(“#”);break ; case 2: printf(“$”);break ; 该程序的输出结果是_. A)* B)*$ C)*#$ D) #$26. 下列程序段的输出结果是_. int x=3;do printf(“%3d”,x-=2);while(!(x);A)1 B)3 0 C)1 -2 D)死循环27. 有以下程序,其中x、y为整型变量;for(x=0,y=0;(x=1)&(y= 1);x+,y);printf(“x=%d,y=%d”,x,y);该程序的输出结果是_. A)x=2,y=0 B) x=1,y=0 C) x=1,y=1 D) x=0,y=028. 有以下程序段:int
11、 n=0,p;do scanf(“%d”,&p);n+; while(p!=12345&nj) 语句共执行的次数是_. main() int i=0,j=10,k=2,s=0;for(;) i+= k ;if(ij) printf(“%d”,s);break ;s+=i ;A)4 B)7 C)5 D)630. 以下程序的功能是:按顺序读入10名学生和4门课程的成绩,计算出每位学生的平均分进行输出,但运行结果不正确。main() int n,k;float score,ave;ave=0.0;for(n=1;n=10;n+) for(k=1;k=4;k+) scanf(“%f”,&score);
12、ave+=score/4 ;printf(“NO%d:%fn”,n,ave);造成程序计算结果错误的语句行是_.A)ave=0.0; B)for(n=1;n=10;n+)C)ave+=score/4 ; D)printf(“NO%d:%fn”,n,ave);31. 若有以下定义:char s10=a,b,c,0,0,2,x32,0;执行语句printf(“%d”,strlen(s);的结果是_.A)3 B)4 C)8 D)1032. 设有数组定义:char array =“abcdef”;则数组array所占的空间为_.A)4个字节 B)5个字节 C)6个字节 D)7个字节33. 有以下程序:
13、main() char str 10=“China”,“Beijing”,*p=str;printf(“%sn”,p+10);该程序运行后的输出结果是_.A)China B)Beijing C)ng D)ing34. 阅读下面程序,该程序段的功能是_.#include main() int c =23,1,56,234,7,0,34,i,j,t;for(i=1;i=0&tcj) cj+1=cj;j- - ;cj+1=t;for(i=0;i7;i+)printf(“%d ”,ci );putchar(n);A)对数组元素的升序排列 B)对数组元素的降序排列C)对数组元素的倒序排列 D)对数组元素
14、的随机排列35. 下列程序的输出结果是_.main() int n33,i,j;for(i=0;i3;i+)for(j=0;j3;j+)nij=i+j;for(i=0;i2;i+)for(j=0;j2;j+)ni+1j+1+= nij;printf(“%d n”,nij);A)14 B)0 C)6 D)值不确定36. 下列函数调用语句中含有_个参数。func(f1,f2),(f2,f3,f4),f5)A)3 B)4 C)5 D)637. 下列程序的运行结果是_.#include main() char *p1,*p2,ch20=“ABCDEFabcdef”;p1=“1234”;p2=“abcd
15、”;strcpy(ch+1,p2+1);strcpy(ch+3,p1+3);pintf(“%sn”,ch);A)Abc4EFabcde B)Abc4EF C)AbcdEF D)Abc438. 下列程序的运行结果是_.# include int f(int a) switch (a) case 0:return 0;case 1:case 2:return 1;return(f(a-2)+f(a-3);main() int b;b=f(10);printf(“b=%dn”,b);A) 12 B)10 C)9 D)839. 有以下程序:fun(int n) if(n= =1| n= =2)retu
16、rn 2;return s=n-fun(n-2);main()printf(“%dn”,fun(7);该程序运行后的输出结果是_.A) 1 B)2 C)3 D)440. 下列程序中函数sort的功能是对a数组中的数据进行由大到小的排序:void sort(int a ,int n) int i,j,t;for(i=0;in-1;i+)for(j=i+1;jn;j+)if(aiaj)t=ai;ai=aj;aj=t;main() int aa10=1,2,3,4,5,6,7,8,9,10 ,i;sort(&aa3,5);for(i=0;i10;i+)printf(“%d,”,aai);printf
17、(“n”);该程序运行后的输出结果是_.A)1,2,3,4,5,6,7,8,9,10, B)10,9,8,7,6,5,4,3,2,1,C)1,2,3,8,7,6,5,4,9,10, D)1,2,10,9,8,7,6,5,4,3,41. 下列程序的运行结果是_.main() int a=3,y;y=fn(a,a+);printf(“%d”,y);int fn(x,c) int b;if(xc)b=1;else if(x= =c)b=0;else b=-1 ;return(b);A)3 B)-1 C)1 D)042. 下列程序的运行结果是_.main() char arr24;strcpy(arr
18、,“you”);strcpy(arr1,“me”);printf(“%sn” ,arr);A)you me B)you C)me D)arr43. 下列程序的输出结果是_.int f() static int i=0;int s=1;s+=i;i+;return s;main() int i , a=0;for(i=0;i5;i+)a+=f();printf(“%dn”,a);A)20 B)24 C)25 D)1544. 程序中对fun函数有如下说明:void *fun();此说明的含义是_.A) fun函数无返回值B) fun函数的返回值可以是任意的数据类型C) fun函数的返回值是无值型的
19、指针类型D) 指针fun指向一个函数,该函数无返回值45. 设有下列定义:static int x,*p=&x,*q;scanf(“%d,%d”,p,q);若输入3,4,则x的值为_.A)3 B)4 C)0 D)无法确定46. 设有以下程序:int fun(char *s) int n=0;while(*s) n+;s+ ;return n ;main()char y =“this_is_an_example.”;printf(“%dn”,fun(&y6);该程序的输出结果是_.A)12 B)13 C)14 D)1647. 下列程序的功能是_.int fun(char *a) char *b=
20、a;while(*b)b+;return b-a ;A) 比较两个字符串的大小 B)字符串的复制C) 计算字符串的长度 D) 字符串的连接48. 下列程序的输出结果是_.main()int k=3,m=5,n=7;int *pk=&k,*pm=&m,*p;*(p=&n)=*pk*(*pm);printf(“%dn”,n);A)5 B)7 C)15 D)2149. 下列程序的执行结果是_.main() char a10=9,8,7,6,5,4,3,2,1,0,*p=a+5;printf(“%d”,*p);A)非法 B)a4的地址 C)5 D)450. 以下函数返回a所指的数组中最小值所在的下标值
21、:fun(int *a, int n) int i , j=0 , p ;p=j ;for(i=j;in;i+)if(aiap) _ ;return(p);在下划线处应填入_.A)i=p B)ap=ai C)p=j D)p=i51. 下列程序的运行结果是_.void fun(int *a,int *b) int *k;k=a;a=b;b=k;main() int a=3,b=6,*x=&a,*y=&b;fun(x,y);printf(“%d %d”,a,b);A)6 3 B)3 6 C)编译出错 D)0 052. 有如下程序:#define f(x)x*xmain() int i ;i=f(4
22、+4)/(2+2);printf(“%dn”,i);该程序执行后的输出结果是_.A)28 B)21 C)16 D)453. 下列程序的输出结果是_.struct tt; int n1;char n2;float n3;union uuint u12;char u22;su;main()printf(“%dn”,sizeof(struct tt);A)11 B)12 C)7 D)954. 下列程序的输出结果是_.struct LH int n;struct LH *m;p4;main() int i;for(i=0;in,p3.m-n); A)1,2 B)1,3 C)2,0 D)程序出错55.
23、下列程序的输出结果是_.struct st int x;int *y;*p;int dt4=10,20,30,40;struct st aa4=50,&dt0,60,&dt1,70,&dt2,80,&dt3;main() p=aa;printf(“%d ”,+p-x);printf(“%d ”,(+p)-x);printf(“%d ”,+(*p-y);A)10 20 20 B)50 60 21 C)51 60 21 D)60 70 3156. 字符0的ASCII码的十进制数为48,且数组的第0个元素在低位,则以下程序的执行结果是_.#include main() union int i4;lo
24、ng k;char c6;a,*s=&a ;s-i0=0x39;s-i1=0x38;printf(“%cn”,s-c0);A)5 B)3 C)6 D)957. 下列程序的运行结果是_.main() unsigned c1=0xff,c2=0x00;c1=c2|c12;c2=c10236;printf(“%x,%xn”,c1,c2);A)0x3f,0XA1 B)3f,A1 C)ffff,61 D)3f,a158. 若有运算符,sizeof,&=,则它们按优先级由高至低的排列次序正确的是_.A)sizeof,&= , , B)sizeof, ,&=C),sizeof, &= D),&=,sizeo
25、f59. 有以下程序:#include void fun(char *fname,char *st) FILE *myf;int i;myf=fopen(fname,“w”);for(i=0;istrlen(st);i+)fputc(sti,myf);fclose(myf);main() fun(“test.t”,“new world”);fun(“test.t”,“hello,”);执行该程序后,文件test.t中的内容是_.A)hello, B)new worldhello, C)new world D)hello,rld60. 有以下程序:#include main() FILE *fp
26、;int i=20,j=30,k,n;fp=fopen(“d1.dat”,“w”);fprintf(fp,“%dn”,i);fprintf(fp,“%dn”,j);fclose(fp);fp=fopen(“d1.dat”,“r”);fscanf(fp,“%d%d”,&k,&n);printf(“%d %dn”,k,n);fclose(fp);该程序运行后的输出结果是_.A)20 30 B)20 50 C)30 50 D)30 20二、多选题(共20小题,每题2分,共40分)1. 下列符号串中,不属于C语言合法标识符的有_.A)_1_2_3 B)a-b-c C)int D)9cd2. 当把下列四
27、个表达式用作if语句的控制表达式时,含义相同的选项有_.(假设k0)A)k%2 B)k%2= =1 C)(k%2)!=0 D)!k%2= =03. 已有定义 int a=-2;和输出语句printf(“%8lx”,a);下列叙述不正确的有_.A) 整型变量的输出形式只有%d一种B) %x是格式符的一种,它可以适用于任何一种类型的数据C) %x是格式符的一种,其变量的值按十六进制输出,但%8lx是错误的D) %8lx不是错误的格式符,其中数字81规定了输出字段的宽度4. 下列选项中,没有构成死循环的程序段有_.A)int i=100; B)for( ; ; )while(1) i=i%100+1
28、;if(i=100)break;C)int k=0; D)int s=36;do +k; while(k=0); while(s);s;5. t为int类型,进入下面的循环之前,t的值为0:while(t=1) 。则下列叙述不正确的有_.A)循环控制表达式的值为0 B)循环控制表达式的值为1C)循环控制表达式不合法 D)循环有可能是个无限循环6. 下列判断正确的是_.A) char *a=“china”;等价于 char *a;*a=“china”;B) char str6=“china”;等价于char str = “china”;C) char *s=“china”;等价于char *s;
29、s=“china”;D) char c4=“abc”,d4=“abc”;等价于char c4=d4=“abc”;7. 若变量已正确定义,以下能正确计算1+2+3+4+5的程序段有_.A)i=1;s=1; B)i=0;s=0;do do s=s+i;i+; i+; s=s+i;while(i5); while(i5);C)i=1;s=0; D)i=0;s=0;do do s=s+i;i+; s=s+i; i+;while(i6); while(i=5);8. 下面程序把数组元素中的最小值放入a0中,则在if语句中条件表达式可以是_.main() int a10=5,2,9,6,7,1,12,8,
30、23,0,*p=a,i;for(i=0;ia B)*pa0 C)*p*a0 D)*p*a9. 设有如下定义:char *s2=“abcd”,“ABCD”;则下列说法正确的有_.A) s数组元素的值分别是“abcd”和“ABCD”两个字符串的首地址B) s是指针数组名,它含有两个元素分别指向字符型一维数组C) s数组的两个元素分别存放的是含有四个字符的一维字符数组中的元素D) s数组的两个元素中分别存放了字符a和A的地址10. 以下有关字符串赋值、赋初值的语句错误的有_.A)char sz240;sz1=“string1”;B)char *sz2;sz1=“string2”;C)char sz4
31、0=“string3”;D)char *sz =“string4”;11. 若有以下说明:int a59;则下列选项中对数组元素aij的引用错误的有_.(0=i4,0=jlink=a-link-link ;a-link-link=s;B)a=a-link ; a-link=s ;s-link=NULL;C)s-link=NULL ;a=(*a)。link ; (*a)。link =s;D)a=a-link ; s-link=a-link;a-link=s-link;15. 设有定义语句: int x6=2,4,6,8,5,7,*p=x,i;要求依次输出x数组6个元素中的值,下列选项中能完成次操
32、作的语句有_.A)for(i=0;i6;i+)printf(“%2d”,*(p+);B)for(i=0;i6;i+)printf(“%2d”,*(p+i);C)for(i=0;i6;i+)printf(“%2d”,*p+);D)for(i=0;i6;i+)printf(“%2d”,(*p)+);16. 下列叙述正确的有_.(知识点8.5)A) 函数可以嵌套定义,但不能嵌套调用B) 函数可以嵌套调用,也可以嵌套定义C) 函数不可以嵌套定义,但可以递归调用D) 函数可以嵌套调用,但不能嵌套定义17. 下列叙述不正确的有_.A)全局变量可以为本文件中其他函数所调用,编译时分配在静态存储区B)局部变量
33、只在本函数范围内有效,形式参数属于局部变量C)局部变量如没有被说明为静态的存储类别,则会被分配动态存储空间,存储在动态存储区中D)局部静态变量在函数调用结束后依然存在,但其他函数不能引用它18. 若变量已正确定义,要求程序段完成求5!的计算,下列选项中不能完成此操作的程序段有_.A)for(i=1,p=1;i=5;i+)p*=i;B)for(i=1;i=5;i+)p=1;p*=i;C)i=1;p=1;while(i=5) p*=i;i+;D)i=1;p=1;do p*=i;i+; while(i=5);19. 若有以下说明,则对strcpy库函数的调用不正确的有_.char *str1=“co
34、py”,str210,*str3=“abcde”,*str4,*str5=“hijk”A)strcpy(str2,str1); B)strcpy(str3,str1);C)strcpy(str4,str1); D)strcpy(str5 ,str1);20. 下列选项中可以将变量n清零的表达式有_.A)n=n&n B)n=n&0 C)n=nn D)n=n|n三、附加题(共20分)现有21根火柴,两人轮流取,每人每次可取走1- 4根,不可多取,也不能不取,谁取最后一根火柴则谁输。请编写一个程序进行人机对弈,要求人先取,计算机后取;计算机一方为“常胜将军”。分析问题,描述算法设计思想:(不需编程)第 46 页-