2014年9月份考试C语言程序设计第二次作业一、单项选择题(本大题共100分,共 40 小题,每小题 2.5 分)1. 下面程序?fun3(int x)?{ static int a=3; a +=x; return(a);?}?main()?{ int k=2, m=1, n; n=fun3(k);?m=fun3(m);?printf("%d\n",n);?}?的输出是( ).A. 3B. 4C. 5D. 9
2. 下面的程序?main()?{?int x=3;?do{ printf("%d\n",x-=2); }while(!(--x) ); }( ).A. 输出的是1B. 输出的是1和-2C. 输出的是3和0D. 是死循环3. 以下叙述中正确的是( ).A. 预处理命令行必须位于源文件的开头B. 在源文件的一行上可以有多条预处理命令C. 宏名必须用大写字母表示D. 宏替换不占用程序的运行时间4. 以下叙述中正确的是( ).A. 局部变量说明为static存储类,其生存期将得到延长B. 全局变量说明为static存储类,其作用域将被扩大C. 任何存储类的变量在未赋初值时,其值都是不确定的D. 形参可以使用的存储类说明符与局部变量完全相同5. 下列语句中,符合C语言语法的赋值语句是( ).A. a=7+b+c=a+7B. a=7+b++=a+7C. a=7+b,b++,a+7D. a=7+b,c=a+76. 下面程序?main() {?int y=9;?for(;y>0;y--){?if(y%3==0) {?printf("%d",--y); continue; }?}?} 的输出是( ).A. 741B. 852C. 963D. 8754217. 下面程序?main() {?int x=32; printf("%d\n",x=x<<1);?} 的输出是( ).A. 100B. 160C. 120D. 64
8. 以下程序的输出结果是( ). #include main() { printf("%d\n",NULL); }A. 不确定的(因变量无定义)B. 0C. -1D. 1
9. 若k是int型变量,且有下面的程序片段 k=-3; if(k<=0) printf("####") else printf("&&&&"); 上面程序片段的输出结果是( ).A. ####B. &&&&C. ####&&&&D. 有语法错误,无输出结果10. 下面的程序 main() {?int x=3,y=0,z=0;?if(x=y+z)printf("* * * *");?else printf("####"); } ( ).A. 有语法错误不能通过编译B. 输出* * * *C. 可以通过编译, 但是不能通过连接, 因而不能运行D. 输出####11. +以下定义语句中正确的是( ).A. char a=''''A''''b=''''B''''B. float a=b=10.0C. int a=10,*b=&aD. float *a,b=&a
12. 设有如下一段程序?int *var,ab;?ab=100;?var=&ab;?ab=*var+10; 执行下面的程序段后,ab的值为( ).A. 120B. 110C. 100D. 90
13. 若x和y都是int型变量,x=100、y=200,且有下面的程序片段 printf("%d",(x,y) ); 上面程序片段的输出结果是( ).A. 200B. 100C. 100 200D. 输入格式符不够,输出不确定的值14. 若有以下说明和定义?union dt {int a;char b;double c;}?data; 以下叙述中错误的是( ).A. data的每个成员起始地址都相同B. 变量data所占的内存字节数与成员c所占字节数相等C. 程序段:data.a=5;printf("%f\n",data.c);输出结果为5.000000D. data可以作为函数的实参15. 设有如下枚举类型定义 enum language?{Basic=3,Assembly=6,Ada=100,COBOL,Fortran}枚举量Fortran的值为( ).A. 4B. 7C. 102D. 103
16. 以下叙述中正确的是( ).A. C语言的源程序不必通过编译就可以直接运行B. C语言中的每条可执行语句最终都将被转换成二进制的机器指令C. C语言程序