- 0
- 0
- 约6.59千字
- 约 13页
- 2026-01-31 发布于河南
- 举报
2026年c语言竞赛试题
第一部分单选题(50题)
1、若intx=2;执行switch(x){default:printf(0);case1:printf(1);break;case2:printf(2);case3:printf(3);}输出结果是?()
A.01
B.23
C.0123
D.无输出
【答案】:答案解析:x=2匹配case2,无break,穿透到case3,输出23,故选B。
2、以下switch语句中,default的位置可以在?()
A.所有case之前
B.所有case之后
C.两个case之间
D.以上都可以
【答案】:答案解析:default位置灵活,可在case前、后或中间,不影响执行逻辑,故选D。
3、若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。
4、以下关于函数参数的说法正确的是?()
A.形参是局部变量
B.实参是局部变量
C.形参在函数调用后释放
D.实参在函数调用后释放
【答案】:答案解析:形参是函数内局部变量(调用时分配内存,调用结束释放),实参是主调函数中的变量(生命周期与主调函数一致),故选A。
5、以下数组初始化中,未赋值元素默认为0的是?()
A.inta[5]={1,2,3};
B.charstr[5];
C.inta[5];
D.以上都是
【答案】:答案解析:全局数组未初始化默认为0,局部数组未初始化是随机值,A初始化部分元素,未赋值默认为0,故选A。
6、若inta=5,p=a;则p的值是?()
A.5
B.a
C.p
D.无定义
【答案】:答案解析:*p等价于p,即指针p自身的值(a的地址),故选C。
7、若inti=0;执行while(1){printf(%d,i);i++;if(i==3)break;}输出结果是?()
A.012
B.0123
C.无限循环
D.无输出
【答案】:答案解析:while(1)无限循环,i=3时break,输出012,故选A。
8、以下for循环的循环次数是?()for(inti=2;i=8;i+=2)
A.3次
B.4次
C.5次
D.6次
【答案】:答案解析:i取值2、4、6、8,共4次,故选B。
9、若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。
10、若intx=10,y=20;则表达式x!=y的结果是?()
A.0
B.1
C.10
D.20
【答案】:答案解析:!=是不等于判断,x!=y为真,C语言中真用1表示,故选B。
11、以下if-else语句中,代码块正确的是?()
A.if(x0)printf(a);printf(b);elseprintf(c);
B.if(x0){printf(a);printf(b);}elseprintf(c);
C.if(x0)printf(a);{printf(b);}elseprintf(c);
D.if(x0)printf(a);printf(b);else{printf(c);}
【答案】:答案解析:else需与最近的if匹配,A、C、D中else前有独立printf,语法错误,B用{}包裹代码块正确,故选B。
12、若inta[5]={1,2,3,4,5};则a[5]是?()
A.5
B.0
C.越界访问
D.无定义
【答案】:答案解析:a[5]下标超出0-4范围,属于越界访问(可能导致程序错误),故选C。
13、若inti=0,s=0;执行for(i=0;i4;i++)s+=i;后s的值是?()
A.6
B.10
C.4
D.0
【答案】:答案解析:累加0+1+2+3=6,s=6,故选A。
14、若inta=10,*p=a;则sizeof(p)的值是?()
A.4
B.8
C.取决于系统
D.10
【答案】:答案解析:sizeof(p)是指针大小,32位系统4字节,64位8字节,故选C。
15、若inta=7,b=3;执行if(a%b==1)a=0;elseb=0;后a和b的值分别是?()
A.0,3
B.7,0
C.0,0
D.7,3
【答案】:答案解析:7%3=1,条件为真,a=0,b保持3,故选A。
原创力文档

文档评论(0)