一、选择题
1. C 语言整数不包括( )。
A. 带小数点的整数 B. 正整数 C. 负整数 D. 无符号整数 【答案】A
【解析】C 语言整数包括正整数,负整数,无符号整数,不含带小数点的整数。
2. 若有定义语句:
执行
正确的输入语句是( )。
【答案】A
【解析】double 类型,scanf 函数中格式应该使用%lf ,px 中存储的是x 的地址,可以直接在scanf 函数中使用。
3. 有以下程序:
程序运行后的输出结果是( )。 A.10 B.11 C.20 D.21
【答案】D
【解析】题中定义了一个包含两个元素的结构体数组,其中data[0].a=10,data[0].b=100,data[l].a=20,data[l].b=200。指针p 指向结构体数组的第2个元素,那么p.a 的值为20, p.b 的值为
200, 所以输出结果为21。
4. 以下C 语言用户标示符中,不合法的是 。
【答案】D
【解析】C 语言中的标识符只能由字母、数字和下画线构成,且第一个字符必须是字母或下画线,同时不能与C 语言中的关键字相同。D 项还有非法字符
5. 设有定义:
则以下赋值语句中正确的是( )。 A.s[0]=m[l]; B.s=m; C.s.l3=m.n;
D.s[2].x=m[2].x; 【答案】A
【解析】定义了结构体类型数组s ,长度为2,结构体类型数组m ,长度为2,并进行了初始化。同类型的结构体可以直接用变量名实现赋值,A 选项正确。数组名为数组首地址,地址常量之间不可以相互赋值,B 选项错误。C 选项引用结构体成员错误,数组名为地址常量不是结构体变量,不能引用成员。D 选项数组越界,不存在s[2]与m[2]。
6. 有以下程序:
程序运行的结果是( )。 A.331 B.41 C.2 D.1
【答案】D
【解析】C 语言规定:else 子句总是与前面最近的不带else 的if 相结合,与书写格式无关。本题中的else 语句与第二个if 语句配对。程序首先判断x>y不成立,直接退出if 语句,执行
注意,x++是先输出,后做++运算,故首先输出x 的值1,然后将X 的值
加1。
7.
若变量已正确定义。在
A. B. C. D. 【答案】A
中,以下不可替代W 的是( )。
【解析】在C 语言中,并没有运算符,判断不相等时,使用
8. 有如下程序:
程序运行后的输出结果是( )。 A.12 B.14 C.20 D.13
【答案】C
其他三个选项都可以。
【解析】整型常量中,十进制整常量没有前缀,输出格式控制符为为前缀,输出格式控制符为进制数
十六进制整常量以
或
表示成十进制数为19,以十进制格式输出
八进制整常量以0作
十六
作为前缀,输出格式控制符为
故C 项正确。
9. 设x 、y 、z 均为实型变量,代数式
A.x/y+z B.x%y%z C.x/y/z D.x*z/y 【答案】C
在C 语言中的正确写法是( )。
【解析】X 、/的结合顺序是从左到右,所以x 先除以y , 再除以z 。
10.有以下程序: