2012 年 3 月全国计算机二级 C 语言考试真题
一、选择题
)。
1、下列叙述中正确的是(
A.循环队列是队列的一种顺序存储结构
B.循环队列是队列的一种链式存储结构
C.循环队列是非线性结构
D.循环队列是一直逻辑结构
)。
2、下列叙述中正确的是(
A.栈是一种先进先出的线性表
B.队列是一种后进先出的线性表
C.栈和队列都是非线性结构
D.以上三种说法都不对
3、一棵二叉树共有 25 个节点,其中 5 个时子节点,那么度为 1 的节点数为(
A.4
B.6
C.10
D.16
)。
4、在下列模式中,能够给出数据库物理存储结构与物理存取方法的是(
A.内模式
B.外模式
C.概念模式
D.逻辑模式
)。
5、在满足实体完整性约束的条件下(
A、一个关系中可以没有候选关键词
B、一个关系中只能有一个候选关键词
C、一个关系中必须有多个候选关键词
D、一个关系中应该有一个或者多个候选关键词
)。
6、有三个关系 R、S 和 T 如下:
则由关系 R 和 S 得到关系 T 的操作是(
A.自然连接
B.并
)。
C.差
D.交
)。
7、软件生命周期中的活动不包括(
A.软件维护
B.市场调研
C.软件测试
D.需求分析
8、下面不属于需求分析阶段任务的是(
A.确定软件系统的功能需求
B.确定软件系统的系统的系能需求
B.制定软件集成测试计划
D.需求规格说明书审评
)。
9、在黑盒测试方式中,设计测试用例的主要根据是(
A.程序外部功能
B.程序内部逻辑
C.程序数据结构
D.程序流程图
)。
10、在软件设计中不使用的工具是(
A.系统结构图
B.程序流程图
C.PAD 图
D.数据流图(DFD 图)
)。
11、针对简单程序设计,以下叙述的实施步骤正确的是(
A.确定算法和数据结构、编码、调试、整理文档
B.编码、确定算法和数据结构、调试、整理文档
C.整理文档、确定算法和数据结构、编码、调试
D.确定算法和数据结构、调试、编码、整理文档
)。
12、关于 C 语言中数的表示,以下叙述正确的是(
A.只有整型数在允许范围内能无误的表示,实型数会有误差
B.只要在在允许范围内整型和实型都能表示
C.只有实型数在允许范围内能无误的表示,整型数会有误差
D.只有八进制表示的数在不会有误差
)。
)。
13、以下关于算法叙述错误的是(
A.算法可以用伪代码、流程图等多种形式来描述
B.一个正确的算法必须有输入
C.一个正确的算法必须有输出
D.用流程图可以描述的算法可以用任何一种计算机高级语言编写成程序代码
14、以下叙述错误的是(
A.一个 C 程序可以包含多个不同名的函数
)。
B.一个 C 程序只能有一个主函数
C.C 程序在书写时,有严格的缩进要求,否则不能编译通过
D.C 程序的主函数必须用 main 作为函数名
15、设有以下语句
Char ch1,ch2, scanf(”%c%c”,&ch1,&ch2);
若要为变量 ch1 和 ch2 分别输入字符 A 和 B,正确的输入形式应该是(
A.A 和 B 之间用逗号间隔
B.A 和 B 之间不能有任何间隔符
C.A 和 B 之间可以用回车间隔
D.A 和 B 之间用空格间隔
)。
)。
16、以下选项中非法的字符常量是(
A.’\102’
B.’\65’
C.’\xff’
D.’\019’
17、有以下程序
#include
Main()
{
Int A=0,B=0,C=0;
C=(A-=A-5);(A=B,B+=4);
Printf(“%d, %d, %d\n”,A,B,C)
}
程序运行后输出的结果是(
A.0,4,5
B.4,4,5
C.4,4,4
D.0,0,0
)。
18、设变量均已正确定义并且赋值,以下与其他三组输出结构不同的一组语句是(
A.x++; printf((“%d\n”,x);
B.n=++x; printf((“%d\n”,n);
C.++x; printf((“%d\n”,x);
D.n=x++; printf((“%d\n”,n);
)。
19、以下选项中,能表示逻辑值“假”的是(
A.1
B.0.000001
C.0
D.100.0
)。
20、有以下程序
#include
Main()
{ int a;
Scanf(“%d”,&a);
If(a++<9) printf((“%d\n”,a);
Else printf((“%d\n”,a--);
}
程序运行时键盘输入 9<回车>,则输出的结构是(
A.10
B.11
C.9
D.8
)。
21、有以下程序
#include
Main()
{int s=0,n;
For (n=0;n<3;n<++)
{switch(s)
{ case 0;
Case 1;s+=1;
Case 2;s+=2;break;
Case 3;s+3;
Case 4;s+=4;
}
printf((“%d\n”,s);
}
}
程序运行后的结果是(
A.1,2,4
B.1,3,6
C.3,10,14
D.3,6,10
)。
22、若 k 是 int 类型变量,且有以下 for 语句
For(k=-1;k<0;k++) printf(****\n”);
下面关于语句执行情况的叙述中正确的是(
A.循环体执行一次
B.循环体执行两次
C.循环体一次也不执行
D.构成无限循环
)。
23、有以下程序
#include
Main()
{char A,B,C;
B=’1’;C=’A’
For(A=0;A<6;A++)
{if(A%2) putchar(B+A);
Else putchar(C+A);
}
}
程序运行后输出的结果是(
A.1B3D5F
B.ABCDFE
C.A2C4E6
D.123456
)。
24、设有如下定义语句
Int m[ ]={2,4,6,8},*k=m;
以下选项中,表达式的值为 6 的是(
A.*(k+2)
B.k+2
C.*k+2
D.*k+=2
)。
)。
25、fun 函数的功能是:通过键盘输入给 x 所指的整型数组所有元素赋值。在下列划线处应
该填写的是(
#include
#define N 5
Viod fun(int x[N])
{int m;
For(m=N-1;m>0;m--) scanf(“%d\n”, );
}
A.&x[++m]
B.&x[m+1]
C.x+(m++)
D.x+m
26、若有函数
Viod fun(double a[], int *n)
{………}
以下叙述中正确的是(
A、调用 fun 函数时只有数组执行按值传送,其他实参和形参之间执行按地址传送
B、形参 a 和 n 都是指针变量
C、形参 a 是一个数组名,n 是指针变量
D、调用 fun 函数时将把 double 型实参数组元素一一对应地传送给形参 a 数组
)。
27、有以下程序
#include
Main()
{int a,b,k,m,*p1,*p2;
k=1,m=8;
p1=&k,p2=&m;
a=/*p1-m; b=*p1+*p2+6;
printf(“%d ”,a); printf(“%d\n”,b);
}
编译时编译器提示错误信息,你认为出错的语句是(
A.a=/*p1-m
B.b=*p1+*p2+6
C.k=1,m=8;
D.p1=&k,p2=&m;
)。
)。
28、以下选项中有语法错误的是(
A char *str[ ]={“guest”};
B.char str[10 ]={“guest”};
C.char *str[3] *str[1]={“guest”};
D.char str[3][10];str[1]={“guest”};
29、avg 函数的功能是求整型数组中的前若干个元素的平均值,设数组元素个数多不超过 10,
则下列函数说明语句错误的是(
A.int avg(int *a,int n);
B.int avg(int a[10],int n);
C.int avg(int a,int n) ;
D.int avg(int a[],int n);
)。
30、有以下函数
#include
#include
main()
{ printf(“%d\n”,strren”ATS\n012\1”) );}
程序运行后的输出结果是(
A.3
B.8
C.4
D.9
)。
31、有以下函数
#include
main()
{ char a[20],b[20],c[20];
scanf(”%s%s”,a,b);
get(c);
printf(”%s%s\n”,a,b,c);
}
程序运行时从行开始输入 this is a cat!<回车>,则输出结果是(
)。
A.thisisacat!
B.this is a
C.thisis a cat!
D.thisisa cat!
32、有以下函数
#include
viod fun(char c)
{if(c>’x’) fun(c-1);
printf (“%c”,c);
}
main()
{fun”z”;}
程序运行输出结果是(
A.xyz
B.wxyz
C.zyxw
D.zyx
)。
33、有以下函数
#include
viod func(int n)
{int i;
for(i=0;i<=n;i++) printf(“*”);
printf(“#”);
main()
{ func(3); printf(“????”); func(4); printf(“\n”); }
程序运行输出结果是(
A.****#????***#
B.***#????*****#
C.**#????*****#
D.****#????*****#
)。
34、有以下函数
#include
viod fun(int *s)
{staic int j=0;
do {s[j]=s[j]+s[j+1];} wihle(++j<2);
}
main()
{int k,a[10]={1,2,3,4,5};
for(K+1;k<3;k++) fun(a);
for(K+1;k<5;k++) printf(“%d”,a[k]);
printf(“\n”);
}
)。
程序运行输出结果是(
A.12345
B.23445
C.34756
D.35745
35、有以下函数
#include
#define S(x) (x)*x*2
main()
{int k=5,j=2;
printf(“%d,”,S[k+j]); printf(“%d\n”,S(k-j)));
}
程序运行输出结果是(
A.98,18
B.39,11
C.39,18
D.98,11
)。
36、有以下函数
#include
Viod exch(int t[ ])
{t[0]=t[5];}
{int x[10]={1,2,3,4,5,6,7,8,9,10},i=0;
While(i<=4) {exch(&x[i])’i++;}
for(i=0;i<5;i++) printf(“%d”,x[i]);
printf(“\n”);
}
程序运行输出结果是(
A.2 4 6 8 10
B.1 3 5 7 9
C.1 2 3 4 5
D.6 7 8 9 10
)。
37、设有以下程序段
Struct MP3
{char name[20];
Char color;
Float price;
}std,*ptr;
ptr=& std;
若要引用结构体变量 std 中的 color 成员,写法错误的是(
A.std.color
B.ptr->color
)。