2006年4月全国计算机等级考试二级C语言笔试试卷
一、选择题( (1)-(10)每题2分,(11)-(50)每题1分,共60分)
下列各题四个选项中,只有一个选项是正确的,请选出正确答案 (1) 下列选项中不属于结构化程序设计方法的是0001 A)自顶向下 B)逐步求精 C)模块化 D)可复用
(2) 两个或两个以上模块之间关联的紧密程度称为1000 A)耦合度 B)内聚度 C)复杂度 D)数据传输特性 (3) 下列叙述中正确的是0001
A)软件测试应该由程序开发者来完成 B)程序经调试后一般不需要再测试 C)软件维护只包括对程序代码的维护 D)以上三种说法都不对
(4) 按照“后进先出”的原则组织数据的数据结构是0100 A)队列 B)栈 C)双向链表 D)二叉树 (5) 下列叙述中正确的是1000
A)线性链表是线性表的链式存储结构 B)栈与队列是非线性结构 C)双向链表是非线性结构
D)只有根结点的二叉树是线性结构 (6)对如下二叉树0001
1
进行后序遍历的结果为
A)ABCDEF B)DBEAFC C)ABDECF D)DEBFCA
(7)在深度为7的满二叉树中,叶子结点的个数为0010 A)32 B)31 C)64 D)63 (8)“商品”与“顾客”两个实体集之间的联系一般是0001 A)一对一 B)一对多 C)多对一 D)多对多 (9)在E-R图中,用来表示实体的图形是0100 A)矩形 B)椭圆形 C)菱形 D)三角形
(10)数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是0010 A)DB包含DBS和DBMS B)DBMS包含DB和DBS C)DBS包含DB和DBMS D)没有任何关系 (11)以下不合法的用户标识符是0100
A)j2_Key B)Double C)4d D)_8_ (12) 以下不合法的数值常量是0010
A)011 B)1e1 C)8.0E0.5 D)0xabcd (13) 以下不合法的字符常量是1000
A)'\\018' B)'\\\ C)'\\\\' D)'\\xcc' (14)表达式3.6-5/2+1.2+5%2的值是0001
A)4.3 B)4.8 C)3.3 D)3.8 (15)以下能正确定义字符串的语句是0001
A)char str[]={'\\064'}; B) char str=\ C) char str=\ D) char str[]=\(16) 以下数组定义中错误的是0100
A)int x[][3]={0}; B) int x[2][3]={{1,2},{3,4},{5,6}}; C) int x[][3]= {1,2,3},{4,5,6}; D) int x[2][3]={1,2,3,4,5,6}; (17) 若要求从键盘读入含有空格字符的字符串,应使用函数0100
2
A)getc() B)gets() C)getchar() D)scanf() (18)以下四个程序中,完全正确的是0100
A)#include〈stdio.h〉 B)#include〈stdio.h〉 main(); main()
{/*programming*/ {/*/programming/*/ printf(\ printf(\ C) #include〈stdio.h〉
D) include〈stdio.h〉
main()
main()
{/*/*programming*/*/ {/*programming*/ printf(\
printf(\
(19) 若有定义: flot x=1.5; int a=1,b=3,c=2; 则正确的switch语句是0010 A) switch(x) B) switch((int)x); {case 1.0: printf(\ {case 1: printf(\case 2.0: printf(\
case 2: printf(\
C) switch(a+b) D) switch(a+b) {case 1: printf(\
{case 1: printf(\
case 2+1: printf(\
case c: printf(\
(20) 值,以下选项中错误的程序是若各选项中所用变量已正确定义1000 ,函数fun中通过return语句返回一个函数A) main() B) float fun(int a,int b){??} {??x=fun(2,10); ??}
main()
float fun(int a,int b){ ??} {??x=fun(I,j); ??}
C) float fun(int, int); D) main()
main()
float fun(int i,int j);
{??x=fun(2,10); ??} ??x=fun(i,j); ??} float fun(int a,int b){ ??} float fun(int a,int b){ ??} (21) 在以下给出的表达式中,与while(E)不等价的表达式是0010 A)(!E==0) B)(E>0‖E<0) C)(E==0) D)(E!=0)
3
(22)要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义以下正确的程序段是:1000
A)while((ch=getchar())!='N')printf(\%c\,ch); B)while(ch=getchar()!=\C)while(ch=getchar()=='N')printf(\ D)while((ch=getchar())=='N')printf(\
(23)已定义以下函数0100 int fun(int *p) { return *p; } fun 函数返回值是
A)不确定的值 B)一个整数 C)形参p中存放的值 D)形参p的地址值
(24)若有说明语句:double *p,a;则能通过scanf语句正确给输入项读入数据的程序是:0001
A)*p=&a; scanf(\ B)*p=&a; scanf(\C)p=&a; scanf(\ D)p=&a; scanf(\
(25)现有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向一个链表中继续的三个结点。0001 struct node {char data;
struct node *next; }*p,*q,*r,
data next data next A data next data next B data next data next C p q r 交换前后位置,同时要保持链表的连续以下不能完成此操作的语句是: A)q->next=r->next;p->next=r,r->next=q;
现
将和所结要qr指点
4
B)p->next=r;q->next=r->next;r->next=q; C)q->next=r->next;r->next=q;p->next=r; D)r->next=q;p->next=r;q->next=r->next; (26)有以下程序段0010 struct st
{int x; int *y;}*pt; int a[]={1,2},b[]={3,4]; struct st c[2]={10,a,20,b}; pt=c;
以下选项中表达式的值为11的是:
A)*pt->y B)pt->x C)++pt->x D)(pt++)->x
(27)设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为:0100
A)EOF B)非0值 C)0 D)NULL (28)设有以下语句0001 int a=1,b=2,c; c=a^(b<<2); 执行后,c的值为
A)6 B)7 C)8 D)9
(29)有以下程序0001 #include
{char c1,c2,c3,c4,c5,c6; scanf(\ c5=getchar(); c6=getchar(); putchar(c1); putchar(c2);
5