- 0
- 0
- 约6.4千字
- 约 13页
- 2026-01-31 发布于山东
- 举报
2026年c语言竞赛测试题
第一部分单选题(50题)
1、以下定义函数指针正确的是?()
A.int(*fp)(int);
B.int*fp(int);
C.intfp(int);
D.int(fp)[];
【答案】:答案解析:A是指向int返回值、int参数的函数指针,B是返回int的函数,C是普通函数,D是指向数组的指针,故选A。
2、以下关于函数的说法正确的是?()
A.函数可提高代码复用性
B.函数可简化程序结构
C.函数可便于维护
D.以上都正确
【答案】:答案解析:函数的核心优势是复用、简化结构、便于维护,故选D。
3、若inti=0;执行for(;;){if(i==4)break;printf(%d,i);i++;}输出结果是?()
A.0123
B.01234
C.无限循环
D.无输出
【答案】:答案解析:for(;;)是无限循环,i=4时break,输出0123,故选A。
4、以下for循环中,循环变量初始化、条件判断、更新表达式均正确的是?()
A.for(i=0;i5;i++)
B.for(i=5;i0;i--)
C.for(i=0;i5;i+=2)
D.以上都正确
【答案】:答案解析:A(递增)、B(递减)、C(步长2)的三个表达式均合法,循环逻辑正确,故选D。
5、若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。
6、若inti=0;执行while(i5){i++;if(i==3)continue;printf(%d,i);}输出结果是?()
A.1245
B.12345
C.01245
D.无输出
【答案】:答案解析:i=3时continue,跳过printf,输出1、2、4、5,故选A。
7、数组在内存中的存储方式是?()
A.随机存储
B.连续存储
C.链式存储
D.散列存储
【答案】:答案解析:数组元素在内存中连续存放,便于通过下标访问,故选B。
8、以下函数定义中,参数为两个int类型的是?()
A.voidfun(inta,floatb){}
B.voidfun(inta,intb){}
C.voidfun(floata,intb){}
D.voidfun(inta,charb){}
【答案】:答案解析:B中两个参数均为int类型,其余选项参数类型不匹配,故选B。
9、以下循环语句中,语法正确的是?()
A.while(i5){printf(%d,i);i++;}
B.while(i5)printf(%d,i);i++;
C.do{printf(%d,i);i++;}while(i5)
D.for(i=0;i5)printf(%d,i);
【答案】:答案解析:B中i++在循环体外(循环无限),C缺少分号,D缺少更新表达式,A语法正确,故选A。
10、以下指针的算术运算中,单位是?()
A.1字节
B.指针指向类型的大小
C.4字节
D.8字节
【答案】:答案解析:指针算术运算(如p++)偏移量是指向类型的大小(如int指针+1偏移4字节),故选B。
11、若inta=10,*p=a,q=p;则q的值是?()
A.10
B.a
C.p
D.无定义
【答案】:答案解析:q=p使q指向a,*q=10,故选A。
12、若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。
13、以下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。
14、以下数组定义中,可省略数组长度的是?()
A.inta[5];
B.inta[]={1,2,3};
C.inta[5]={1,2,3};
D.inta[][3];
【答案】:答案解析:初始化时可省略长度(编译器自动计算),D二维数组第二维不能省略,故选B。
15、以下switch语句中,default的
原创力文档

文档评论(0)