一、选择题
1. C 语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述中正确的是 ( )。
A. 预定义标识符(如库函数中的函数名)可用作用户标识符,但失去原有含义
B. 用户标识符可以由字母和数字任意顺序组成
C. 在标识符中大写字母和小写字母被认为是相同的字符
D. 关键字可用作用户标识符,但失去原有含义
答:A
【解析】C 语言允许把预定义标识符重新定义另作他用,但这将失去预先定义的原意。B 项,标识符的第一个字符必须为字母或下划线;C 项,标识符中,大写字母和小写字母被认为是两个不同的字符;D 项,关键字不能另作他用。
2. 有以下程序:
程序的运行结果是( )。
A.-17,22,12
B.-17,12,22
C.-17,-22,-12
D.17,22,12
答:A
【解析】整型常量有3种表示方法,①十进制整常量,没有前缀,输出格式控制符为%山②八进制整常量,以0作为前缀,输出格式控制符为%o ; ③十六进制整常量,以0x 或Ox 作为前缀,输出格式控制符为%x 。1-k=18,整型常量18用八进制表示为22,十六进制表示为12,故A 项正确。
3. 有如下定义:
若文件已正确打开,且数组x 的10个元素均已赋值,以下将数组元素写到文件中的语句错误的是( )。
答:A
【解析】A 项中,因为n=l, 即每次写入1个结构体数据,x 是数组的首地址,因此,每次写入的数据都是数组的首个结构体元素,没有将整个数组写入文件中去。
4. C 语言程序中,若函数无返回值,则应该对函数说明的类型是( )。
A.int
B.double
C.char
D.void
答:D
【解析】A 项,int 表示返回值是整型;B 项,double 表示返回值是双精度型;C 项,char 表示返回值是字符型;D 项,void 表示无返回值。
5. 有以下程序
执行后的输出结果是( )。
A.32
B.24
C.5
D.40
答:A
【解析】自增运算符“++”分为前缀和后缀两种形式。两种形式的作用效果是一样的,都是使运算分量的值 加1,但是它们的表达式的值不一样,前缀形式表达式的值为运算分量加1之后的值,而后缀形式表达式的值为 运算分量加1之前的值。题目中使用了一个for 循环,循环变量i 从1递增到40。在循环体中有两条嵌套的if 语 句,首先判断
,然后再判断之前的值)是否能被5整除(判断后i 被加1)
时
即判断i++的值(i 加1的值(i 加1之后的值)是否能被时,满足此8整除(判断后i 被加1), 若两个条件都满足了,就输出i 的值,只有成立,此时
6. 以下结构体类型说明和变量定义中正确的是( )。
答:A
A 项,B 项,【解析】用typedef 定义结构体类型名REC 后,可以用REC 定义变量。“structREC ;”
后面不应加分号;C 项,没有这样的书写形式;D 项,REC 定义的是一个变量,不是结构体类型,因此不能用来定义结构体变量。
7. 有以下程序:
程序运行的结果是( )。
A.1
B.2
C.3
D.4
答:B
【解析】fun 函数是一个递归函数,其功能是:当b 的值为零时,返回此时a 的值; 否则,
返回
即将a 和b 的值分别减1后返回
b 为零。执行过程为:执行fun 值2。
8. 若有定义:
则与上述定义完全等价的说明语句是( )。
A.int*a[20][10];
B.int*a[20];
C.int*a[10];
当b 不断递减时,a 也不断递减直到此时b=l,返回返回a 的返回