一、选择题
1. 有以下程序
程序运行后的输出结果是( )。
答:D
【解析】f 函数将数组中前9个元素的值加上对应的下标值。
2. 以下叙述中正确的是( )。
A. 在scanf 函数的格式串中,必须有与输入项一一对应的格式转换说明符
B. 只能在printf 函数中指定输入数据的宽度,而不能在scanf 函数中指定输入数据占的宽度
C.scanf 函数中的字符串是提示程序员的,输入数据时不必管它
D. 复合语句也被称为语句块,它至少要包含两条语句
答:C
【解析】C 项正确,scanf 函数中的字符串是为了増加程序的可读性,并不影响数据的输入。A 项错误,可以在%和格式字符之间加入号,作用是跳过对应的输入数据;B 项错误,可以在格式字符前加入一个正整数指定输入数据所占的宽度;D 项错误,用一对花括号把若干语句括
起来构成一条复合语句。一个复合语句在语法上视为一条语句,在一对花括号内的语句数量不限。
3. 以下选项中合法的C 语言赋值语句是( )。
A.++i;
B.a=b=34
C.a=3,b=9
D.k=int(a+b);
答:A
【解析】B 项和C 项缺少分号,不合法。D 项类型转换不合法,应为k=(int )(a+b)。
4. 下面选项中关于“文件指针”概念的叙述正确的是( )。
A. 文件指针就是文件位置指针,表示当前读写数据的位置
B. 文件指针是程序中用FILE 定义的指针变量
C. 文件指针指向文件在计算机中的存储位置
D. 把文件指针传给fscanf 函数,就可以向文本文件中写入任意的字符
答:B
【解析】文件指针实际上是指向一个结构体类型的指针,包含有诸如:缓冲区的地址在缓冲区中当前存取的字符的位置、对文件是“读”还是“写”、是否出错、是否已经遇到文件结束标志等信息。B 项正确,结构体类型名为FILE ,用来定义文件指针。A 项错误,文件指针是指在程序中定义的FILE 类型的变量,通过fopen 函数调用给文件指针赋值,使文件指针和某个文件建立联系,C 程序中通过文件指针实现对文件的各种操作;文件位置指针只是一个形象化的概念,表示当前读或写的数据在文件中的位置;C 项错误,文件在计算机中的存储位置由操作系统负责,文件指针并没有指向文件的存储位置;D 项错误,fscanf 可以用于读文件,而非写文件。
5. 以下不属于C 语言位运算符的是( )。
A.! B. C.
D. 〜
答:A
【解析】c 语言常用的位运算符有:”按位求反,“<>”右移,
按位异或,“”按位或。A 项“!”为逻辑运算符“非”。
6. 若有定义:inta=0,b=0, c=0, d=0; ,有C 语言表达式
行顺序的叙述正确是( )。
A. 先执行a++, 表达式a++的值为0,短路,得a++,执行它
B. 先执行a++,表达式a++的值为0; 再执行b++,表达式b++的值为0,由此可确定
值为0,因此执行d++
C. 先执行a++,表达式a++的值为1; 再执行b++,表达式b++的值为1, 由此可确定
值为1, 因此执行C++
按位与
,以下关于其执
D. 先执行b++,表达式b++的值为1; 再执行a++,表达式a++的值为1,由此可确定
值为1,因此执行C++
答:A
【解析】表达式1? 表达式2:表达式3, 若表达式1为真,则执行表达式2, 否则执行表达式3。逻辑与运算符遵循“短路求值”策略,即只有在仅靠左操作数的值无法确定该逻辑表达式的结果时,才会求解右操作数,表达式>中,左操作数a++的值为0, 已经可以确定整个逻辑表达式的结果为0, 因此右操作数b++不再求解,直接执行表达式3, 即d++, A 项正确。
7. 下列函数的功能是 。
A. 将a 所指字符串赋给b 所指空间
B. 使指针b 指向a 所指字符串
C. 将a 所指字符串和b 所指字符串进行比较
D. 检查a 和b 所指字符串中是否有
答:A
【解析】本题中a 和b 是两个字符型指针,在while 语句的表达式中将指针a 所指向的字符赋给指针b 所指 向的内存单元,再判断指针b 所指向的字符是不是字符串中的空字符,如果不是,则字符指针a 和b 的值分别加1,再执行循环语句,直至b 所指向的字符为字符串中的空字符时跳出循环。
8. 有以下程序:
程序运行后的输出结果是( )。
A.6
B.7
C.11
D.12