- 0
- 0
- 约6.55千字
- 约 13页
- 2026-01-27 发布于河南
- 举报
软件技术C语言基础知识练习题
第一部分单选题(50题)
1、若inti=1,s=0;执行while(i=5){s+=i;i++;}后s的值是?()
A.15
B.10
C.5
D.0
【答案】:答案解析:循环累加1+2+3+4+5=15,s=15,故选A。
2、若inta=5,*p=a;则*p的值是?()
A.5
B.a
C.p
D.无定义
【答案】:答案解析:*p等价于p,即a(a的地址),故选B。
3、若intx=1;执行switch(x){case1:printf(1);break;case1:printf(2);break;}会出现什么情况?()
A.输出1
B.输出2
C.编译错误
D.运行错误
【答案】:答案解析:case后常量不能重复,编译时会报错,故选C。
4、若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。
5、以下switch语句中,正确使用字符常量的是?()
A.switch(c){caseA:printf(A);break;}
B.switch(c){caseA:printf(A);break;}
C.switch(c){caseA:printf(A);break;}
D.switch(c){casea:b:printf(ab);break;}
【答案】:答案解析:字符常量用单引号,B是标识符,C是字符串,D语法错误(多个case需分开),故选A。
6、数组名作为函数参数时,传递的是?()
A.数组第一个元素的值
B.数组所有元素的值
C.数组第一个元素的地址
D.数组长度
【答案】:答案解析:数组名传参本质是首元素地址(指针传递),函数中可通过指针访问数组,故选C。
7、若inta=3;执行if(++a3)printf(A);elseprintf(B);输出结果是?()
A.A
B.B
C.AB
D.无输出
【答案】:答案解析:++a是前置自增,a变为43,条件为真,输出A,故选A。
8、以下哪个是C语言中的赋值运算符?()
A.==
B.=
C.+=
D.!=
【答案】:答案解析:=是赋值运算符,==是等于判断,+=是复合赋值,!=是不等于判断,故选B。
9、函数调用时,实参的类型必须与形参的类型?()
A.完全一致
B.兼容(可自动转换)
C.无关
D.实参类型大于形参类型
【答案】:答案解析:实参和形参类型可兼容(如int→float),编译器自动转换,不兼容则编译错误,故选B。
10、数组在内存中的存储方式是?()
A.随机存储
B.连续存储
C.链式存储
D.散列存储
【答案】:答案解析:数组元素在内存中连续存放,便于通过下标访问,故选B。
11、以下指针运算错误的是?()
A.inta=5,*p=a;p++;
B.inta=5,*p=a;*p++;
C.inta=5,*p=a;p=a+1;
D.inta=5,*p=a;p=p+2;
【答案】:答案解析:a是地址常量,不能进行算术运算(a+1错误),A、B、D均正确,故选C。
12、以下指针运算正确的是?()
A.inta=10,*p=a;p++;
B.inta=10,*p=a;p=a;
C.inta=10,*p=a;p=5;
D.inta=10,*p=a;*p=a;
【答案】:答案解析:A指针p自增(指向a的下一个地址),B不能将int值赋给指针,C不能取常量地址,D不能将地址赋给int变量,故选A。
13、以下指针定义正确的是?()
A.int*p;
B.char*q;
C.float*r;
D.以上都正确
【答案】:答案解析:A指向int,B指向char,C指向float,均符合指针定义语法,故选D。
14、表示“x大于5且小于10”的合法C语言表达式是?()
A.5x10
B.x5||x10
C.x5x10
D.x5x10
【答案】:答案解析:逻辑与用,逻辑或用||,A是连续比较语法错误,是按位与,故选C。
15、以下二维数组定义中,行数为2的是?()
A.inta[2][3];
B.inta[][3]={1,2,3,4,5,6};
C.inta[2][3]={1,2,3,4,5};
D.以上都是
【答案】:答案解析:A行数2,B初始化6个元素(3列×2行),C行数2,故选D。
16、以下关于二维数组的说法正确的是?()
A.二维数组是数组的数组
B.二维数组元素在内存中按列存储
C.二维数组长度必须是常量
D.二维数组不能作为函数参数
【答案
原创力文档

文档评论(0)