2009年9 月全国计算机等级考试二级笔试试卷_第1页
2009年9 月全国计算机等级考试二级笔试试卷_第2页
2009年9 月全国计算机等级考试二级笔试试卷_第3页
2009年9 月全国计算机等级考试二级笔试试卷_第4页
2009年9 月全国计算机等级考试二级笔试试卷_第5页
已阅读5页,还剩116页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2009年9月全国计算机等级考试二级C语言程序设计

笔试试卷(考试时间90分钟,满分100分)

一、选择题((1)—(10)、(21)D)队头指针可以大于队尾指针,也可

—(40)每题2分,(11)—(20)每题1以小于队尾指针

分,共70分)(4)算法的空间复杂度是指

(1)下列数据结构中,属于非线性结A)算法在执行过程中所需要的计算机

构的是存储空间

A)循环队列B)算法所处理的数据量

B)带链队列C)算法程序中的语句或指令条数

C)二叉树D)算法在执行过程中所需要的临时工

D)带链栈作单元数

(2)下列数据结果中,能够按照“先进(5)软件设计中划分模块的一个准则

后出”原则存取数据的是是

A)循环队列A)低内聚低耨合

B)栈B)高内聚低相合

C)队列C)低内聚高耦合

D)二叉树D)高内聚高耦合

(3)对于循环队列,下列叙述中正确(6)下列选项中不属于结构化程序设

的是计原则的是

A)队头指针是固定不变的A)可封装

B)队头指针一定大于队尾指针D)自顶向下

C)队头指针一定小于队尾指针C)模块化

D)逐步求精(10)有三个关系R,S和T如下:

(7)软件详细设计产生的图如下:R

ABCABC

a12d32

b21

c31

其中关系T由关系R和S通过某种操

作得到,该操作为

该图是

A)选择

A)N-S图

B)投影

B)PAD图

C)交

C)程序流程图

D)并

D)E-R图

(11)以下叙述中正确的是

(8)数据库管理系统是

A濯序设计的任务就是编写程序代码

A)操作系统的一部分

并上机调试

B)在操作系统支持下的系统软件

B瘴序设计的任务就是确定所用数据

C)一种编译系统

结构

D)一种操作系统

C展序设计的任务就是确定所用算法

(9)在E-R图中,用来表示实体联系

D)以上三种说法都不完整

的图形是

(12)以下选项中,能用作用户标识符

A)椭圆图

的是

B)矩形

A)void

C)菱形

B)8.8

D)三角形

C),0_

D)unsignedB)3

(13)阅读以下程序C)4

#includeD)5

main()(15)若有定义语句:intx=10;,则表

{intcase;floatprintF;达式x-=x+x的值为

printf(“请输入2个数:");A)-20

scanf("%d%f,,&case,&pjrintF);B)-10

printf(u%d%f\n",case,printF);C)0

)D)10

该程序编译时产生错误,其出错原因(16)有以下程序

是#include

A)定义语句出错,case是关键字,main()

不能用作用户自定义标识符{inta=1,b=0;

B)定义语句出错,printF不能用作用printf("%d,",b=a+b);

户自定义标识符printf("%d\n",a=2*b);

C)定义语句无错,scanf不能作为输)

入函数使用程序运行后的输出结果是

D)定义语句无错,printf不能输出A)0,0

case的值B)1,0

(14法达式:(int)((double)9/2)-(9)%2C)3,2

的值是D)1,2

A)0

17)设有定义:inta=1,b=2,c=3;,以D)9

下语句中执行效果与其它三个不同的是(19)以下程序段中,与语句:

A)if(a>b)c=a,a=b,b=c;k=a>b?(b>c?1:0):0;功能相同的是

B)if(a>b){c=a,a=b,b=c;}A)if((a>b)&&(b>c))k=1;

C)if(a>b)c=a;a=b;b=c;elsek=0;

D)if(a>b){c=a;a=b;b=c;}B)if((a>b)||(b>c)k=1;

(18)有以下程序elsek=0;

#includeC)if(a<=b)k=0;

main()elseif(b<=c)k=1;

{intc=O,k;D)if(a>b)k=1;

for(k=1;k<3;k++)elseif(b>c)k=1;

switch(k)elsek=0;

{default:c+=k20)有以下程序

case2:c++;break;#include

case4:c+=2;break;main()

){charsO=f012xy");inti,n=0;

printf(M%d\nn,c);for(i=0;s[i]!=0;i++)

)if(s[i]>=,a,&&s[i]<=,z,)n++;

程序运行后的输出结果是printf("%d\n”,n);

A)3)

B)5程序运行后的输出结果是

C)7A)0

B)2#include

C)3main()

D)5{charc1,c2;

(21)有以下程序c1='A'+'8'-'4';

#includec2='A'+'8'-'5';

main()printf("%c,%d\n",c1,c2);

{intn=2,k=0;)

while(k++&&n++>2);已知字母A的ASCII码为65,程序运

printf(u%d%d\n",k,n);行后的输出结果是

}A)E,68

程序运行后的输出结果是B)D,69

A)02C)E,D

B)13D)输出无定值

C)57(24)有以下程序

D)12#include

(22)有以下定义语句,编译时会出现voidfun(intp)

编译错误的是{intd=2;

A)chara-a';p=d++;printf("%d",p);}

B)chara="\n";main()

C)chara-aa';{inta=1;

D)chara=>\x2d,;fun(a);printf("%d\n",a);}

(23)有以下程序程序运行后的输出结果是

A)32(26)有以下程序

B)12#include

C)21main()

D)22{intm=1,n=2,*p=&m,*q=&n,*r;

(25)以下函数findmax拟实现在数组r=p;p=q;q=r;

中查找最大值并作为函数值返回,但程序中printf("%d,%d,%d,%d\n",m,n,*p,*q

有错导致不能实现预定功能);

#defineMIN-2147483647)

intfindmax(intxO.intn)程序运行后的输出结果是

{inti.max;A)1,2,1,2

for(i=0;i<N;l++)<p=""/>B)1,2,2,1

{max=MIN;C)2,1,2,1

if(maxD)2,1,1,2

returnmax;(27)若有定义语句:int

)a[4][10],*p,*q[4];ja0。<4,则错误的赋值是

造成错误的原因是A)p=a

A)定义语句inti,max;中max未鼠初B)q[i]=a[i]

值C)p=a[i]

B)赋值语句max=MIN;中,不应给D)p=&a[2][1]

max赋MIN值(28)有以下程序

C)语句if(max#include

D)鼠值语句max=MIN;放错了位置#include

main())

{charstr[][20]=rOne*World,,,for(i=0;i<4;i++)printfC%d",a[i]);

M0ne*Dream!,,},*p=str[1];printf(\n");

printf("%d:,strlen(p));printf("%s\n”,}

P);A)3344

)B)2050

程序运行后的输出结果是C)3040

A)9,One*WorldD)0304

B)9,0ne*Dream(30)有以下程序

C)10,One*Dream#include

D)10,One*World#include

(29)有以下程序main()

#include{chara[10]="abcd";

main()printf("%d,%d\n",strlen(a),sizeof(a))

{inta[]={2,3,5,4},i;*

for(i=0;i<4;i++))

switch(i%2)程序运行后的输出结果是

{case0:switch(a[i]%2)A)7,4

{caseO:a[i]++;break;B)4,10

case1:a[i]-;C)8,8

}break;D)10,10

case1:a[i[=0;

(31)下面是有关C语言字符数组的C)void*pf();*pf=fun;

描述,其中错误的是D)void(*pf)(int,char);pf=&fun;

A方可以用赋值语句给字符数组名赋(34)有以下程序

字符串#include

B)可以用输入语句把字符串整体输入intf(intn);

给字符数组main()

C序符数组中的内容不一定是字符串{inta=3,s;

D)字符数组只能存放字符串s=f(a);s=s+f(a);printfC%d\n",s);

(32)下列函数的功能是)

fun(char*a,char*b)intf(intn)

{while((*b=*a)!='\O'){a++,b++;}}{staticinta=1;

A)将a所指字符串赋给b所指空间n+=a++;

B)使指针b指向a所指字符串returnn;

C)将a所指字符串和b所指字符串}

进行比较程序运行以后的输出结果是

D/查a和b所指字符串中是否有‘\0'A)7

(33)设有以下函数B)8

voidfun(intn.char*s){.......}C)9

则下面对函数指针的定义和赋值均是D)10

正确的是(35)有以下程序

A)void(*pf)();pf=fun;#include

B)viod*pf();pf=fun;#definef(x)x*x*x

main()B)scanf("%s”,c);

{inta=3,s,t;C)c=getchar();

s=f(a+1);t=f((a+1));D)*c="string”;

printf(u%d,%d\n,,s,t);(38)有以下程序

)#include

程序运行后的输出结果是#include

A)10,64structA

B)10,10{inta;charb[10];doublec;};

C)64,10structAf(structAt);

D)64,64main()

(36)下面结构体的定义语句中,错误{structA

的是a={1001;ZhangDaM,1098.0};

A)structord{intx;inty;intz;};structa=f(a);jprintf(M%d,%s,%6.1f\nn,a.a,a.b

orda;,a.c);

B)structord{intx;inty;intz;}struct)

orda;structAf(structAt)

C)structord{intx;inty;intz;}a;(t.a=1002;strcpy(t.b,"ChangRong,,);t.

D)struct{intx;inty;intz;}a;c=1202.0;returnt;)

(37)设有定义:char*c;,以下选项程序运行后的输出结果是

中能够使字符型指针c正确指向一个字符串A)1001,ZhangDa,1098.0

的是B)1001,ZhangDa,1202.0

A)charstr[]-,string,,;c=str;C)1001,ChangRong,1098.0

D)1001,ChangRong,1202.0(1)某二叉树有5个度为2的结点以

(39)若有以下程序段及3个度为1的结点,则该二叉树中共有

intr=8;[1]个结点。

printf("%d\n",r»1);(2)程序流程图中的菱形框表示的是

输出结果是[2]o

A)16(3)软件开发过程主要分为需求分析、

B)8设计、编玛与测试四个阶段,其中【3】阶

C)4段产生“软件需求规格说明书。

D)2(4)在数据库技术中,实体集之间的

(40)下列关于C语言文件的叙述中联系可以是一对一或一对多或多对多的,那

正确的是么“学生”和“可选课程”的联系为【4】o

A)文件由一系列数据依次排列组成,(5)人员基本信息一般包括:身份证

只能构成二进制文件号,姓名,性别,年龄等。其中可以作为主

B)文件由结构序列组成,可以构成二关键字的是【5】o

进制文件或文本文件(6)若有定义语句:inta=5;,则表达

C)文件由数据序列组成,可以构成二式:a++的值是【6】o

进制文件或文本文件(7)若有语句doublex=17;inty;,当

D)文件由字符序列组成,其类型只能执行y=(int)(x/5)%2;之后y的值为【7】。

是文本文件(8)以下程序运行后的输出结果是

二、填空题(每空2分,共30分)[8]o

#include

main()

{intx=20;printf('*\n");

printf(u%dB,0<X<20);<p=""/>)

printf(u%d\n",O<X&&X<=""/>程序运行后的输出结果是[10]o

(9)以下程序运行后的输出结果是(11)有以下程序

[9]o#include

#includeinta=5;

main()voidfun(intb)

{inta=1,b=7;{inta=10;

do{a+=b;printf("%d",a);

b=b⑵a+=b;)

}while(b>1);main()

printf("%d\n",a);}{intc=20;

(10)有以下程序fun(c);a+=c;printfC%d\n,,,a);

#include}

main()程序运行后的输出结果是[111o

{intf,f1,f2,i;(12)设有定义:

f1=0;f2=1;structperson

printf(u%d%d",f1,f2);{intID;charname[12];}p;

for(i=3;i<=5;i++)请将scanf(“%d”,[12]);语句补充完

{f=f1+f2;printf(u%d",f);整,使其能够为结构体变量p的成员ID正

f1=f2;f2=f;确读入数据。

)(13)有以下程序

#include程序运行后的输出结果是[14]o

main()

(15)有以下程序

{chara[20]=nHowareyou?\b[20];

#include

scanf(w%s",b);printfC%s%s\nw,a,b);

fun(intx)

}

{if(x/2>0)run(x/2);

程序运行时从键盘输入:Howare

printf(u%d",x);

you?v回车》

}

则输出结果为(131o

main()

(14)有以下程序{fun(6);printf(rn");}

include程序运行后的输出结果是[15]。

typedefstruct2009年9月全国计算机等级考试二级

{intnumjdoubles}REC;C语言笔试参考答案

voidfun1(REC一、选择题

x){x.num=23;x.s=88.5;}

main()

{RECa={16,90.0};

fun1(a);

printf("%d\n",a.num);

)

(c(B(D((AA((cB(B(

1)2)3)€)4))5))9)

(9)5

(8)10

(7)1

(6)5

(5)身份证号

(4)多对多

''2009年3月二级C语言笔试真题及答案

(3)需求分析

(2)逻辑条件

(1)14

二、填空题

((1)—(10)每小题2分,(11)—(50)只有一个选项是正确的,请将正确选项涂写

每题1分,共60分)在答题卡相应位置上,答在试卷上不得分。

下列各题A}B\D)四个选项中,(1)下列叙述中正确的是

A)栈是“先进先出”的线性表D)汇编程序

B)队列是“先进先出”的线性表(6)下面叙述中错误的是

C)循环队列是非线性结构A)软件测试的目的是发现错误并改正错误

D)有序性表既可以采用顺序存储结构,也B)对被调试的程序进行“错误定位”是程序

可以采用链式存储结构调试的必要步骤

(2)支持子程序调用的数据结构是C)程序调试通常也称为Debug

A)栈B)树C)队列D)二叉树D)软件测试应严格执行测试计划,排除测

(3)某二叉树有5个度为2的结点,则该二试的随意性

叉树中的叶子结点数是(7)耦合性和内聚性是对模块独立性度量

A)10B)8C)6D)4的两个标准。下列叙述中正确的是

(4)下列排序方法中,最坏情况下比较次A)提高耦合性降低内聚性有利于提高模块

数最少的是的独立性

A)冒泡排序B)降低耦合性提高内聚性有利于提高模块

B)简单选择排序的独立性

C)直接插入排序C)相合性是指一个模块内部各个元素间彼

D)堆排序此结合的紧密程度

(5)软件按功能可以分为:应用软件、系D)内聚性是指模块间互相连接的紧密程度

统软件和支撑软件(或工具软件)。下面属(8)数据库应用系统中的核心问题是

于应用软件的是A)数据库设计

A)编译软件B)数据库系统设计

B)操作系统C)数据库维护

C)教务管理系统D)数据库管理员培训

(9)有两个关系R,S如下:(11)以下选项中合法的标识符是

RA)1-1B)1—1C)-11D)1-

ABc(12)若函数中有定义语句:intk;,则

a32A)系统将自动给k赋初值0

b01B)这时k中值无定义

c21C)系统将自动给k鼠初值-1

D)这时k中无任何值

(13)以下选项中,能用作数据常量的是

SA)o115B)0118C)1.5e1.5D)115L

设有定义:,以下表达式中,

AB(14)intx=2;

值不为6的是

a3

A)x*=x+1

b0

B)x++,2*x

c2

C)x*=(1+x)

D)2*x,x+=2

(15)程序段:intx=12;

由关系R通过运算得到关系S,则所使用的

doubley=3.141593;printf

运算为

("%d%8.6f,x,y);的输出结果是

A)选择B)投影C)插入D)连接

A)123.141593

(10)将E-R图转换为关系模式时,实体

B)12

和联系都可以表示为

3.141593

A)属性B)键C)关系D)域

C)12,3.141593

D)123.141593if(x!=10)

(16)若有定义语句:doublex,y,*px,*py,printf("%d\n",x);

执行了px=&x,py=&y;之后,正确的输入语)

句是程序运行时,输入的值在哪个范围才会有输

A)scanf(0%f%f,,x,y);出结果

B)scanf(H%f%f,,&x,&y);A)不等于10的整数

C)scanf("%lf%le",px,py);B)大于3且不等于10的整数

D)scanf("%lf%lf',x,y);C)

(17)以下是if语句的基本形式:大于3或等于10的整数

if(表达式)D)小于3的整数

语句(19)有以下程序

其中“表达式”#include<stdio.h>

A)必须是逻辑表达式Main()

B)必须是关系表达式(

C)必须是逻辑表达式或关系表达式inta=1,b=2,c=3,d=0;

D)可以是任意合法的表达式if(a==1&&b++==2)

(18)有以下程序if(b!=2||c-!=3)

#include<stdio.h>

main()printf("%d,%d,%d\n”,a,b,c);

{intx;elseprintf("%d,%d,%d\n”,a,b,c);

scanf("%dM,&x);elseprintf("%d,%d,%d\n”,a,b,c);

if(x<=3);else

程序运行后的输出结果是注意,字母A的ASCII码值为65。程序运

A)1,2,3行后的输出结果是

B)1,3,2A)5670

C)1,3,3B)656667

D)3,2,1C)567

(20)以下程序中的变量已正确定义D)ABC

for(i=0;i<4;i++,i++(22)设变量已正确定义,以下不能统计出

for(k=1;k<3;k++)jprintf(*");一行中输入字符个数(不包含回车符)的程

程序段的输出结果是序段是

A)********A)n=0;while((ch=getchar())!='\n')

B)****n++;

C)**B)n=0;while(getchar()!='\n')n++;

D)*C)for(n=0;getchar()!='\n';n++);

(21)有以下程序D)n=0;for(ch=getchar();ch!='\n';n++);

#include<stdio.h>(23)有以下程序

main()#include<stdio.h>

{charmain()

*s=("ABC);{inta1,a2;charc1,c2;

doscant(',%d%c%d%cn,&a1,&c1,&a2,&c2);

{printf(-%d”,*s%10);s++;printf("%d,%c,%d,%c”,&1,c1,a2,c2);

}while(*s);)

)若想通过键盘输入,使得a1的值为12,a2的

是为34,c1的值为字符a,c2的值为字符b,程序运行后的输出结果是

程序输出结果是:12,a,34,b,则正确的输入A)10

格式是(以下B)9

代表空格,<CR>代表回车)C)8

A)12a34b<CR>D)7

B)12(25)有以下程序

a#include<stdio.h>

34voidfun(char

b<CR>*s)

C)12,a,34,b<CR>{while(*s)

D)12

a34{if(*s%2==0)

b<CR>printf("%c",*s);

(24)有以下程序s++;

#include<stdio.h>

intf(intx,inty))

{return()y-x)*x);})

main()main()

{inta=3,b=4,c=5,d;{char

d=f(f(a,b),f(a,c));a[]={"good");

printf("%d\n",d);

)fun(a);printf(**\n");

)c)5,3,3,5

注意:字母a的ASCII码值为97,程序运行D)5,3,5,3

后的输出结果是(27)有以下程序

A)d#include<stdio.h>

B)goviodf(int*p,int*q);

C)godmain()

D)good{intm=1,n=2,*r=&m;

(26)有以下程序

#include<stdio.h>f(r,&n)jprintf("%d,%d”,m,n);

voidfun(int*a,int*b))

{int*c;voidf(int*p,int*q)

c=a;a=b;b=c;{p=p+1;*q=*q+1;}

)程序运行后输出的结果是

main()A)1,3

{intx=3,y-5,*P=&x,*q=&y;B)2,3

C)1,4

fun(p,q);printf("%d,%d,",*p,*q);D)1,2

fun(&x,&y)jprintf("%d)%d\n",*p,*q);(28)以下函数按每行8个输出数组中的数

)据

程序运行后的输出结果是voidfun(int*w,intn)

A)3,5,5,3{inti;

B)3,5,3,5

for(i=0;i<n;i++)D)pt+3

(30)设有定义:chars[81];inti=10;,以下

不能将一行(不超过80个字符)带有空格的

字符串真确读入的语句或语句组是

printf(u%d",w);A

gets(s)

}

B)while((s[i++]=getchar())!="\n";s=n\0";

printf("\n");C)scant("%s",s);

)D)do{scanf("%c",&s);}while

下划线处应填入的语句是(s[i++]!="\n");s="\0";

A)if(i/8==0)print("Vi");(31)有以下程序

B)if(i/8==0)continue;#include<stdio.h>

C)if(i%8==0)print('*\n")

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论