- 0
- 0
- 约6.19千字
- 约 13页
- 2026-01-27 发布于河南
- 举报
大学c语言的期末试题
第一部分单选题(50题)
1、若inti=0;执行for(i=0;i5;i++){if(i==2)continue;printf(%d,i);}输出结果是?()
A.0134
B.01234
C.01
D.无限循环
【答案】:答案解析:i=2时执行continue,跳过printf,输出0134,故选A。
2、若int*p=(int)malloc(sizeof(int));则p的值是?()
A.0
B.随机值
C.1
D.无定义
【答案】:答案解析:malloc分配的内存未初始化,值为随机值,故选B。
3、以下switch语句中,case穿透的情况是?()
A.case后加break
B.case后不加break
C.有default
D.无default
【答案】:答案解析:case后不加break会继续执行下一个case的代码(穿透),加break则跳出,故选B。
4、以下关于数组越界的说法正确的是?()
A.编译时会报错
B.运行时一定会崩溃
C.可能导致程序错误
D.无影响
【答案】:答案解析:数组越界属于未定义行为,编译时不报错,运行时可能正常或崩溃,故选C。
5、以下关于指针的说法正确的是?()
A.野指针是指向无效地址的指针
B.空指针是野指针的一种
C.避免野指针需初始化并及时置空
D.以上都正确
【答案】:答案解析:A、B、C均是野指针的核心知识点,故选D。
6、若inti=0;执行for(;i5;){printf(%d,i);i++;}输出结果是?()
A.01234
B.12345
C.无限循环
D.无输出
【答案】:答案解析:for循环初始化和条件省略,循环体中i自增,执行5次,输出01234,故选A。
7、以下if语句中,逻辑非运算符使用正确的是?()
A.if(!x)printf(yes);
B.if(!x==0)printf(yes);
C.if(!(x0))printf(yes);
D.A和C
【答案】:答案解析:!x表示“x为假(0)”,!(x0)表示“x不大于0”,均正确;B中!x==0等价于x!=0,逻辑不同,故选D。
8、指针作为函数参数时,传递的是?()
A.指针的值
B.指针的地址
C.变量的值
D.变量的地址
【答案】:答案解析:指针传参本质是传递变量地址,函数中通过指针可修改实参值,故选D。
9、数组作为函数参数时,函数中修改数组元素会影响主调函数中的数组吗?()
A.会(指针传递)
B.不会(值传递)
C.取决于数组长度
D.不确定
【答案】:答案解析:数组名传参是指针传递,函数中通过指针修改元素会同步到主调函数数组,故选A。
10、以下函数调用正确的是?()
A.fun();
B.fun(1,2);
C.fun(test);
D.取决于函数定义
【答案】:答案解析:函数调用是否正确取决于函数定义(参数类型、个数),A、B、C均可能正确,故选D。
11、若charstr[10];执行strcpy(str,hello);后str的长度是?()
A.5
B.6
C.10
D.不确定
【答案】:答案解析:strcpy复制字符串hello(含\0),长度为5(不含\0),故选A。
12、以下哪个if语句的条件是“x是偶数且x大于10”?()
A.if(x%2==0x10)
B.if(x%2=0x10)
C.if(x%2==0||x10)
D.if(x%2=0||x10)
【答案】:答案解析:偶数判断用x%2==0,逻辑与用,B是赋值,C、D是逻辑或,故选A。
13、以下哪个是NULL指针?()
A.void*p=0;
B.int*p=NULL;
C.charp=(char)0;
D.以上都正确
【答案】:答案解析:NULL指针是不指向任何有效地址的指针,三种写法均正确,故选D。
14、若inta[5]={10,20,30,40,50},p=a+3;则p的值是?()
A.30
B.40
C.50
D.无定义
【答案】:答案解析:a+3指向a[3],*p=40,故选B。
15、若inta=2;执行a*=a+3;后a的值是?()
A.7
B.10
C.14
D.5
【答案】:答案解析:a*=a+3等价于a=a*(a+3)=2*(2+3)=10,故选B。
16、函数中局部变量的作用域是?()
A.整个程序
B.函数内部
C.函数外部
D.所有函数
【答案】:答案解析:局部变量定义在函数内,仅在函数内部有效,故选B。
17、函数参数的默认值在______指定?()
A.函数定义时
B.函数声明时
C.函数调用时
D.C语言不支持默认参数
原创力文档

文档评论(0)