试卷总分:100 得分:100 一、 单选题 (共 35 道试题,共 70 分) 1. 以下错误的描述为( )。 A.在函数之外定义的变量称为外部变量,外部变量是全局变量 B.在一个函数中既可以使用本函数中的局部变量,又可以使用外部变量 C.外部变量定义和外部变量声明的含义相同 D.若在同一个源文件中,外部变量与局部变量同名,则在局部变量的作用范围内,外部变量不起作用 正确答案:C 2. 有以下程序 #include main() { int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y) { case 0:a++; break; case 1:b++; break; } case 2:a++; b++; break; case 3:a++; b++; } printf("a=%d,b=%d\n",a,b); } A.a=1,b=0 B.a=2,b=2 C.a=1,b=1 D.a=2,b=1 3. 以下叙述中错误的是( )。 A.计算机不能直接执行用C语言编写的源程序 B.C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件 C.后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件 D.后缀为.obj和.exe的二进制文件都可以直接运行 4. 若二维数组a由m列,则在a[i][j]之前的元素个数为( )。 A.j*m+i B.i*m+j C.i*m+j-1 D.i*m+j+1 5. 有以下程序 main() { int i,s=1; for (i=1;i<50;i++) if(!(i%5)&&!(i%3)) s+=i; printf("%d\n",s); A.409 B.277 C.1 D.91 6. 若a为int类型,且其值为5,则执行表达式a+=a-=a*a后,a的值是( )。 A.-5 B.-40 C.-15 D.不确定 7. 设有 int x=8; 则表达式 (++x*1/3) 的值是( )。 A.2 B.3 C.2.6 D.0 8. 若变量已正确定义,有以下程序段 i=0; do printf("%d,",i);while(i++); printf("%d\n",i); 其输出结果是( )。 A.0,0 B.0,1 C.1,1 D.程序进入无限循环 9. 以下定义语句中正确的是( )。 A.int a=b=0; B.char A=65+1,b=′b′; C.float a=1,*b=&a,*c=&b; D.double a=0.0;b=1.1; 10. 以下叙述中错误的是( )。 A.改变函数形参的值,不会改变对应实参的值 B.函数可以返回地址值 C.可以给指针变量赋一个整数作为地址值 D.当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL 11. 以下程序的输出结果是( )。 main() { char c='z'; printf("%c",c-22); A.d B.e C.c D.f 12. C语言规定,在一个源程序中,main函数的位置( )。 A.必须在最开始 B.必须在系统调用的库函数的后面 C.可以任意 D.必须在最后 13. 若int i, x; 则for(i=x=0; i<9&&x!=5; i++, x++)控制的循环体将执行( )次。 A.10 B.9 C.5 D.6 14. 以下描述错误的是( )。 A.不同函数中可以使用相同的变量名 B.形式参数是局部变量 C.一个函数内部定义的变量只能在本函数范围有效 D.在一个函数内部的复合语句中定义的变量可以在本函数范围内有效 15. 数组定义char a[10]={'a','b','c';包括了( )。个元素。 A.3 B.9 C.4 D.10 16. 运行下面程序: main() { int n1,n2; scanf("%d",&n2); while(n2!=0) \ n1=n2%10; n2=n2/10; } printf("%d",n1); }若从键盘上输入298↙ ,则输出结果为( )。 A.2 B.29 C.8 D.0 17. ( )是构成C语言程序的基本单位。 A.函数 B.过程 C.子程序 D.子例程 18. 以下有关宏替换叙述中,错误的是( )。 A.宏替换不占用运行时间 B.宏无类型名 C.宏替换只是字符替换 D.宏名必须用大写字母表示 19. 已知static int a[2][3]={2,4,6,8,10,12; 正确表示数组元素地址的是( )。 A.*(a+1) B.*(a[1]+2) C.a[1]+3 D.a[0][0] 20. 设x、y、t均为int型变量,则执行语句:x=y=2;t=++x||++y;后,y的值为( )。 A.不确定 B.2 C.3 D.1 21. 在C语言中,变量的隐含存储类别是( )。 A.auto B.static C.extern D.无存储类别 22. 不合法的常量是( )。 A.'\2' B.'""'(外面是单引号) C." " D."\483" 23. 设有定义:char p[]={′1′,′2′,′3′,*q=p;,以下不能计算出一个char型数据所占字节数的表达式是( )。 A.sizeof(p) B.sizeof(char) C.sizeof(*q) D.sizeof(p[0]) 24. 逻辑运算符两侧运算对象的数据类型( )。 A.只能是0或1 B.只能是0或非0正数 C.只能是整型或字符型数据 D.可以是任何类型的数据 25. 对for(表达式1; ; 表达式3)可理解为( )。 A.for(表达式1; 0;表达式3) B.for(表达式1: 1 ;表达式3) C.for(表达式1; 表达式1; 表达式3) D.for(表达式1; 表达式2; 表达式3) 26. 当c的值不为0时,在下列选项中能够将c的值赋给变量a、b的是( )。 A.c=b=a; B.(a=c)︱︱(b=c); C.(a=c)&&(b=c); D.a=c=b; 27. 已知x=43,ch='A',y=0;则表达式x=y&& ch<'B'&&!y的值是( )。 A.0 B.语法错 C.1 D."假" 28. 以下描述中正确的是( )。 A.由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句 B.do-while循环由do开始,用while结束,在while(表达式)后面不能写分号 C.在do-while循环体中,是先执行一次循环,再进行判断 D.do-while循环中,根据情况可以省略while 29. 在C语言中,逻辑值"真"是用( )表示的。 A.预定义为真值的宏 B.非零数 C.正数 D.非零整数 30. 以下存储类型只有在使用时才为该类型变量分配内存的是( )。 A.auto和static B.auto和register C.register和static D.static和extern 31. 在一个C源程序文件中,若要定义一个只允许在该源文件中所有函数使用的变量,则该变量需要的存储类别是( )。 A.extern B.register C.auto D.static 32. 请选出可用作C语言用户标识符的是( )。 A.void,define,WORD B.a3_b3,_123,IF C.FOR,--abc,Case D.2a,Do,Sizeof 33. 下面程序的输出结果是( )。 main() { int x=10; x+=(x=8); printf("%d\n",x); } A.10 B.8 C.18 D.16 34. 设a=5, b=6, c=7, d=8, m=2,n=2, 执行(m=a>b)&&(n=c>b)后n的值为( )。 A.1 B.2 C.3 D.4 35. 当顺利执行了文件关闭操作时,fclose函数的返回值是( )。 A.0 B.True C.-1 D.1 二、 判断题 (共 15 道试题,共 30 分) 1. 一个变量的地址就称为该变量的"指针"。 A.错误 B.正确 2. 数组的下标可以float数据类型。 A.错误 B.正确 3. 若有说明int c;则while(c=getchar());是正确的C语句。 A.错误 B.正确 4. 函数的实参和与其对应的形参各占用独立的存储单元。 A.错误 B.正确 5. 在c程序中,语句之间必须要用分号";"来分隔。 A.错误 B.正确 6. 语句 y=*p++; 和 y=(*p)++; 是等价的。 A.错误 B.正确 7. 若变量a和x均为double类型,则代数式x^2-e^5转化为正确的C语言表达式为:x*x-exp(5)。 A.错误 B.正确 8. for循环只能用于循环次数已经确定的情况。 A.错误 B.正确 9. 函数的定义可以嵌套,但函数的调用不可以嵌套。 A.错误 B.正确 10. 在C语言中整数只能表示为十进制数的形式。 A.错误 B.正确 11.题型:判断题 A.错误 B.正确 12. 用typedef可以定义各种类型名,但不能用来定义变量。 A.错误 B.正确 13. 已有定义int(*p)();指针p可以指向函数的入口地址。 A.错误 B.正确 14. 一个可执行的C语言程序总是从main()函数的入口地址处开始执行。 A.错误 B.正确 15. 若i为某函数func之内说明的变量,则当func执行完后,i值无定义。 A.错误 B.正确 |
|
来自: openwangjiao > 《西工大资料》