一、选择题
1. 下列形式中不合法的常量是( )。
A.2.E8 B.-.28 C.-028 D.2e_8 答:C
【解析】-028表示的是八进制的整型常量,但八进制的数字只能用0〜7表示。AD 两项为指数形式的实数表示,在e 或E 的前面必须要有数字,且£或£后面的指数必须为整数;B 项,为整数常量。
2. 若有定义: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 项正确。
3. 有以下程序:
第 2 页,共 35 页
以下关于其执
程序运行后的输出结果是( )。 A.20045537 B.20044550 C.20042580 D.20041703 答:D
【解析】把结构体变量作为一个参数传递给函数时,传递的是实参结构体变量的值,系统给结构体类型的形参开辟相应的内存空间,并把实参中各成员的值赋给对应的形参成员。所以改变形参变量的内容对实参不会有任何影响。因此本题的函数f ( )对结构体s[0]没做改动,结果还是20041703。
4. 下列叙述中错误的是( )。
A.C 程序可以由一个或多个函数组成 B.C 程序可以由多个程序文件组成 C. 一个C 语言程序只能实现一种算法
D. —个C 函数可以单独作为一个C 程序文件存在 答:C
【解析】一个C 语言程序可以实现任意多种算法,并没有数量限制
5. 有以下程序:
程序运行后的输出结果是( )。
第 3 页,共 35 页
答:A
【解析】main 函数中,首先定义两个结构体stn 类型的变量a , b , 把a 成员信息复制给b 成员,在f ( )函数中,利用指针重新对b 成员信息进行赋值,分别后,再调用函数f ( )
输出a , b 成员信息。
6. 对于一个正常运行的C 程序,以下叙述中正确的是( )。
A. 程序的执行总是从程序的第一个函数开始,在main 函数结束 B. 程序的执行总是从main 函数开始
C. 程序的执行总是从main 函数开始,在程序的最后一个函数中结束 D. 程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束 答:B
【解析】一个正常运行的C 程序总是从main 函数开始执行,最后返回到main 函数结束。
7. 有以下程序:
程序运行时,从键盘输入A. B. C. D. 答:A
输出结果是( )。
【解析】首先定义了一个指针p 指向数组的首地址,在while 语句中,执行功能是如果当前指针指向地址单 元内字符不等于空字符变换的字符常量,A 项正确。
第 4 页,共 35 页
则输出#和指针对应地址元素的值在码加2后