机密★启用前
2006 年 4 月全国计算机等级考试二级笔试试卷
C 语言程序设计
24
注意事项
一、考生应严格遵守考场规则,得到监考人员指令后方可作答。
二、考生拿到试卷后应首先将自己的姓名、准考证号等内容涂写在答题卡的相应位置上。
三、选择题答案必须用铅笔填涂在答题卡的相应位置上,填空题的答案必须用蓝、黑色钢
笔或圆珠笔写在答题卡的相应位置上,答案写在试卷上无效。
四、注意字迹清楚,保持卷面整洁。
五、考试结束将试卷和答题卡放在桌上,不得带走。待监考人员收毕清点后,方可离场。
* * * 版权所有,任何单位或个人不得保留、复制和出版,违者必究 * * *
教育部考试中心
二 00 六年二月制
二级 C 语言程序设计试卷 第 1 页(共 12 页)
2006 年 4 月全国计算机等级考试笔试试卷
二级公共基础知识和 C 语言程序设计
(考试时间 120 分钟,满分 100 分)
一、选择题((1)-(10)每小题 2 分,(11)-(50)每小题 1 分,共 60 分)
(1)下列选项中不属于结构化程序设计方法的是( )。
A)自顶向下 B)逐步求精
C)模块化 D)可复用
(2)两个或两个以上模块之间关联的紧密程度称为( )。
A)耦合度 B)内聚度
C)复杂度 D)数据传输特性
(3)下列叙述中正确的是( )。
A)软件测试应该由程序开发者来完成 B)程序经调试后一般不需要再测试
C)软件维护只包括对程序代码的维护 D)以上三种说法都不对
(4)按照“后进先出”原则组织数据的数据结构是( )。
A)队列 B)栈
C)双向链表 D)二叉树
(5)下列叙述中正确的是( )。
A)线性链表是线性表的链式存储结构 B)栈与队列是非线性结构
C)双向链表是非线性结构 D)只有根结点的二叉树是线性结构
(6)对如下二叉树
进行后序遍历的结果为( )。
A)ABCDEF B)DBEAFC
C)ABDECF D)DEBFCA
(7)在深度为 7 的满二叉树中,叶子结点的个数为( )。
A)32 B)31
C)64 D)63
(8)“商品”与“顾客”两个实体集之间的联系一般是( )。
A)一对一 B)一对多
C)多对一 D)多对多
(9)在 E-R 图中,用来表示实体的图形是( )。
A)矩形 B)椭圆形
C)菱形 D)三角形
(10)数据库 DB、数据库系统 DBS、数据库管理系统 DBMS 之间的关系是( )。
A)DB 包含 DBS 和 DBMS B)DBMS 包含 DB 和 DBS
C)DBS 包含 DB
和 DBMS D)没有任何关系
二级 C 语言程序设计试卷 第 2 页(共 12 页)
(11)下列不合法的用户标识符是( )。
A)j2_KEY B)Double
C)4d D)_8_
(12)下列不合法的数值常量是( )。
A)011 B)1e1
C)8.0E0.5 D)0xabcd
(13)下列不合法的字符常量是( )。
A)'\018' B)'\" '
C)'\\' D)'\xcc'
(14)表达式 3.6-5/2+1.2+5%2 的值是( )。
A)4.3 B)4.8
C)3.3 D)3.8
(15)下列能正确定义字符串的语句是( )。
A)char str[ ]={'\064'}; B)char str="kx43";
C)char str="; D)char str[ ]="\0";
(16)下列数组定义中错误的是( )。
A)int x[ ][3]={0};
B)int x[2][3]={{l,2},{3,4},{5,6}};
C
)int x[ ][3]={{l,2,3},{4,5,6}};
D)int x[2][3]={l,2,3,4,5,6};
(17)若要求从键盘读入含有空格字符的字符串,应使用函数( )。
A)getc( ) B)gets( )
C)getchar( ) D)scanf( )
(18)下列 4 个程序中,完全正确的是( )。
A)#include <stdio.h> B)#include <stdio.h>
main( ); main( )
{/*programming*/ {/* / programming / */
printf("programming! \n");} printf("programming!\n");}
C)#include <stdio.h> D)include <stdio.h>
main( ) main( )
{/* / programming*/ */ { /*programming */
printf("programming! \n");} printf("programming! \n");}
(19)若有定义:float x=1.5;int a=1,b=3,c=2;则正确的 switch 语句是( )。
A)switch(x) B)switch((int)x);
{ case 1.0:printf("*\ n"); {case 1:printf("*\n");
case 2.0:printf("**\ n");} case 2:printf("**\n");}
C)switch(a+b) D)switch(a+b)
{ case 1:printf("*\n"); { case 1:printf("* \n");
case 2+1:printf("** \n");} case c:printf("** \n");}
(20)若各选项中所用变量已正确定义,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 语言程序设计试卷 第 3 页(共 12 页)
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)中的(E)不等价的表达式是( )。
A)(!E= =0) B)(E>0‖E<0)
C)(E= =0) D)(E! =0)
(22)要求通过 while 循环不断读入字符,当读入字母 N 时结束循环。若变量已正确定义,
下列正确的程序段是( )。
A)while( (ch=getchar( ))! ='N') printf("%c",ch);
B)while(ch=getchar( )! ='N') printf("%c",ch);
C)while(ch=getchar( )= ='N') printf("%c",ch);
D)while((ch=getchar( ))= ='N') printf("%c",ch);
(23)已定义下列函数:
int fun(int *p)
{ return *p;)
fun 函数返回值是( )。
A)不确定的值 B)一个整数
C)形参 p 中存放的值 D)形参 p 的地址值
(24)若有说明语句:double *p,a;则能通过 scanf 语句正确给输入项读入数据的程序段是
( )。
A)*p =&a; scanf("%1f",p); B)*p =&a; scanf("%f",p);
C)p =&a; scanf("%1f",*p); D)p =&a; scanf("%1f",p);
(25)现有以下结构体说明和变量定义,如图所示,指针 p、q、r 分别指向一个链表中连续
的 3 个结点。
struct node
{ har data;
truct node *next; }*p,*q,*r;
现要将 q 和 r 所指结点交换前后位置,同时要保持链表的连续,下列不能完成此操作
的语句是( )。
A)q− >next=r->next;p->next=r;r->next=q;
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)有下列程序段
struct st
{ int x;int *y;}*pt;
int a[ ]={l,2},b[ ]={3,4};
struct st c[2] = {10,a,20,b};