2008 年 9 月全国计算机二级 C 语言考试真题及答案
(考试时间 90 分钟,满分 100 分)
一、选择题
下列各题 A)、B)、C)、D)四个选项中,只有一个选项是正确的。请将正确选项涂写
在答题卡相应位置上,答在试卷上不得分。
(1)一个栈的初始状态为空。现将元素 1、2、3、4、5、A、B、C、D、E 依次入栈,
然后再依次出栈,则元素出栈的顺序是
A)12345ABCDE
B)EDCBA54321
C)ABCDE12345
D)54321EDCBA
(2)下列叙述中正确的是
A)循环队列有队头和队尾两个指针,因此,循环队列是非线性结构
B)在循环队列中,只需要队头指针就能反应队列中元素的动态变化情况
C)在循环队列中,只需要队尾指针就能反应队列中元素的动态变化情况
D)循环队列中元素的个数是由队头和队尾指针共同决定
(3)在长度为 n 的有序线性表中进行二分查找,最坏情况下需要比较的次数是
A)O(N)
B)O(n2) C)O(log2n)
D)O(n log2n)
(4)下列叙述中正确的是
A)顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的
B)顺序存储结构只针对线性结构,链式存储结构只针对非线性结构
C)顺序存储结构能存储有序表,链式存储结构不能存储有序表
D)链式存储结构比顺序存储结构节省存储空间
(5)数据流图中带有箭头的线段表示的是
A)控制流
B)事件驱动 C)模块调用
D)数据流
(6)在软件开发中,需求分析阶段可以使用的工具是
A)N-S 图 B)DFD 图 C)PAD 图 D)程序流程图
(7)在面向对象方法中,不属于“对象”基本特点的是
A)一致性 B)分类性 C)多态性 D)标识唯一性
(8)一间宿舍可住多个学生,则实体宿舍和学生之间的联系是
1
A)一对一 B)一对多 C)多对一 D)多对多
(9)在数据管理技术发展的三个阶段中,数据共享最好的是
A)人工管理阶段 B)文件系统阶段
C)数据库系统阶段 D)三个阶段相同
(10)有三个关系 R、S 和 T 如下:
ABC
m13
R S T
AB
m1
n2
BC
13
35
由关系 R 和 S 通过运算得到关系 T,则所使用的运算为
A)笛卡尔积
B)交
C)并
D)自然连接
(11)以下叙述中正确的是
A)C 程序的基本组成单位是语句
C)简单 C 语句必须以分号结束
B)C 程序中每一行只能写一条语句
D)C 语句必须在一行内写完
(12)计算机能直接执行的程序是
A)源程序 B)目标程序 C)汇编程序
D)可执行程序
(13)以下选项中不能作为 C 语言合法常量的是
A)’cd’
B)0.1e+6 C)”a”
D)” 11”
(14)以下选项中正确的定义语句是
A)double a;b; B)double a=b=7; C)double a=7,b=7; D)double ,a,b;
(15) 以下不能正确表示代数式 的 C 语言表达式是
A)2*a*b/c/d
B)a*b/c/d*2
C)a/c/d*b*2 D)2*a*b/c*d
(16)C 源程序中不能表示的数制是
A)二进制
B) 八进制
C) 十进制
D) 十六进制
2
(17) 若有表达式(w)?(--x):(++y),)?(--x):(++y),):(++y),),则其中与 w)?(--x):(++y), 等价的表达式是
A) w)?(--x):(++y),= =1
B) w)?(--x):(++y),= =0
C)w)?(--x):(++y),!=1
D) w)?(--x):(++y),!=0
(18) 执行以下程序段后,w)?(--x):(++y), 的值为
int w)?(--x):(++y),=’A’,x):(++y),=14,y),=15;
w)?(--x):(++y),=((x):(++y),||y),)&&(w)?(--x):(++y),<’a’));
A)-1
B)NULL C)1
D) 0
(19)若变量已正确定义为 int 型,要通过语句 scanf(“%d,%d,%d ”,&a,&b,&c);给 a 赋
值 1,给 b 赋值 2, 给 c 赋值 3, 以下输入形式中错误的是(u 代表一个空格符)
A)uuu1,2,3<回车>
B)1u2u3<回车>
C)1,uuu2, uuu3<回车>
D)1,2,3<回车>
(20) 有以下程序段
int a,b,c;
a=10; b=50; c=30;
if(a>b)a=b,b=c;c=a;
printf(“a=%d b=%d c=%d n”,a,b,c);
程序的输出结果是
A) a=10 b=50 c=10
B) a=10 b=50 c=30
C) a=10 b=30 c=10
D) a=50 b=30 c=50
(21) 若有定义语句:int m[]={5,4,3,2,1},i=4;,则下面对 m 数组元素的引用中错误的
是
A) m[--i]
B)m[2*2] C)m[m[0]] D)m[m]
(22)下面的函数调用语句中 func 函数的实参个数是
func(f2(v1,v2),(v3,v4,v5),(v6,max):(++y),(v7,v8)));
A)3
B) 4
C)5
D)8
(23)若有定义语句:double x):(++y),[5]={1.0,2.0,3.0,4.0,5.0},*p=x):(++y),; 则错误引用 x):(++y), 数组
元素的是
A)*p B)x):(++y),[5]
C)*(p+1) D)*x):(++y),
(24) 若有定义语句:char s[10]= “1234567 ”;,则 strlen(s)的值是
A)7 B)8
C)9
D)10
3
(25)以下叙述中错误的是
A) 用户定义的函数中可以没有 return 语句
B)用户定义的函数中可以有多个 return 语句,以便可以调用一次返回多个函数值
C)用户定义的函数中若没有 return 语句,则应当定义函数为 void 类型
D)函数的 return 语句中可以没有表达式
(26)以下关于宏的叙述中正确的是
A)宏名必须用大写字母表示
B)宏定义必须位于源程序中所有语句之前
C)宏替换没有数据类型限制
D)宏调用比函数调用耗费时间
(27)有以下程序
#includeinclude
main()
{
int i,j;
for(i=3;i>=1;i--)
{ for(j=1;j<=2;j++) printf("%d",i+j);
printf("n ")
}
}
程序的运行结果是
A) 2 3 4
345
B) 4 3 2 C) 2 3
543
45
34
D) 4 5
34
23
(28) 有以下程序
#includeinclude
main()
{
int x):(++y),=1,y),=2,z=3;
if(x):(++y),>y),)
if(y),
main()
{ int i=5;
do
{ if(i%3==1)
if(i%5==2)
{ printf(“*%d”,i); break; }
i++;
} w)?(--x):(++y),hile(i!=0);
printf(“n”);
}
程序的运行结果是
A) *7
B)*3*5
C)*5
D)*2*6
(30)有以下程序
#includeinclude
int fun(int a,int b)
{ if(b==0) return a;
else return(fun(--a,--b));
}
main()
{ printf("%dn", fun(4,2));}
程序的运行结果是
A) 1
B)2
C)3
D)4
5
温馨提示:当前文档最多只能预览 7 页,此文档共14 页,请下载原文档以浏览全部内容。如果当前文档预览出现乱码或未能正常浏览,请先下载原文档进行浏览。
1 / 7 14