- 0
- 0
- 约6.37千字
- 约 13页
- 2026-01-31 发布于山东
- 举报
2026年全国二级计算机C语言程序设计题库
第一部分单选题(50题)
1、以下关于空指针的定义正确的是?()
A.#defineNULL0
B.#defineNULL(void*)0
C.int*p=NULL;
D.以上都正确
【答案】:答案解析:A、B是NULL的常见定义,C是定义空指针,均正确,故选D。
2、以下关于指针的说法正确的是?()
A.指针可用于遍历数组
B.指针可用于字符串操作
C.指针可用于函数参数传递
D.以上都正确
【答案】:答案解析:指针在数组遍历、字符串处理、参数传递中均有核心作用,故选D。
3、转义字符\0的作用是?()
A.表示空格
B.表示制表符
C.字符串结束标志
D.换行
【答案】:答案解析:\0ASCII码为0,是字符串默认结束标志,不计入长度,故选C。
4、以下定义指向字符串的指针正确的是?()
A.char*str=hello;
B.charstr[]=hello;
C.char(*str)[]=hello;
D.charstr[5]=hello;
【答案】:答案解析:A是指向字符串常量的指针,B是字符数组,C是数组指针(类型不匹配),D长度不足(含\0需6字节),故选A。
5、函数参数传递中,值传递适用于?()
A.简单变量,无需修改实参
B.数组,需修改元素
C.指针,需修改实参
D.结构体,需修改成员
【答案】:答案解析:值传递用于简单变量(不修改实参),地址传递用于需修改实参的场景,故选A。
6、若inta[4]={1,2,3,4};则*(a+1)的值是?()
A.1
B.2
C.3
D.4
【答案】:答案解析:a是首地址,a+1是第二个元素地址,*(a+1)=a[1]=2,故选B。
7、若charstr[10];执行strcpy(str,hello);后str的长度是?()
A.5
B.6
C.10
D.不确定
【答案】:答案解析:strcpy复制字符串hello(含\0),长度为5(不含\0),故选A。
8、若inti=0,s=0;执行do{s+=i;i++;}while(i5);后s的值是?()
A.10
B.15
C.5
D.0
【答案】:答案解析:do-while累加0+1+2+3+4=10,s=10,故选A。
9、若charstr=hello;则str[1]的值是?()
A.h
B.e
C.l
D.\0
【答案】:答案解析:str是字符串首地址,str[1]等价于(str+1),值为e,故选B。
10、以下if-else语句的语法错误是?()
A.if(x0)printf(a);elseprintf(b);
B.if(x0){printf(a);}else{printf(b);}
C.if(x0)printf(a);else;printf(b);
D.if(x0){printf(a);}elseprintf(b);
【答案】:答案解析:else后不能直接加分号(否则else无作用),C中else;后printf独立执行,故选C。
11、若inta=5,*p=a;则*p的值是?()
A.5
B.a
C.p
D.无定义
【答案】:答案解析:*p等价于p,即a(a的地址),故选B。
12、函数调用时,实参和形参的个数必须?()
A.相等
B.实参多于形参
C.形参多于实参
D.无要求
【答案】:答案解析:函数调用时实参和形参个数、类型需匹配,否则编译错误,故选A。
13、以下指针定义正确的是?()
A.int*p;
B.char*q;
C.float*r;
D.以上都正确
【答案】:答案解析:A指向int,B指向char,C指向float,均符合指针定义语法,故选D。
14、若inta=5,p=a;执行p=8;后a的值是?()
A.5
B.8
C.a
D.无定义
【答案】:答案解析:*p=8通过指针修改指向变量a的值,a变为8,故选B。
15、指针变量的大小取决于?()
A.指向变量的类型
B.编译器和系统(32位4字节,64位8字节)
C.指针变量的名称
D.变量的值
【答案】:答案解析:指针大小与指向类型无关,取决于系统位数(32位4B,64位8B),故选B。
16、若inta=3,b=4;则表达式ab++的值是?()
A.12
B.15
C.16
D.7
【答案】:答案解析:b++是后置自增,先参与运算(ab=3*4=12),再自增(b变为5),故选A。
17、若inti=0;执行while(1){if(i==3)break;printf(%d,i);i++;}输出结果是?()
A.012
B.0123
C.无限循环
D.无输出
原创力文档

文档评论(0)