2009年上半年全国计算机等级考试二级C语言笔试试题及答案。
1.(1)下列说法是正确的。
a)堆栈是先进先出的线性表。
b)队列是“先入后出”的线性表
c)循环队列是非线性的。
d)有序线性表可以采用顺序存储结构,也可以采用链式存储结构。
2.
(2)支持子程序调用的数据结构是
a)堆栈
b)树木
c)队列
d)二叉树
3.
(3)二叉树有五个节点,读作2,因此二叉树的叶节点数为
A)10
B)8
C)6
D)4
4.
(4)在以下排序方法中,最差比较次数最少
a)气泡分选
b)简单选择排序
c)直接插入排序
d)堆分类
(5)软件按功能可分为应用软件、系统软件和支撑软件(或工具软件)。接下来的
属于应用软件的是
a)编译器
b)操作系统
c)教务管理系统
d)汇编程序
6.
(6)下列说法中错误的是
a)软件测试的目的是发现并纠正错误。
b)被调试程序的“错误定位”是程序调试的必要步骤。
c)程序调试也变成了调试。
d)软件测试应严格执行测试计划,消除测试的随意性。
7.
(7)耦合和内聚是衡量模块独立性的两个标准。下面的陈述是正确的。
a)提高耦合性,减少内聚性,有利于提高模块的独立性。
b)降低耦合性,提高内聚性,有利于提高模块的独立性。
c)耦合是指模块内各种元件组合的紧密程度。
d)内聚性是指模块之间相互连接的紧密程度。
8.
(8)数据库应用系统中的核心问题是
a)数据库设计
b)数据库系统设计
c)数据库维护
d)数据库管理员培训
9.
(9)存在如下两种关系R和S:
如果关系S是通过关系R的运算得到的,则所用的运算是
a)选择
b)投影
c)插入
d)连接
10.
(10)将E-R图转换为关系模式时,实体和关系都可以表示为
a)属性
b)钥匙
c)关系
d)域
11.(11)以下选项中的合法标识符是
A)1_1
B)1-1
C)_11
D)1_ _
12.
(12)如果函数中有定义语句:int k;,那么
a)系统会自动将初始值0赋给k。
b)这是k中没有定义的值。
c)系统会自动将初始值-1赋给k。
d)此时k中没有值。
13.
(13)以下选项可用作数据常量。
A)o115
B)0118
1.5e1.5
D)115L
14.
(14)有一个定义:int x = 2;在下面的表达式中,不为6的值为
A)x*=x+1
B)X++,2*x
C)x*=(1+x)
D)2*x,x+=2
15.
(15)程序段:int x = 12;双y = 3.141593;printf("%d%8.6f ",x,y);的输出是
A)123.141593
12 3.141593
C)12,3.141593
d)123.1415930
16.
(16)如果有定义的语句:double x,y,*px,* pypx = &;x;py = & ampy;之后,正确的输入语句是
A)scanf("%f%f ",x,y);
b)scanf(" % f % f " & amp;x & amp;y);
C)scanf("%lf%le ",px,py);
D)scanf("%lf%lf ",x,y);
17.
(17)以下是if语句的基本形式:
If(表达式)语句
“表情”在哪里
a)必须是逻辑表达式。
b)必须是关系表达式。
c)它必须是逻辑表达式或关系表达式。
d)可以是任何合法的表达。
18.
(18)有以下步骤。
# include & ltstdio.h & gt
主()
{ int x;
scanf("%d ",& ampx);
if(x & lt;=3) ;其他
如果(x!=10) printf("%d\n ",x);
}
程序运行时,输入值在哪个区间会有输出结果?
a)不等于10的整数
b)大于3且不等于10的整数。
c)大于3或等于10的整数
d)小于3的整数
19.
(19)有以下步骤。
# include & ltstdio.h & gt
主()
{ int a=1,b=2,c=3,d = 0;
if(a = = 1 & amp;& ampb++==2)
如果(b!=2||c -!=3)
printf("%d,%d,%d\n ",a,b,c);
else printf("%d,%d,%d\n ",a,b,c);
else printf("%d,%d,%d\n ",a,b,c);
}
程序运行后的输出结果是
A)1,2,3
B)1,3,2
C)1,3,3
D)3,21
20.
(20)以下程序段中的变量已被正确定义。
for(I = 0;我& lt4;i++,j++)
for(k = 1;k & lt3;k++);printf(" * ");
程序段的输出是
A)********
B)****
C)**
D)*
21.(21)有以下程序。
# include & ltstdio.h & gt
主()
{ char * s = { " ABC " };
做
{ printf("%d ",* s % 10);s++;
}
while(* s);
}
注意:字母A的ASCII码值是65。程序运行后的输出结果是
A)5670
656667
567人
D)ABC
22.
(22)变量已经正确定义,下面的程序段不能计算一行中的字符数(不包括回车)是
a)n = 0;while((ch=getchar())!= ~ \ n ~)n++;
b)n = 0;while(getchar()!= ~ \ n ~)n++;
c)for(n = 0;getchar()!= ~ \ n ~n++);
d)n = 0;for(ch = getchar();ch!= ~ \ n ~n++);
23.
(23)有以下程序
# include & ltstdio.h & gt
主()
{ int a1,a2;char c1,C2;
scanf("%d%c%d%c ",& ampa1。c 1;a2和ampC2);
printf("%d,%c,%d,%c ",a1,c1,a2,C2);
}
如果通过键盘输入,a1的值是12,A2的值是34,C1的值是字符A,C2的值是字符B,
程序输出结果为:12,a,34,b,正确的输入格式为(以下_代表空格,
a)12a 34b & lt;CR & gt
b)12 _ a _ 34 _ b & lt;CR & gt
C)12,a,34,b & ltCR & gt
d)12 _ a34 _ b & lt;CR & gt
24.
(24)有以下程序
# include & ltstdio.h & gt
int f(int x,int y)
{ return((y-x)* x);}
主()
{ int a=3,b=4,c=5,d;
d=f(f(a,b),f(a,c));
printf("%d\n ",d);
}
程序运行后的输出结果是
A)10
B)9
C)8
D)7
25.
(25)有以下程序
# include & ltstdio.h & gt
无效乐趣(字符)
{ while(*s)
{ if (*s%2==0) printf("%c ",* s);
s++;
}
}
主()
{ char a[]= { " good " };
好玩(一);printf(" \ n ");
}
注:字母A的ASCII码值为97,程序运行后输出结果为
A)d)
b)走
上帝
d)好
26.
(26)有以下程序
# include & ltstdio.h & gt
void fun(int *a,int *b)
{ int * c;
c = a;a = b;b = c;
}
主()
{ int x=3,y=5,* p = & ampx,* q = & ampy;
好玩(p,q);printf("%d,%d,",*p,* q);
乐趣(& ampx & amp;y);printf("%d,%d\n ",*p,* q);
}
程序运行后的输出是
A)3、5、5、3
B)3,5,3,5
C)5、3、3、5
D)5,3,5,3
27.
(27)有以下程序
# include & ltstdio.h & gt
void f(int *p,int * q);
主()
{ int m=1,n=2,* r = & ampm;
f(r,& ampn);printf("%d,%d ",m,n);
}
void f(int *p,int *q)
{ p = p+1;* q = * q+1;}
程序运行后的输出结果是
a)1.3
B)2,3
c)1.4
D)1,2
28.
(28)下面的函数输出数组中每行8的数据。
# include & ltstdio.h & gt
void fun(int *w,int n)
{ int I;
for(I = 0;我& ltn;i++)
{ ____________
printf("%d ",w[I]);
}
printf(" \ n ");
}
需要填写的下划线声明是
a)if(I/8 = = 0)printf(" \ n ");
b)如果(i/8==0)继续;
c)if(I % 8 = = 0)printf(" \ n ");
d)如果(i%8==0)继续;
29.
(29)如果有以下定义
int x[10],* pt = x;
对数组元素的正确引用是
a)* & amp;x[10]
B)*(x+3)
C)*(pt+10)
d)铂+3
30.
(30)有一个定义:char s[81];int I = 0;,您不能在一行(不超过80个字符)的下面留下空格。
字符串正确读取的语句或语句组为
a)获取(s);
B)while((s[i++]=getchar())!= ~ \ n ~);s[I]= ~ \ 0 ~;
C)scanf("%s ",s);
D)do{scanf("%c ",& amps[I]);}while(s[i++]!= ~ \ n ~);s[I]= ~ \ 0 ~;
31.
(31)有以下程序。
# include & ltstdio.h & gt
主()
{ char *a[]={"abcd "," ef "," gh "," ijk " };int I;
for(I = 0;我& lt4;i++) printf("%c ",* a[I]);
}
程序运行后的输出结果是
a)保护
B)dfhk
C)dfhk
D)abcdefghijk
32.
(32)下列选项中正确的说法组是
a)char s[];s= "书!";
b)字符* s;s={ "书!"};
c)char s[10];s= "书!";
d)字符;s= "书!";
33.
(33)有以下程序
# include & ltstdio.h & gt
int fun(int x,int y)
{ if(x = = y)return(x);
else返回((x+y)/2);
}
主()
{ int a=4,b=5,c = 6;
printf("%d\n ",fun(2*a,fun(b,c)));
}
程序运行后的输出结果是
A)3
B)6
C)8
D)12
34.
(34)设函数中有一个整数变量n。为了确保其初始值为0而没有初始值,应该选择的存储类别是
a)汽车
b)注册
c)静态
d)自动或注册
35.
(35)有以下程序
# include & ltstdio.h & gt
int b = 2;
int fun(int *k)
{ b = * k+b;返回(b);}
主()
{ int a[10]={1,2,3,4,5,6,7,8},I;
for(I = 2;我& lt4;i++){ b = fun(& amp;a[I]+b;printf("%d ",b);}
printf(" \ n ");
}
程序运行后的输出结果是
A)10 12
8 10
10 28
10 16
36.
(36)有以下程序
# include & ltstdio.h & gt
#定义PT 3.5
#定义S(x)PT * x * x;
主()
{ int a=1,b = 2;printf("%4.1f\n ",S(a+b));}
程序运行后的输出结果是
A)14.0
B)31.5
C)7.5
d)程序有错误,没有输出结果。
37.
(37)有以下程序
# include & ltstdio.h & gt
结构顺序
{ int x,y;} dt[2]={1,2,3,4 };
主()
{ struct ord * p = dt
printf("%d,",++ p-& gt;x);printf("%d\n ",++ p-& gt;y);
}
程序的运行结果是
A)1,2
B)2,3
C)3,4
4,1
38.
(38)有一个宏定义:# define是div (k,n) ((k% n = = 1)?1:0)并且变量m已经被正确定义和赋值,
然后宏调用:isdiv (m,5)&;& ampIsDIV(m,7)为真。
a)判断m是否能被5或7整除
b)判断m是否能被5和7整除。
c)判断m是否能被5或7整除是1。
d)判断m是否被5整除,7是1。
39.
(39)有以下程序
# include & ltstdio.h & gt
主()
{ int a=5,b=1,t;
t =(a & lt;& lt2)| b;printf("%d\n ",t);
}
程序运行后的输出结果是
A)21
B)11
C)6
D)1
40.
(40)有以下程序
# include & ltstdio.h & gt
主()
{ FILE * f;
f=fopen("filea.txt "," w ");
fprintf(f," ABC ");
fclose(f);
}
如果文本文件filea.txt的原始内容为:你好,运行上述程序后,文件filea.txt的内容为
A)helloabc
B)abclo
C)abc
d)你好
2009年3月,二级C语言程序定答案。
多项选择问题:
1-10: DACDC ABABC
11-20:CBDDA CDBCB
21-30:CDABA BACBC
31-40:ADBCC CBDAC
填空:
(1)19
(2)白盒
(3)层序结构
(4)数据库管理系统
(5)菱形
(6)4
(7)"x/y=%d "
(8)可以
(9)s=0
(10)1AbCeDf2dF
(11)7777654321
(12)max(int a,int b)
(13)空
(14)1001,常戎,1098.0
(15)p = p-->然后