- 0
- 0
- 约6.33千字
- 约 13页
- 2026-01-27 发布于河南
- 举报
期末c语言考试题
第一部分单选题(50题)
1、以下哪个表达式可访问数组a的第i个元素(i从1开始)?()
A.a[i]
B.a[i-1]
C.*(a+i)
D.*(a+i-1)
【答案】:答案解析:数组下标从0开始,第i个元素对应下标i-1,a[i-1]正确,C、D是指针访问(对应下标i),故选B。
2、C语言中基本数据类型不包括以下哪项?()
A.char
B.int
C.float
D.array
【答案】:答案解析:基本数据类型为char、int、float、double,array是数组(构造类型),故选D。
3、若intx=10,y=20;则表达式x!=y的结果是?()
A.0
B.1
C.10
D.20
【答案】:答案解析:!=是不等于判断,x!=y为真,C语言中真用1表示,故选B。
4、若inta[4]={10,20,30,40};则*(a+2)的值是?()
A.20
B.30
C.40
D.10
【答案】:答案解析:a+2是第三个元素地址,*(a+2)=a[2]=30,故选B。
5、若charstr=hello;则str[1]的值是?()
A.h
B.e
C.l
D.\0
【答案】:答案解析:str是字符串首地址,str[1]等价于(str+1),值为e,故选B。
6、函数返回值的类型由______决定?()
A.return语句中的表达式类型
B.函数定义时的返回类型
C.函数调用时的参数类型
D.编译器默认类型
【答案】:答案解析:函数返回类型在定义时指定,return表达式类型需与返回类型匹配(不匹配则强制转换),故选B。
7、若inta=3;执行a+=aa;后a的值是?()
A.12
B.6
C.9
D.15
【答案】:答案解析:优先级先乘后加,a+=aa等价于a=a+(aa)=3+(33)=12,故选A。
8、若inti=0;执行for(;i5;){printf(%d,i);i++;}输出结果是?()
A.01234
B.12345
C.无限循环
D.无输出
【答案】:答案解析:for循环初始化和条件省略,循环体中i自增,执行5次,输出01234,故选A。
9、若inta=7,*p=a;执行++*p;后a的值是?()
A.7
B.8
C.a
D.无定义
【答案】:答案解析:++*p等价于++(*p),先解引用取a的值,再加1(a=8),故选B。
10、以下转义字符表示换行的是?()
A.\t
B.\n
C.\
D.\r
【答案】:答案解析:\t是制表符,\n是换行符,\是反斜杠,\r是回车符,故选B。
11、C语言程序编译的正确顺序是?()
A.预处理→编译→汇编→链接
B.编译→预处理→汇编→链接
C.预处理→汇编→编译→链接
D.链接→编译→汇编→预处理
【答案】:答案解析:C程序编译流程为预处理(处理#命令)→编译(生成汇编代码)→汇编(生成目标文件)→链接(生成可执行文件),故选A。
12、以下关于空指针的定义正确的是?()
A.#defineNULL0
B.#defineNULL(void*)0
C.int*p=NULL;
D.以上都正确
【答案】:答案解析:A、B是NULL的常见定义,C是定义空指针,均正确,故选D。
13、若charstr=Clanguage;则(str+2)的值是?()
A.C
B.
C.l
D.a
【答案】:答案解析:str+2指向第三个字符,值为l,故选C。
14、以下for循环的循环次数是?()for(inti=2;i=8;i+=2)
A.3次
B.4次
C.5次
D.6次
【答案】:答案解析:i取值2、4、6、8,共4次,故选B。
15、数组元素的下标从______开始?()
A.0
B.1
C.-1
D.任意
【答案】:答案解析:C语言数组下标从0开始,是固定规则,故选A。
16、若inti=3;执行do{printf(%d,i);i--;}while(i=1);输出结果是?()
A.321
B.123
C.3210
D.无输出
【答案】:答案解析:do-while先执行,i从3减到1,输出321,故选A。
17、以下定义指向数组的指针正确的是?()
A.inta[5],*p=a;
B.inta[5],*p=a;
C.inta[5],p=a;
D.inta[5],*p=a[0];
【答案】:答案解析:a是数组名(首元素地址),p=a等价于p=a[0],Ba是数组地址(类型不匹配),Cp是普通变量,Dp不能赋a[0]的值,故选A。
18、以下函数定义中,参数为两个int类型的是?()
A.voidfun(inta,f
原创力文档

文档评论(0)