1 / 13
文档名称:

c语言期末测试题及答案参考.docx

格式:docx   大小:40KB   页数:13
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

c语言期末测试题及答案参考.docx

上传人:1130474171@qq.com 2026/1/30 文件大小:40 KB

下载得到文件列表

c语言期末测试题及答案参考.docx

相关文档

文档介绍

文档介绍:该【c语言期末测试题及答案参考 】是由【1130474171@qq.com】上传分享,文档一共【13】页,该文档可以免费在线阅读,需要了解更多关于【c语言期末测试题及答案参考 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。c语言期末测试题
第一部分 单选题(50题)
1、函数参数传递中,值传递适用于?( )
,无需修改实参
,需修改元素
,需修改实参
,需修改成员
【答案】:答案解析:值传递用于简单变量(不修改实参),地址传递用于需修改实参的场景,故选A。
2、以下if语句语法正确的是?( )
(x>0)printf("yes");
>0printf("yes");
(x>0);printf("yes");
(x>0){printf("yes")}
【答案】:答案解析:if后条件需加括号,B缺少括号,C分号导致语句结束,D缺少分号,故选A。
3、若inta=10,b=20,*p=&a,q=&b;执行p=q;后p的值是?( )


C.&a
D.&b
【答案】:答案解析:p=q使p指向b,*p=b=20,故选B。
4、若charstr[10]="abcde";则str[5]的值是?( )
A.'e'
B.'\0'


【答案】:答案解析:字符串自动在末尾加\0,str[5]是\0,故选B。
5、shortint类型的有符号取值范围是?( )
~65535
B.-32768~32767
C.-2147483648~2147483647

【答案】:答案解析:16位shortint有符号取值标准为-32768~32767,无符号为0~65535,故选B。
6、以下循环语句中,语法正确的是?( )
(i<5){printf("%d",i);i++;}
(i<5)printf("%d",i);i++;
{printf("%d",i);i++;}while(i<5)
(i=0;i<5)printf("%d",i);
【答案】:答案解析:B中i++在循环体外(循环无限),C缺少分号,D缺少更新表达式,A语法正确,故选A。
7、若int*p=(int)malloc(sizeof(int));则p的值是?( )




【答案】:答案解析:malloc分配的内存未初始化,值为随机值,故选B。
8、若inta=3,b=4;则表达式ab++的值是?( )




【答案】:答案解析:b++是后置自增,先参与运算(ab=3*4=12),再自增(b变为5),故选A。
9、若inta[5]={1,2,3,4,5};则*(a+4)的值是?( )




【答案】:答案解析:a+4是第五个元素地址,*(a+4)=a[4]=5,故选B。
10、以下关于二维数组的说法正确的是?( )




【答案】:答案解析:二维数组本质是数组的数组,内存按行存储,可作为函数参数,长度需常量,故选A。
11、以下switch语句中,break语句的作用是?( )




【答案】:答案解析:break在switch中用于跳出整个switch语句,避免case穿透,故选B。
12、以下数组定义中,长度为5的是?( )
[5];
[]={1,2,3,4,5};
[]="abcd";

【答案】:答案解析:A长度5,B长度5,C字符串"abcd"含\0共5个字符,故选D。
13、以下循环中,无限循环的是?( )
(i=0;i<5;i++)
(i=5)
{i++;}while(i<5);
(i=5;i>0;i--)
【答案】:答案解析:while(i=5)是赋值(i=5,非0,条件恒真),无限循环;A执行5次,C(i初始0)执行5次,D执行5次,故选B。
14、函数调用时,实参的类型必须与形参的类型?( )

(可自动转换)


【答案】:答案解析:实参和形参类型可兼容(如int→float),编译器自动转换,不兼容则编译错误,故选B。
15、以下关于数组的说法正确的是?( )




【答案】:答案解析:数组下标从0开始,数组名是常量(不可赋值),元素类型必须相同,长度定义后固定,故选C。
16、以下数组定义中,可省略数组长度的是?( )
[5];
[]={1,2,3};
[5]={1,2,3};
[][3];
【答案】:答案解析:初始化时可省略长度(编译器自动计算),D二维数组第二维不能省略,故选B。
17、定义整型变量x、y并均赋值10的语句是?( )
=y=10;
=10,y=10;
=10;y=10;
=10;inty=10;
【答案】:答案解析:同一行定义多个变量用逗号分隔,A不能连续赋值,C缺少int,D是两行定义,故选B。
18、若intx=9;执行以下代码后输出结果是?( )if(x>10)printf("A");elseif(x>8)printf("B");elseif(x>6)printf("C");elseprintf("D");



D.
【答案】:答案解析:x=9>8,执行第二个分支,输出B,故选B。
19、函数定义的格式是?( )
(参数列表){函数体}
(返回类型,参数列表){函数体}
(参数列表)返回类型{函数体}
{参数列表,函数体}
【答案】:答案解析:函数定义标准格式为“返回类型函数名(参数列表){函数体}”,故选A。
20、若inta=3;执行a+=aa;后a的值是?( )




【答案】:答案解析:优先级先乘后加,a+=aa等价于a=a+(aa)=3+(33)=12,故选A。
21、若inta=3,b=5;执行以下代码后输出结果是?( )if(a>b)printf("A");elseprintf("B");




【答案】:答案解析:a=3<b=5,条件为假,执行else分支,输出B,故选B。
22、若inta=1,b=2;则表达式(a==b)的结果是?( )




【答案】:答案解析:==是等于判断,a==b为假,C语言中假用0表示,故选B。
23、若charstr="hello";则str[1]的值是?( )
A.'h'
B.'e'
C.'l'
D.'\0'
【答案】:答案解析:str是字符串首地址,str[1]等价于(str+1),值为'e',故选B。
24、函数定义在main函数之后时,必须先?( )




【答案】:答案解析:main函数调用其他函数时,若函数定义在main之后,需先声明(否则编译器找不到函数),故选B。
25、数组作为函数参数时,函数中修改数组元素会影响主调函数中的数组吗?( )
(指针传递)
(值传递)


【答案】:答案解析:数组名传参是指针传递,函数中通过指针修改元素会同步到主调函数数组,故选A。
26、若inta=10,*p=&a,q=p;则q的值是?( )

B.&a


【答案】:答案解析:q=p使q指向a,*q=10,故选A。
27、数组作为函数参数时,函数形参不能是?( )
[]
*a
[5]

【答案】:答案解析:D中inta是普通变量,不能接收数组名(地址),A、B、C均可作为数组形参,故选D。
28、若inta[4]={1,2,3,4};则a[3]的值是?( )




【答案】:答案解析:a[3]是第四个元素,值为4,故选B。
29、数组元素的下标从______开始?( )


C.-1

【答案】:答案解析:C语言数组下标从0开始,是固定规则,故选A。
30、若intx=6;执行以下代码后输出结果是?( )if(x<5){printf("A");}elseif(x<8){printf("B");}else{printf("C");}




【答案】:答案解析:x=6<8,执行第二个分支,输出B,故选B。
31、若inti=0,s=0;执行do{s+=i;i++;}while(i<5);后s的值是?( )




【答案】:答案解析:do-while累加0+1+2+3+4=10,s=10,故选A。
32、若intx=10;则表达式x%3的结果是?( )




【答案】:答案解析:%是取余运算符,10除以3商3余1,故选A。
33、以下定义指向二维数组的指针正确的是?( )
[2][3],(*p)[3]=a;
[2][3],*p=a;
[2][3],p=a[0];
[2][3],*p=&a;
【答案】:答案解析:A是指向3列数组的指针(匹配二维数组a的行),B、C、D类型不匹配,故选A。
34、逻辑表达式!0的结果是?( )




【答案】:答案解析:C语言中非0为真,!是逻辑非,!0(假)结果为1(真),故选B。
35、以下转义字符表示换行的是?( )
A.\t
B.\n
C.\
D.\r
【答案】:答案解析:\t是制表符,\n是换行符,\是反斜杠,\r是回车符,故选B。
36、以下字符串常量定义正确的是?( )
[]="C";
[1]='C';
[]={'C'};
[2]={'C','\0'};
【答案】:答案解析:A用双引号定义字符串(自动加\0),B单引号用于字符常量,C无\0,D长度2正确但A更简洁,故选A。
37、若inta[5];则数组a的元素个数是?( )




【答案】:答案解析:数组a[5]定义5个元素(下标0-4),故选B。
38、函数参数的默认值在______指定?( )




【答案】:答案解析:标准C语言不支持函数参数默认值(C++支持),故选D。
39、若inta=3;执行if(++a>3)printf("A");elseprintf("B");输出结果是?( )




【答案】:答案解析:++a是前置自增,a变为4>3,条件为真,输出A,故选A。
40、break语句在循环中的作用是?( )
,继续下一次



【答案】:答案解析:break在循环中用于终止整个循环(跳出循环体),continue是跳过本次循环,故选B。