一、选择题
1. 有以下程序:
程序运行后的输出结果是( )。
A.-2
B.1.7
C.-3
D.2.0
答:A
B 、D 项错误,sub 【解析】( )函数输出(int )(a-b-1.3)将结果强制转化为整型;(a-b-1.3)
=-2.2,(int )(-2.2)=-2, sub (3.2, 4.1)=-2,C 项错误,A 项正确。
2. 有以下程序:
程序的运行结果是( )。
A.a=l, b=0
B.a=2, b=2
C.a=l, b=l
D.a=2, b=l
答:D
【解析】x=l,因此外层switch 语句是首先执行case1:后面的语句,进入内层的switch 语句;y=0,执行case0:后面的语句,得a=l,遇到break 语句后退出嵌入的switch 语句。由于外层switch 语句的easel :后面没有break 语句,因此继续执行case2:后面的语句,得a=2,b=l,遇到break 语句后退出第一个switch 语句。结果为a=2,b=l。
3. 有如下定义:
若文件已正确打开,且数组x 的10个元素均已赋值,以下将数组元素写到文件中的语句错误的是( )。
答:A
【解析】A 项中,因为n=l, 即每次写入1个结构体数据,x 是数组的首地址,因此,每次写入的数据都是数组的首个结构体元素,没有将整个数组写入文件中去。
4. 若有定义doublea=22; inti=0,k=18; ,则不符合C 语言规定的赋值语句是( )。
A.a=a++,i++
B.i=(a+k)<=(i+k)
C.i=a%ll
D.
答:C
【解析】C 项错误,在C 语言的算术运算符中,取余运算符“%”的左右两侧的两个运算分量必须是整数。A 项,赋值运算符的优先级高于“,”运算法,先进行赋值;B 项,将“=”右边的逻辑表达式的计算结果赋给变量i ; D 项,首先对变量a 求逻辑非操作,然后将结果赋值给变量i 。
5. 对于一个正常运行的C 程序,以下叙述中正确的是( )。
A. 程序的执行总是从程序的第一个函数开始,在main 函数结束
B. 程序的执行总是从main 函数开始
C. 程序的执行总是从main 函数开始,在程序的最后一个函数中结束
D. 程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束
答:B
【解析】一个正常运行的C 程序总是从main 函数开始执行,最后返回到main 函数结束。
6. 设变量x 为long int型并已正确赋值,以下表达式中能将x 的百位上的数字提取出来的是( )。
答:D
【解析】x / 100结果的个位数上的数字是原来x 的百位数上的数字,则要得到这个数字只需要再即可。
7. 以下叙述中正确的是( )。
A.break 语句不能用于提前结束for 语句的本层循环
B. 使用break 语句可以使流程跳出switch 语句体
C.continue 语句使得整个循环终止
D. 在for 语句中,continue 与break 的效果是一样的,可以互换
答:B
【解析】B 项正确,break 语句可以跳出switch 语句和循环。A 项错误,break 语句在for 循环
C 项错误,continue 语句的作用是跳过本次循环体中余下尚未执行的语句,内部的作用是跳出循环;
立刻进行下一次的循环条件判定,可以理解为仅结束本次循环,并没有使整个循环终止;D 项错误,continue 和break 的效果完全不同。
8. 以下关于C 语言函数参数传递方式的叙述正确的是( )。
A. 数据只能从实参单向传递给形参
B. 数据可以在实参和形参之间双向传递
C. 数据只能从形参单向传递给实参
D.C 语言的函数,参数既可以从实参单向传递给形参,也可以在实参和形参之间双向传递,可视情况选择使用
答:A
【解析】数据只能由实参单向传递给形参称为“值传递”,而不能由形参传给实参,A 项正确;数组名、指针等作参数,实参传递给形参的是地址值,这样形参和实参就指向同一段内存单元,在函数体内对形参数据的改 变也将影响到实
9. 下面是有关C 语言字符数组的描述,其中错误的是( )。
A. 不可以用赋值语句给字符数组名赋字符串
B. 可以用输入语句把字符串整体输入给字符数组
C. 字符数组中的内容不一定是字符串