一、选择题
1. 设有两行定义语句:
intscanf ; floatcase ;
则以下叙述正确的是( )。 A. 两行定义语句都不合法 B. 两行定义语句都合法 C. 第1行语句不合法 D. 第2行语句不合法 答:D
【解析】预定义标识符是系统已经有过定义的标识符,用户可以重新定义,可以作为变量名。scanf 为库函数名,属于预定义标识符,可以被用户重定义,第一行语句合法。C 语言关键字是被保留的,不能用作其他用途的一些标识符,它们在程序中都代表着固定的含义,用户不可重新定义。case 是选择结构switch 语句中的关键字,不可被用户重定义,第二行语句不合法。
2. 关于程序设计基本概念,以下叙述错误的是( ).
A. 计算机可以直接执行由任意高级语言编写的程序 B. 高级语言都有与之对应的编译程序或解释程序 C. 用任何一种计算机高级语言都可以把算法转换为程序 D. 结构化算法可以解决任何复杂的问题 答:A
【解析】A 项计算机只能识别机器语言,不能直接识别由高级语言编写的程序。
3. 有以下程序:
程序的运行结果是( )。 A.8 B.11 C.15 D.4 答:C
【解析】static 变量又称为静态变量,编译时,将其分配在内存的静态存储区中,在整个程序运行期间都不释放这些存储单元,即使退出函数,下次再进入该函数时,静态局部变量仍使用原来的存储单元,值是上一次函数调用结束时的值。程序执行过程为:执行for 循环,量i=l,for 循环实现
返回2,
主函数中
,调
,定义静态存储类别的局部变量t=l,此变量的作用域为函数fun 中,定义局部变用函数fun (2)
,静态存调用函数fun (3)
返回12
,
储类别的局部变量上次调用后结果t=2, 局部变量i=l,for 循环实现
最后输出t 为15,故C 项正确。
4. 有以下程序
程序的运行结果是( )。 A.345678 B.876543 C.1098765 D.321678 答:D
【解析】函数fun 的作用是交换
对其修改,在函数外部也会发生作用。互换,执行完成后,数组k 变成
5. 以下叙述中正确的是( )。
与
的值,数组是以指针的形式传递的,在函数内部的作用是把数组k 中的
,把
到
和,
互换,
和
输出,得到321678。
A. 在scanf 函数的格式串中,必须有与输入项一一对应的格式转换说明符
B. 只能在printf 函数中指定输入数据的宽度,而不能在scanf 函数中指定输入数据占的宽度 C.scanf 函数中的字符串是提示程序员的,输入数据时不必管它 D. 复合语句也被称为语句块,它至少要包含两条语句
答:C
【解析】C 项正确,scanf 函数中的字符串是为了増加程序的可读性,并不影响数据的输入。A 项错误,可以在%和格式字符之间加入
号,作用是跳过对应的输入数据;B 项错误,可以
在格式字符前加入一个正整数指定输入数据所占的宽度;D 项错误,用一对花括号把若干语句括 起来构成一条复合语句。一个复合语句在语法上视为一条语句,在一对花括号内的语句数量不限。
6. 若有以下程序:
以下叙述中正确的是( )。 A. 可用S 定义结构体变量 B. 可用T 定义结构体变量 C.S 是struct 类型的变量 D.T 是structS 类型的变量 答:B
【解析】S 为结构体类型名,而T 为结构体变量名表。 7 设有如下定义
则以下错误引用结构体成员n 的是( )。
.
答:A
【解析】可用以下3种形式来引用结构体变量中的成员,其中结构体变量名也可以是已定义的结构体数组的数组元素:①结构体变量名. 成员名;②指针变量名->成员名;③(*指针变量名). 成员名。题目中a 为数组名是地址常量,不是指针变量,A 项引用错误。a[0]为变量名,B 项引用正确。p 为指针,且正确的指向结构体变量,C 项引用正确。D 项符合第三种引用方式,引用正确。
8. 以下程序段中,不能实现条件“如果a
A.
B.
C.
D. 答:D
【解析】A 项:条件运算符?运算过程为:如果a>=b,x=—10, 否则x=10, 能实现题目中功能。B 项:如果a=b情况下有x=—10, 能实现题目中功能。如果a