一、选择题
1. 设有定义:
则以下赋值语句中正确的是( )。 A.s[0]=m[l]; B.s=m; C.s.l3=m.n;
D.s[2].x=m[2].x; 【答案】A
【解析】定义了结构体类型数组s ,长度为2,结构体类型数组m ,长度为2,并进行了初始化。同类型的结构体可以直接用变量名实现赋值,A 选项正确。数组名为数组首地址,地址常量之间不可以相互赋值,B 选项错误。C 选项引用结构体成员错误,数组名为地址常量不是结构体变量,不能引用成员。D 选项数组越界,不存在s[2]与m[2]。
2. 下列叙述中错误的是( ) 。
A.C 程序在运行过程中所有的计算都以二进制方式进行 B.C 程序在运行过程中所有的计算都以十进制方式进行 C. 所有的C 程序都需要在连接无误后才能运行
D.C 程序中整型变量只能存放整数,实型变量只能存放浮点数 【答案】B
【解析】在C 程序运行过程中,编译器的作用是将程序转换为目标代码,目标代码都是二进制的。
3. 有以下程序:
程序的运行结果是( )。 A.12300 B.123 C.1 D.321
【答案】B
【解析】
程序开始定义了一个指针文件
然后for 循环语句向文件中依次写入数据。此时以只读方式打开
文件
数读进来,最后输出n 的值为123。
4. 有以下程序
程序的运行结果是( )。 A.1 B.0 C.2 D.3
【答案】A
【解析】只有i=3时,才能进入内部循环。
5. 以下叙述中错误的是( )。
A. 基类型不同的指针可以直接相互赋值 B. 函数可以通过指针形参向所指单元传回数据 C. 字符型指针可以指向一个字符串
D. —般情况下,指针的运用可使程序代码效率更高 【答案】A
【解析】把一个指针变量的值赋给另一个指针变量,但一定要确保这两个指针变量的基类型是相同的。
6. 设变量均己正确定义并且赋值,以下与其他三组输出结构不同的一组语句是( )。
【答案】D
语句
应该为
打开文件
读取一个整数,但这时它把123作为一个整
【解析】“++”和“一”运算,当以前缀形式出现时,则先进行加一或减一操作,再取值,当以后缀形式出现时,则先取值,再进行加一或减一操作。++X表示先将X 值加1后再用,X++表示先使用X 值,用后再加1,所以本题中ABC 选项都会输出x+1的值。
7. 设有定义:以下不能将一行(不超过80个字符)带有空格的字符串正确读入的语句或语句组是( )。
A. B. C. D.
【答案】C
【解析】字符串的输入有两种方式:使用scanf ( )函数和使用get ( )函数。scanf 输入时,遇到控制字符 (空格,换行等)就认为字符输入结束,当字符串中含有空格时,用scanf 输入导致字符串输入不完整。
8. 以下选项中表示一个合法的常量是(说明:符号表示空格)( )。
A.999 B.OXab C.123E0.2 D.2.7e 【答案】B
【解析】十六进制数用数字0和字母x (或大写字母X )开头。OXab 是指十六进制数,是合法的常量。
9. 设
均为实型变量,代数式
【答案】C
【解析】的结合顺序是从左到右,所以x 先除以y ,再除以z 。
10.有以下程序:
程序的运行结果是( )。 A.Z B.Y C.B D.A
在C 语言中的正确写法是( )。