期末c语言试题有答案_第1页
期末c语言试题有答案_第2页
期末c语言试题有答案_第3页
期末c语言试题有答案_第4页
期末c语言试题有答案_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

期末c语言试题第一部分单选题(50题)1、函数嵌套调用是指?()

A.函数调用自身

B.函数调用另一个函数

C.函数定义中包含另一个函数

D.多个函数互相调用

【答案】:答案解析:嵌套调用是函数A调用函数B,函数B调用函数C,递归是调用自身,故选B。2、若inti=0;执行while(i<5){i++;if(i==3)continue;printf("%d",i);}输出结果是?()

A.1245

B.12345

C.01245

D.无输出

【答案】:答案解析:i=3时continue,跳过printf,输出1、2、4、5,故选A。3、若inta=3;执行a+=aa;后a的值是?()

A.12

B.6

C.9

D.15

【答案】:答案解析:优先级先乘后加,a+=aa等价于a=a+(aa)=3+(33)=12,故选A。4、若inti=0,s=0;执行for(i=0;i<4;i++)s+=i;后s的值是?()

A.6

B.10

C.4

D.0

【答案】:答案解析:累加0+1+2+3=6,s=6,故选A。5、若intx=1;执行switch(x){case1:printf("1");break;case1:printf("2");break;}会出现什么情况?()

A.输出1

B.输出2

C.编译错误

D.运行错误

【答案】:答案解析:case后常量不能重复,编译时会报错,故选C。6、若inti=0;执行for(;i<5;){printf("%d",i);i++;}输出结果是?()

A.01234

B.12345

C.无限循环

D.无输出

【答案】:答案解析:for循环初始化和条件省略,循环体中i自增,执行5次,输出01234,故选A。7、若inta[3][3]={{1,2,3},{4,5,6},{7,8,9}},(p)[3]=a;则((p+1)+2)的值是?()

A.5

B.6

C.8

D.9

【答案】:答案解析:p是指向3列数组的指针,p+1指向第二行,(p+1)+2指向第二行第三列,值为6,故选B。8、以下关于二维数组的说法正确的是?()

A.二维数组是数组的数组

B.二维数组元素在内存中按列存储

C.二维数组长度必须是常量

D.二维数组不能作为函数参数

【答案】:答案解析:二维数组本质是数组的数组,内存按行存储,可作为函数参数,长度需常量,故选A。9、C语言程序编译的正确顺序是?()

A.预处理→编译→汇编→链接

B.编译→预处理→汇编→链接

C.预处理→汇编→编译→链接

D.链接→编译→汇编→预处理

【答案】:答案解析:C程序编译流程为预处理(处理#命令)→编译(生成汇编代码)→汇编(生成目标文件)→链接(生成可执行文件),故选A。10、以下函数调用时,实参为常量的是?()

A.fun(5);

B.fun(a);

C.fun(&a);

D.fun("abc");

【答案】:答案解析:A中5是常量,B是变量,C是变量地址,D是字符串常量,题目问“常量”,A正确,故选A。11、do-while循环的特点是?()

A.先判断条件,后执行循环体

B.先执行循环体,后判断条件

C.条件不满足时也不执行循环体

D.只能执行一次

【答案】:答案解析:do-while是“先执行后判断”,至少执行一次循环体,for和while是“先判断后执行”,故选B。12、以下哪个运算符的优先级最高?()

A.+

B.*

C.=

D.==

【答案】:答案解析:算术运算符中*(乘)优先级高于+(加),赋值(=)和关系(==)优先级更低,故选B。13、以下哪个for循环是无限循环?()

A.for(i=0;i<5;i++)

B.for(;;)

C.for(i=0;i<5;i--);

D.for(i=5;i>0;i--)

【答案】:答案解析:for循环三个表达式均省略时,条件恒为真,是无限循环,A执行5次,C、D初始条件不满足(执行0次),故选B。14、以下关于函数参数的说法正确的是?()

A.形参是函数定义时的变量

B.实参是函数调用时的变量/常量

C.形参和实参类型需匹配

D.以上都正确

【答案】:答案解析:A、B、C均是函数参数的基本规则,故选D。15、二维数组a[3][4]的元素个数是?()

A.7

B.12

C.3

D.4

【答案】:答案解析:3行4列,共3×4=12个元素,故选B。16、若charstr[10]="abcde";则str[5]的值是?()

A.'e'

B.'\0'

C.随机值

D.无定义

【答案】:答案解析:字符串自动在末尾加\0,str[5]是\0,故选B。17、若inta[4]={1,2,3,4},p=a;执行p++后,*p的值是?()

A.1

B.2

C.3

D.4

【答案】:答案解析:*p++先解引用(值为1),再p自增(指向a[1]),*p=2,故选B。18、以下关于指针数组和数组指针的说法正确的是?()

A.指针数组是数组,元素为指针

B.数组指针是指针,指向数组

C.int*arr[5]是指针数组,int(*arr)[5]是数组指针

D.以上都正确

【答案】:答案解析:A、B、C均准确区分了指针数组和数组指针,故选D。19、若intx=6;执行if(x<5)printf("A");else{printf("B");printf("C");}输出结果是?()

A.A

B.BC

C.ABC

D.无输出

【答案】:答案解析:x=6不满足if,执行else代码块,输出BC,故选B。20、continue语句在循环中的作用是?()

A.终止整个循环

B.跳过本次循环剩余部分,继续下一次

C.暂停循环

D.无作用

【答案】:答案解析:continue跳过本次循环剩余代码,直接进入下一次循环条件判断,故选B。21、C语言程序的入口函数是?()

A.main()

B.printf()

C.scanf()

D.main

【答案】:答案解析:所有C程序从main()函数开始执行,必须有且仅有一个,故选A。22、以下循环中,循环次数为3次的是?()

A.for(i=1;i<=3;i++)

B.while(i=3)

C.do{i++;}while(i<3);

D.for(i=5;i>0;i--)

【答案】:答案解析:A执行3次(1-3),B是无限循环,C(i初始0)执行3次,D执行5次,题目问“3次”,A明确正确,故选A。23、预处理命令#definePI3.14159的作用是?()

A.定义变量

B.定义常量

C.函数声明

D.包含头文件

【答案】:答案解析:#define是宏定义,用于定义常量(无分号,直接替换),故选B。24、以下if语句中,条件表达式正确的是?()

A.if(x=5)printf("yes");

B.if(x==5)printf("yes");

C.if(x=5;)printf("yes");

D.if(x==5;)printf("yes");

【答案】:答案解析:if条件需是判断表达式(==),A是赋值,C、D多加分号,故选B。25、函数定义和函数声明的区别是?()

A.定义包含函数体,声明不包含

B.声明包含函数体,定义不包含

C.定义和声明无区别

D.定义在程序开头,声明在结尾

【答案】:答案解析:函数定义是完整实现(含函数体),声明是告诉编译器函数名、参数、返回类型(不含函数体),故选A。26、以下数组定义中,长度为5的是?()

A.inta[5];

B.inta[]={1,2,3,4,5};

C.charstr[]="abcd";

D.以上都是

【答案】:答案解析:A长度5,B长度5,C字符串"abcd"含\0共5个字符,故选D。27、数组作为函数参数时,函数中修改数组元素会影响主调函数中的数组吗?()

A.会(指针传递)

B.不会(值传递)

C.取决于数组长度

D.不确定

【答案】:答案解析:数组名传参是指针传递,函数中通过指针修改元素会同步到主调函数数组,故选A。28、若intx=5;执行以下代码后输出结果是?()if(x>10)printf("A");elseif(x>6)printf("B");elseif(x>3)printf("C");elseprintf("D");

A.A

B.B

C.C

D.

【答案】:答案解析:x=5>3,执行第三个分支,输出C,故选C。29、若inta=10,p=&a;则p的值是?()

A.10

B.&a

C.p

D.无定义

【答案】:答案解析:*p是解引用,->用于结构体指针访问成员,.用于结构体变量访问成员,故选B。30、若intx=3,y=5;则表达式x>y?x:y的结果是?()

A.3

B.5

C.true

D.false

【答案】:答案解析:三元运算符格式“条件?值1:值2”,x>y为假,取y=5,故选B。31、若inti=0;执行while(i<5){if(i==2)break;printf("%d",i);i++;}输出结果是?()

A.01

B.012

C.01234

D.无限循环

【答案】:答案解析:i=2时执行break,终止循环,输出01,故选A。32、若floatx=3.14;则表达式(int)x的结果是?()

A.3

B.3.14

C.4

D.0

【答案】:答案解析:强制转换为int取整数部分,3.14→3,故选A。33、若intx=9;执行以下代码后输出结果是?()if(x>10)printf("A");elseif(x>8)printf("B");elseif(x>6)printf("C");elseprintf("D");

A.A

B.B

C.C

D.

【答案】:答案解析:x=9>8,执行第二个分支,输出B,故选B。34、C语言中基本数据类型不包括以下哪项?()

A.char

B.int

C.float

D.array

【答案】:答案解析:基本数据类型为char、int、float、double,array是数组(构造类型),故选D。35、若intx=6;执行以下代码后输出结果是?()if(x<5){printf("A");}elseif(x<8){printf("B");}else{printf("C");}

A.A

B.B

C.C

D.无输出

【答案】:答案解析:x=6<8,执行第二个分支,输出B,故选B。36、以下循环语句中,语法正确的是?()

A.while(i<5){printf("%d",i);i++;}

B.while(i<5)printf("%d",i);i++;

C.do{printf("%d",i);i++;}while(i<5)

D.for(i=0;i<5)printf("%d",i);

【答案】:答案解析:B中i++在循环体外(循环无限),C缺少分号,D缺少更新表达式,A语法正确,故选A。37、若inti=1;执行while(i<5){printf("%d",i);i+=2;}输出结果是?()

A.13

B.135

C.1234

D.无输出

【答案】:答案解析:i初始1,每次加2,执行2次(1、3),输出13,故选A。38、若inti=0;执行while(1){if(i==3)break;printf("%d",i);i++;}输出结果是?()

A.012

B.0123

C.无限循环

D.无输出

【答案】:答案解析:while(1)是无限循环,i=3时break,输出012,故选A。39、数组名的本质是?()

A.数组第一个元素的地址

B.数组最后一个元素的地址

C.数组元素的个数

D.数组的大小

【答案】:答案解析:数组名是首元素地址(常量,不可修改),故选A。40、C语言中,语句结束的标志是?()

A.逗号

B.分号

C.冒号

D.句号

【答案】:答案解析:C语言单条语句以分号(;)结尾,复合语句用{}包裹,故选B。41、逻辑表达式!0的结果是?()

A.0

B.1

C.真

D.假

【答案】:答案解析:C语言中非0为真,!是逻辑非,!0(假)结果为1(真),故选B。42、以下关于数组的说法错误的是?()

A.数组元素必须是同一类型

B.数组长度必须是常量

C.数组可在函数内定义

D.数组可整体赋值

【答案】:答案解析:数组不能用“=”整体赋值,需逐个元素或循环赋值,A、B、C正确,故选D。43、以下转义字符表示换行的是?()

A.\t

B.\n

C.\

D.\r

【答案】:答案解析:\t是制表符,\n是换行符,\是反斜杠,\r是回车符,故选B。44、以下定义指向二维数组的指针正确的是?()

A.inta[2][3],(*p)[3]=a;

B.inta[2][3],*p=a;

C.inta[2][3],p=a[0];

D.inta[2][3],*p=&a;

【答案】:答案解析:A是指向3列数组的指针(匹配二维数组a的行),B、C、D类型不匹配,故选A。45、转义字符\0的作用是?()

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论