一、选择题
1. 若有以下定义和语句:
则值为6的表达式是(提示:
答:D
的优先级高于
( )。
【解析】定义指向结构体变量的指针P ,并将结构体数组首地址赋给加一指向数组第二个元素,其成员ri=6, D 项正确员5。
2. 以下选项中与
语句功能不同的switch 语句是( )。
式为5, 之后再自加一
指向结构体数组第一个元素,其成员n=5,由于
指针自
指向结构体数组第一个元素,其成
是后缀,先取值,所以表达
为结构体数组第一个元素,其成员n=5, 先取值,表达式为
答:B
【解析】在switch 语句的执行过程中,执行完case 后面的语句后,如果遇到break 语句就停止,否则将继续执行下一个case 中的语句,直到遇到break 语句。B 项,当a==1是a=b, 刚好和题干要求相反。
3. 以下叙述中正确的是( )。
A. 只要是用户定义的标识符,都有一个有效的作用域
B. 只有全局变量才有自己的作用域,函数中的局部变量没有作用域
第 2 页,共 34 页
时
C. 只有在函数内部定义的变量才是局部变量 D. 局部变量不能被说明为static 答:A
【解析】A 项正确,标识符的“作用域”是指程序中的某一部分中,标识符是有定义的,可以被C 编译和 连接程序所识别。在C 语言中,由用户命名的标识符都有一个有效的作用域。B 项;C 项错误,在函数内部或复合语句内错误,局部变量的作用域是所 在的函数体(或复合语句)
部定义的变量,称为局部变量;D 项错误,在 函数体(或复合语句)内部用static 来说明一个变量时,变量为静态局部变量。
4. 以下语句的输出结果是( )。
A.5 B.8 C.14
D. 输出项不合法,无正常输出 答:A
【解析】由一对双引号括起来的一串字符为字符串。字符常量是用一对单引号括起来的单个字符,还有一些 特殊字符常量,即以为八进制或十六进制数字。
5. 以下叙述中正确的是( )。
A. 函数的返回值不能是结构体指针类型 B. 函数的返回值不能是结构体类型
C. 在调用函数时,可以将结构体变量作为实参传给函数 D. 结构体数组不能作为参数传给函数 答:C
【解析】C 项正确,结构体变量作为实参时,是传值形式调用;AB 两项错误,函数的返回值可以是结构体变量和结构体指针变量;D 项错误,向函数传递结构体数组名时,传递的是实参结构体数组的首地址,是传引用形式调用。
6. 有以下程序
第 3 页,共 34 页
开头的转义字符。后可以为某些单个字符也可以
共5个字符,A 项正确。
程序的运行结果是( )。
答:B
【解析】struct 变量作为形参和返回值时,传递的是结构体类型的值。f 函数中,把b 变量赋值给a ,然后将a 返回并赋值给d ,所以,d 中的数据与b 的数据相同。
7. 有以下程序
执行后的输出结果是( )。 A.32 B.24 C.5 D.40 答:A
【解析】自增运算符“++”分为前缀和后缀两种形式。两种形式的作用效果是一样的,都是使运算分量的值加1,但是它们的表达式的值不一样,前缀形式表达式的值为运算分量加1之后的值,而后缀形式表达式的值为运算分量加1之前的值。题目中使用了一个for 循环,循环变量i 从1递增到40。在循环体中有两条嵌套的if 语句,首先判断i++%5==0,即判断i++的值(i 加1,然后再判断++i的值(i 加1之后的值)是否能被之前的值)是否能被5整除(判断后i 被加1)
8整除(判断后i 被加1),若两个条件都满足了,就输出i 的值,只有i=30时,满足i++%5==0,此时i=31,++i%8==0成立,此时i=32。
8. 有以下程序:
第 4 页,共 34 页