一、选择题
1. 设有定义:
A. B. C.
正确的输入数据
D.
答:A
【解析】A 项中是起作用的,程序从键盘正确的读入前两个数据并且保存在指定的地址,读入第三个数据后,将其放入缓冲区,然后寻找应该存放的地址,因为没有找到,程序会发生错误而中断,注释错误。B 项由于scanf 只接收两个数据,所以变量x 得不到赋值,注释正确。C 项scanf 会按照float 类型读取输入的第二个数据并且保存为int 类型,由于两种类型的存储形式与所占内存单元均不同,b 得不到正确的赋值,注释正确。D 项在使用scanf 函数时,如果除了格式说明字符和附加格式字符外,还有其他字符,则在输入数据时要求按一一对应的位置原样输入这些字符,注释正确。
2. 有以下程序
执行后的输出结果是( )。
A.32
B.24
C.5
D.40
答:A
【解析】自增运算符“++”分为前缀和后缀两种形式。两种形式的作用效果是一样的,都是使运算分量的值加1,但是它们的表达式的值不一样,前缀形式表达式的值为运算分量加1之后的值,而后缀形式表达式的值为运算分量加1之前的值。题目中使用了一个for 循环,循环变量i 从1递增到40。在循环体中有两条嵌套的if 语句,首先判断i++%5==0,即判断i++的值(i 加1
第 2 页,共 33 页 则以下选项中对语句所作的注释叙述错误的是( )。
多余的格式符完全不起作用 多佘的输入项不能获得输入数据 ; 格式串中允许加入格式符以外的字符串 输入项与格式符类型不匹配,变量b 和x 得不到
,然后再判断++i的值(i 加1之后的值)是否能被之前的值)是否能被5整除(判断后i 被加1)
8整除(判断后i 被加1),若两个条件都满足了,就输出i 的值,只有i=30时,满足i++%5==0,此时i=31,++i%8==0成立,此时i=32。
3. 在C 语言中,以下选项中不能正确表示10X1000之值的是( )。
答:A
【解析】实型常量用带小数点的数字表示,其值有两种表达形式,分别为十进制小数形式和指数形式。指数形式由十进制数加阶码标志成,而A 项中阶码
并且值为10000,故选择A 项。
4. 以下叙述中正确的是( )。
A.
语句
B.
语句
C.
语句
D. 语句
符
答:A
【解析】A 项正确,表示定义了长度为8的int 型数组,它里面的每个元素都是0。当所赋初值少于所定义数组的元素个数时,将自动给后面的元素补以初值0。B 项错误,C 语言规定可以通过赋初值来定义数组的大小,这时数组说明符的一对方括号中可以不指定数组的大小;C 项错误,a 是char 类型的数组,里面的元素应该是字符而非字符串,应该用单引号括起来;D 项错误,数组变量一旦定义,其地址值不可改变,不能给数组名重新赋值。
5. 有以下函数:
该函数的功能是( )。
A. 计算字符串的长度
B. 计算字符串所占字节数
C. 将字符串逆序存放
D. 实现字符串的复制
答:D
while 循环语句中,【解析】实现功能是把q 指针指向地址单元的值赋给P 指针指向的地址中,
第 3 页,共 33 页 或以及阶码(只能为整数,可以带符号)组是浮点数,所以A 项不能正确表示10X1000之值,B 、C 、D 项都表示正确是合法的 是不合法的,遗漏了数组的大小 是合法的,定义了一个包含两个字符的数组 是合法的,因为数组有三个字符空间的容量,可以保存两个字
且每次完成赋值后,移动指针,进行下一次赋值,直到q 指针指向字符串结束符时,退出while 循环,功能为把q 指向的字符串复制到p 指向的地址中。
6. 有以下程序
程序的输出结果是( )。
A. B. C. D.
答:C
【解析】在格式控制中用%%表示,将输出一个%符号。
7. 设有如下语句:
则以下叙述中错误的是( )。
A.DATE 是用户定义的结构体变量
B.structDate 是用户定义的结构体类型
C.DA TE 是用户说明的新结构体类型名
D.struct 是结构体类型的关键字
答:A
【解析】C 语言允许用typedef 说明一种新类型名,其一般形式如下:typedef 类型名新类型
DA TE 是这种新类型的名字。DA TE ,名;题目中定义了新类型Date ,这种类型变量包含3个成员,
是用户说明的新结构体类型名,不是结构体变量,C 选项叙述正确,A 选项叙述错误,选择A 选项。structDate 是用户定义的结构体类型,B 选项叙述正确。struct 是结构体类型的关键字,D 选项叙述正确。
8. 有定义语句:
A. B.
C. D.
答:D 若要从终端给s 输入5个字符,错误的输入语句是( )。
第 4 页,共 33 页