一、选择题
1. 有以下程序:
程序运行后的输出结果是( )。
A.10
B.11
C.20
D.21
【答案】D
【解析】题中定义了一个包含两个元素的结构体数组,其中data[0].a=10,data[0].b=100,data[l].a=20,data[l].b=200。指针p 指向结构体数组的第2个元素,那么p.a 的值为20, p.b 的值为200, 所以输出结果为21。
2. 程序中已构成如下图所示的不带头结点的单向链表结构,指针变量s 、p 、q 均已正确定义,并用于指向链表结点,指针变量s 总是作为头指针指向链表的第一个结点。
若有以下程序段
该程序段实现的功能是( )。
A. 删除首结点
B. 尾结点成为首结点
C. 首结点成为尾结点
D. 删除尾结点
【答案】C
【解析】进过while 循环后,p 指向链表的尾结点
第 2 页,共 41 页 是把q 置为p 的next 结点
q 的next 结点为空,此时q 结点成为链表的尾结点。
3. 有以下程序
:
程序的运行结果是( )。
A.6
B.5
C.4
D.3
【答案】B
【解析】条件运算符语法形式为:执行规则为:计算表达式expl 的值,测试其是否为0; 如果expl 的值非0, 则对exp2求值,并把这个值作为条件表达式的
结果输出,不计算exp3; 如果expl 的值为0,则对exp3求值,并把这个值作为条件表达式的结果输出,不计算exP2。函数ml 实现返回传入两个参数中的最小值。函数m2实现返回传入两个参数中的最大值。函数fun 实现返回传入两个参数之和。程序执行过程为:调用ml (2, 3)返回2, 调用m2(3, 1)返回3, 调用fun (2,3)返回5,输出结果5,故B 项正确。
4. 设有定义intx=2;,以下表达式中,值不为6的是( )。
A.x*=x+l
B.x++, 2*x
C.x*=(1+x)
D.2*x, x+=2
【答案】D
,此时为3, 然后做x*=3, 【解析】AC 两项,赋值运算优先级最低,所以先做x+1或(1+x)
即x=x*(x+l)=6;B 项,做x++运算后得到3, 然后做2*x运算得6, ;D 项,2*x虽然结果为4, 但此时x 的值仍为2, 所以最终为4。
5. 以下叙述中正确的是( )。
A.C 程序的基本组成单位是语句
B.C 程序中的每一行只能写一条语句
C. 简单C 语句必须以分号结束
D.C 语言必须在一行内写完
【答案】C
【解析】C 程序的基本组成单位是函数,A 项错误;C 程序以分号作为每个语句结尾,一行能写多条语句, 也可以将一条语句分几行书写,BD 两项错误;而简单C 语言语句必须以分号结束,所以C 项正确。
第 3 页,共 41 页
6. 表达式
A.9
B.-9
C.18
D.0
【答案】D
【解析
J
的值是( )。 计算顺序为
首先
即
最后,
即
7. 有以下程序(注:字符a 的ASCII 码值为97):
程序运行后的输出结果是( )。
A.abc
B.789
C.7890
D.979800
【答案】B
【解析】a 、b 、c 的ASCII 值分别为97、98、99。程序中执行输出S 中的内容与10进行模运算后的值,s 是一个指针,首先指向字符a ,先执行97%10, 结果为7; 然后++s,指针指向下一个字符b ,执行98%10, 结果为8, 直到s 所指为空,故最后输出的结果为789。
8. 有如下程序:
程序运行后的输出结果是( )。
A.Ta=0,b=l
B.Fa=l,b=2
C.Ta=l,b=2
D.Fa=0,b=2
【答案】C
第 4 页,共 41 页