当前位置:首页 > ITAT 第五届C语言预赛试题(修改版)
一、单选题(共60小题,每题1分,共60分)
1. 执行下列程序中的输出语句后,x的值是__A____。(知识点3.10)
main() {int x ;
printf(“%d\\n”,(x=5*6,x*2,x+20));} A)30 B)60 C)50 D)80
考查点:逗号表达式,变量的赋值。逗号表达式的按照表达式顺序依次求值,整个逗号表达式的值为最后一个表达式的值,所以此题的输出结果是D。 2. 下列程序的输出结果是__C_____。(知识点3.8) main()
{int x=1,y=0,z;
z=(x<=0)&&(y- ->=0);
printf(“%d %d% d%\\n”,z,x,y) ;}
A)0 -1 -1 B)0 -1 0 C)0 1 0 D)0 1 -1
考查点:逻辑表达式。此题注意可以通过判断x和y的值未改变,快速选择C。 3. 在C语言中,下列选项属于合法的长整型常数的是___A____。(知识点3.3) A)0L B)1234567 C)0.0234567 D)3.14159e3 考查点:常数类型的判断。长整型常数后加L。
4. 下列选项中属于不正确的赋值语句的是__D___。 (知识点3.6) 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的正确程序段是__C______。 (知识点4.2) 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); 6. 下列转义字符不正确的是___B____。(知识点3. 5) A)?\\\\? B)?\\? C)?\\053? D)?\\0?
7. 下列选项可作为C语言赋值语句的是____C___。(知识点4.2) A)x=3,y=5 B)a=b=6 C)i- -; D)y=int(x);
考查知识点:赋值语句,强制类型转换。A和B项不是语句,正确应该加分号;D项强制类型转换用法不正确,正确应该是y= (int)x;C项正确,等价为语句i=i+1;。
8. 当c的值不为0时,下列选项中能正确将c的值赋给变量a、b的是__C_____。(知识点5.2) 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);}
该程序运行后的输出结果是____B___。(知识点4.5)
A)-1 B)65535 C)32767 D)-32768
考查点:不同类型变量值的赋值会强制类型转换。-1的二进制补码存放为16个1。 10. 若x、b、m、n均为int型变量,执行下面语句后b的值为____C___。(知识点3.10)
1
m=20;n=6;
x=(- -m= =n++)?- -m:++n; b=m++;
A)11 B)6 C)19 D)18 考查点:自增和自减运算符的前缀和后缀的区别。 11. 有以下程序: main()
{ int a=111,b=222; printf(“%d\\n”,a,b); }
该程序运行后的输出结果是___B____。(知识点4.5) A)错误信息 B)111 C)222 D)111,222 考查点:格式输出,按照%d的个数进行输出。 12. 以下程序的输出结果是__A_____。(知识点4.5) main()
{ int a=2,c=5;
printf(“a=%%%d,b=%%%d\\n”,a,c);}
A) a=%2,b=%5 B) a=2,b=5 C) a=%%%d,b=%%%d D) a=%%d,b=%%d
13. 对于浮点型变量f,能实现对f中的值在小数点后第三位进行四舍五入的表达式是____C___。(知识点3.8) A)f=(f*100+0.5)/100.0 B)f=(f*100+0.5)/100 C)f=(int)(f*100+0.5)/100.0 D)f=(f/100+0.5)*100
14. 设 a=5, b=6, c=7, d=8, m=2, n=2, 执行(m=a>b)&&(n=c>d) 后m,n的值为___C___。(知识点5.2) A) 2,2 B) 2,0 C) 0,2 D) 0,0 15. 语句printf(“%d\\n”,strlen(“asd\\n\\x12\\1\\\\”));的输出结果是___C___。(知识点7.3) A) 9 B) 11 C) 7 D) 8 16. 有以下程序: main( ) {
int y=1234; printf(“y=m”,y); printf(“y=%+06d\\n”,y); }
该程序的运行结果是__B____。(知识点4.5)
A) y= 1234y=001234 B) y= 1234y=+01234 C) y=1234y=+01234 D) y= 1234y=1234 17. 语句:printf(“%d”, !9);的输出结果是__A____。(知识点5.2) A) 0 B) 1 C) 有语法错误 ,不能执行 D) -9
18. 已有定义语句:int x=6,y=4,z=5;执行以下语句后,能正确表示x、y、z值的选项是___C___。(知识点5.3) if(x A) x=4,y=5,z=6 B) x=4,y=6,z=6 C) x=4,y=5,z=5 D) x=5,y=6,z=4 考查点:选择语句。可以通过判断z的值没有变,快速选择C。 19. 下列选项中属于正确的switch语句的是___C___。(知识点5.4) A)switch(1.0) B)swicth(1) { case 1.0 :printf(“A\\n”); { case 1 :printf(“A\\n”); case 2.0 :printf(“B\\n”); } case 2 :printf(“B\\n”);} C)switch((int)(1.0+2.5)) D)switch(“a”); 2 { case 1 :printf(“A\\n”); { case “a” :printf(“A\\n”); case 1+2 :printf(“B\\n”);} case “b” :printf(“B\\n”);} 考查知识点:switch语句用法。A项的错误在数据类型为double,不能做相等操作;B项的错误在switch拼写错误;D项的错误是switch后的不应该加分号。 20. 若k为int型变量,以下语句段执行后的输出结果是___D___。(知识点5.3) k=-3; if(k<=0) printf(“####”) else printf(“****”); A) #### B) **** C) ####**** D) 有语法错误 ,不能执行 21. 当a=2,b=3,c=4,d=5时, 执行下面一段程序后x的值为__D___。(知识点5.3) if(a>b) if(c if(a if(b>d)x=2 ; else x=3 ; else x=4 ; else x=5 ; A)2 B)3 C)4 D)5 考查点:if嵌套,else和if的配对问题。 22. 下列程序的运行结果是__D______。(知识点6.3) main() { int y=10; do { y- - ;} while(- -y); printf(“%d\\n”,y- -);} A)-1 B)1 C)8 D)0 考查点:自减和循环条件判断。本题中最后退出循环时y的值为0,输出时先输出y为0,再让其值减为-1。 23. 下列程序的运行结果是___C_____。(知识点6.5) # include int i ; for(i=1;i<=5;i++) { if(i %2)printf(“*”); else continue ; printf(“#”); } printf(“$\\n”); } A)*#*#$ B)#*#*#*$ C)*#*#*#$ D)***#$ 考查点:continue语句,结束本次循环,提前进入下一次循环。 24. 若x是int型变量,且有下面的程序片段: (知识点6.5) for(x=5;x<8;x++) printf((x%2)?(“**%d”):(“##%d\\n”),x); 该程序片段的输出结果是 __A_____。 A)**5##6 B)##5 C)##5**6##7 D)**5##6**7 **7 **6##7 3 25. 有以下程序: main() {int a=1,b=0; switch(a) { case 1:switch(b) { case 0:printf(“****”);break ; case 1:printf(“####”);break ; } case 2: printf(“$$$$”);break ; } 该程序的输出结果是___B_____。(知识点5.4) A)**** B)****$$$$ C)****####$$$$ D) ####$$$$ 考查点:switch语句以及嵌套使用。Case后如果没有break语句,则执行完此case后的语句则将继续执行后面的case语句。 26. 下列程序段的输出结果是__C_____。(知识点6.4) int x=3; do {printf(“=”,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____。(知识点6.5) A)x=2,y=0 B) x=1,y=0 C) x=1,y=1 D) x=0,y=0 考查点:循环条件表达式。注意y= 1为赋值语句,而不是比较运算符==。 28. 有以下程序段: int n=0,p; do { scanf(“%d”,&p);n++;} while(p!=12345&&n<3); 此处do-while循环的结束条件是__D___。(知识点6.4) A)p的值不等于12345并且n的值大于3 B)p的值等于12345并且n的值大于等于3 C)p的值不等于12345或者n的值小于3 D)p的值等于12345或n的值大于等于3 29. 在下述程序中,if (i>j) 语句共执行的次数是_D____。(知识点6.5) main() { int i=0,j=10,k=2,s=0; for(;;) { i+= k ; if(i>j) { printf(“%d”,s); break ; } s+=i ; } } A)4 B)7 C)5 D)6 考查点:break语句,只能跳出本层switch选择或者循环语句。共判断了6次,i的值依次为2,4,6,8,10,12。 30. 以下程序的功能是:按顺序读入10名学生和4门课程的成绩,计算出每位学生的平均分进行输出,但运行结 4
共分享92篇相关文档