文档介绍:该【c语言编程期末测试题a4版 】是由【小屁孩】上传分享,文档一共【13】页,该文档可以免费在线阅读,需要了解更多关于【c语言编程期末测试题a4版 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。c语言编程期末测试题
第一部分 单选题(50题)
1、以下哪个函数用于读取字符?( )
()
()
()
()
【答案】:答案解析:getchar()读取单个字符,puts()输出字符串,gets()读取字符串(已淘汰),故选C。
2、若charstr="abcde";则(str+4)的值是?( )
A.'d'
B.'e'
C.'\0'
【答案】:答案解析:str+4指向第5个字符,值为'e',故选B。
3、以下定义函数指针正确的是?( )
(*fp)(int);
*fp(int);
(int);
(fp)[];
【答案】:答案解析:A是指向int返回值、int参数的函数指针,B是返回int的函数,C是普通函数,D是指向数组的指针,故选A。
4、以下函数递归调用的例子是?( )
【答案】:答案解析:阶乘常用递归实现(n!=n*(n-1)!),B、C、D用循环更高效,故选A。
5、以下关于main函数的说法正确的是?( )
【答案】:答案解析:main函数可声明为void(无返回值),可带argc/argv参数,是程序唯一入口,故选D。
6、以下函数参数传递方式中,能修改实参值的是?( )
【答案】:答案解析:值传递修改的是形参(副本),不影响实参;地址传递通过指针修改实参值,故选B。
7、数组元素的下标从______开始?( )
C.-1
【答案】:答案解析:C语言数组下标从0开始,是固定规则,故选A。
8、若inta[5]={10,20,30,40,50},p=a+3;则p的值是?( )
【答案】:答案解析:a+3指向a[3],*p=40,故选B。
9、若inta=4,b=6;则表达式a<b?a+b:a-b的结果是?( )
B.-2
【答案】:答案解析:a<b为真,取a+b=4+6=10,故选A。
10、以下数组定义错误的是?( )
[0];
[5];
[]={1,2,3};
[5]={1,2,3};
【答案】:答案解析:数组长度不能为0,编译报错,其余正确,故选A。
11、若inta=2;执行a*=a+3;后a的值是?( )
【答案】:答案解析:a*=a+3等价于a=a*(a+3)=2*(2+3)=10,故选B。
12、转义字符\的作用是?( )
【答案】:答案解析:\用于表示字符反斜杠(\),避免与转义字符冲突,故选A。
13、若inta[3][3]={{1},{2,3},{4,5,6}};则a[1][0]的值是?( )
【答案】:答案解析:a[1][0]是第二行第一列,值为2,故选A。
14、以下关于指针数组的定义正确的是?( )
*arr[5];
(*arr)[5];
[5];
[];
【答案】:答案解析:A是指针数组(5个int指针),B是指向数组的指针,C是普通数组,D缺少长度,故选A。
15、以下switch语句中,default的作用是?( )
【答案】:答案解析:default用于匹配所有case未覆盖的情况,可选且位置灵活,故选B。
16、以下指针运算正确的是?( )
=10,*p=&a;p++;
=10,*p=&a;p=a;
=10,*p=&a;p=&5;
=10,*p=&a;*p=&a;
【答案】:答案解析:A指针p自增(指向a的下一个地址),B不能将int值赋给指针,C不能取常量地址,D不能将地址赋给int变量,故选A。
17、函数中局部变量的作用域是?( )
【答案】:答案解析:局部变量定义在函数内,仅在函数内部有效,故选B。
18、若inti=1;执行while(i<=3){printf("%d",i);i++;}输出结果是?( )
【答案】:答案解析:i初始1,满足i<=3,执行3次,输出123,i最终4,循环结束,故选A。
19、以下for循环中,用于计算1到5的平方和的是?( )
=0;for(i=1;i<=5;i++)s+=ii;
=0;for(i=1;i<=5;i++)s+=i2;
=1;for(i=1;i<=5;i++)s*=i;
=0;for(i=1;i<=5;i++)s+=i+i;
【答案】:答案解析:平方和是1²+2²+3²+4²+5²=1+4+9+16+25=55,A的逻辑正确,故选A。
20、以下哪个转义字符表示制表符?( )
A.\n
B.\t
C.\b
D.\r
【答案】:答案解析:\t是制表符(Tab),\n换行,\b退格,\r回车,故选B。
21、指针的核心优势是?( )
,灵活操作内存
,减少内存开销
【答案】:答案解析:指针的核心优势包括间接访问、高效、动态内存、回调等,故选D。
22、以下数组定义错误的是?( )
[5];
[5]={1,2,3,4,5};
[5]={1,2,3,4,5,6};
[]={1,2,3,4,5};
【答案】:答案解析:C初始化元素超5个,编译报错,其余正确,故选C。
23、continue语句在循环中的作用是?( )
,继续下一次
【答案】:答案解析:continue跳过本次循环剩余代码,直接进入下一次循环条件判断,故选B。
24、下列字符串常量定义正确的是?( )
A.'abc'
B."abc"
D."a""b"
【答案】:答案解析:字符串常量用双引号包裹,单引号用于字符常量,C是标识符,D语法错误,故选B。
25、以下哪个表达式可访问数组a的第i个元素(i从1开始)?( )
[i]
[i-1]
C.*(a+i)
D.*(a+i-1)
【答案】:答案解析:数组下标从0开始,第i个元素对应下标i-1,a[i-1]正确,C、D是指针访问(对应下标i),故选B。
26、若inti=0;执行do{printf("%d",i);i++;}while(i<0);输出结果是?( )
【答案】:答案解析:do-while先执行一次(输出0,i=1),判断i<0为假,循环结束,故选A。
27、若inti=0;执行while(i<5){printf("%d",i);i++;if(i==3)break;}输出结果是?( )
【答案】:答案解析:i=3时break,输出012,故选A。
28、若inta[3][3]={{1,2,3},{4,5,6},{7,8,9}},(p)[3]=a;则((p+1)+2)的值是?( )
【答案】:答案解析:p是指向3列数组的指针,p+1指向第二行,(p+1)+2指向第二行第三列,值为6,故选B。
29、若inta=2,b=4;执行if(a==b)a=0;elseb=0;后a和b的值分别是?( )
,4
,0
,0
,4
【答案】:答案解析:a==b为假,执行else,b=0,a保持2,故选B。
30、以下for循环的语法错误是?( )
(inti=0;i<5;i++)printf("%d",i);
(i=0;i<5;i++)printf("%d",i);
(;i<5;i++)printf("%d",i);
(i=0;;i++)printf("%d",i);
【答案】:答案解析:B中i未定义(需先声明inti;),A(C99标准允许循环内定义)、C(初始化省略)、D(条件省略,无限循环)语法均正确,故选B。
31、逻辑表达式3&&0的结果是?( )
【答案】:答案解析:逻辑与&&只要有一个operand为0则结果为0,3为真,0为假,故选A。
32、若inta=3;执行if(++a==4)printf("A");elseprintf("B");输出结果是?( )
【答案】:答案解析:++a使a=4,条件为真,输出A,故选A。
33、若charc='A';执行c=c+32后,c的值是?( )
A.'a'
B.'B'
【答案】:答案解析:大写字母ASCII码比对应小写字母小32,'A'(65)+32='a'(97),故选A。
34、以下指针运算错误的是?( )
=5,*p=&a;p++;
=5,*p=&a;*p++;
=5,*p=&a;p=&a+1;
=5,*p=&a;p=p+2;
【答案】:答案解析:&a是地址常量,不能进行算术运算(&a+1错误),A、B、D均正确,故选C。
35、若inta=10,*p=&a,q=p;则q的值是?( )
B.&a
【答案】:答案解析:q=p使q指向a,*q=10,故选A。
36、数组作为函数参数时,函数形参不能是?( )
[]
*a
[5]
【答案】:答案解析:D中inta是普通变量,不能接收数组名(地址),A、B、C均可作为数组形参,故选D。
37、C语言中基本数据类型不包括以下哪项?( )
【答案】:答案解析:基本数据类型为char、int、float、double,array是数组(构造类型),故选D。
38、C语言程序的入口函数是?( )
()
()
()
【答案】:答案解析:所有C程序从main()函数开始执行,必须有且仅有一个,故选A。
39、函数的形参在______时分配内存?( )
【答案】:答案解析:形参是局部变量,函数调用时分配内存,调用结束释放,故选C。
40、表示“x大于5且小于10”的合法C语言表达式是?( )
<x<10
>5||x<10
>5&&x<10
>5&x<10
【答案】:答案解析:逻辑与用&&,逻辑或用||,A是连续比较语法错误,&是按位与,故选C。