一、选择题
1. 以下叙述中错误的是( )。
A. 当在程序的开头包含头文件B. 函数可以返回地址值
C. 改变函数形参的值,不会改变对应实参的值 D. 可以给指针变量赋一个整数作为地址值 【答案】D
【解析】D 项错误,不能将一个整数直接赋给指针变量作为地址。A 项正确,NULL 是在头文件
中定义的符号常量;B 项正确,函数的返回值可以是地址,即指针;C 项正确,函数
调用中形参值的变化不会传递给实参。
2. 有以下程序:
程序的运行结果是( )。 A.1, 2, 3, 4, B.3, 6, 9, 12, C.4, 7, 10, 13, D.1, 5, 9, 13, 【答案】C
【解析】函数fun 的功能是将参数a 的二维数组中反斜对角对应的数依次赋值给参数b 的一维数组。调用fun 函数
,
时
,
时,
3. 关于程序设计基本概念,以下叙述错误的是( ).
A. 计算机可以直接执行由任意高级语言编写的程序
时,可以给指针变量赋NULL
是4行4列的二维数组
。
时
,
时
,
B. 高级语言都有与之对应的编译程序或解释程序 C. 用任何一种计算机高级语言都可以把算法转换为程序 D. 结构化算法可以解决任何复杂的问题 【答案】A
【解析】A 项计算机只能识别机器语言,不能直接识别由高级语言编写的程序。
4. 有以下程序:
程序运行时,从键盘输入A. B. C. D. 【答案】A
输出结果是( )。
【解析】首先定义了一个指针p 指向数组的首地址,在while 语句中,执行功能是如果当前指针指向地址单 元内字符不等于空字符
则输出#和指针对应地址元素的值在
码加2后
变换的字符常量,A 项正确。
5. 以下程序段中的变量已定义为int 类型,则
程序段的输出结果是( )。 A.6 B.4 C.5 D.7
【答案】D
【解析】整型常量有3种表示方法,分别是十进制数表示法、八进制数表示法和十六进制数表示法,八进制整常量以0作为前缀。自增和自减运算符的两种用法:前置运算,运算符放在变量
之前,规则是先使变量的值增(或减)1,然后以变化后表达式的值参与其他运算;后置运算,运算符放在变量之后,规则是变量先参与其 他运算,然后再使变量的值增(或减)1
。
先自加后取值,输出9,
6. 若有以下定义
则对x 数组元素的正确引用是( )。 A. B. C. D. 【答案】B
【解析】pt 是int 类型指针,指向int 数组x 的首部。B 项,项,相当于
x 的长度是10, 访问越界;C 项,相当于
指向x 中第3个元素,并非是对x 数组元素的引用。
7. 有以下程序段
若要求使p 指向一个int 型的动态存储单元,在横线处应填入的是( )。 A.int
B. (int*) C.int*
D. (*int) 【答案】B
C 语言标准规定malloc 函数返回值的类型为void*,malloc ,【解析】函数的调用形式为:(size )size 的类型为unsignedint 。p 是指向int 型的指针,要把void*强制转换成int*。
8. 有以下函数:
程序运行时从第一行开始输入A. B.this is a C. D. 【答案】C
则输出结果是( )。
相当于
引用正确。A
访问越界;D 项,int 类型指针,
先取值输出10, 再自减
故D 选项正确。