机密启用前,机密★启用前2005

语言 4
年4月全国计算机等级考试二级笔试试卷 C语言程序设计 24 注意事项
一、考生应严格遵守考场规则,得到监考人员指令后方可作答。

二、考生拿到试卷后应首先将自己的姓名、准考证号等内容涂写在答题卡的相应位置上。

三、选择题答案必须用铅笔填涂在答题卡的相应位置上,填空题的答案必须用蓝、黑色钢 笔或圆珠笔写在答题卡的相应位置上,答案写在试卷上无效。

四、注意字迹清楚,保持卷面整洁。

五、考试结束将试卷和答题卡放在桌上,不得带走。
待监考人员收毕清点后,方可离场。
***版权所有,任何单位或个人不得保留、复制和出版,违者必究*** 教育部考试中心二00五年二月制 2005年4月全国计算机等级考试笔试试卷二级公共基础知识和C语言程序设计 (考试时间120分钟,满分100分)
一、选择题(
(1)-(10)每小题2分,(11)-(50)每小题1分,共60分)
(1)数据的存储结构是指()。
A)存储在外存中的数据B)数据所占的存储空间量C)数据在计算机中的顺序存储方式D)数据的逻辑结构在计算机中的表示
(2)下列关于栈的描述中错误的是()。
A)栈是先进后出的线性表B)栈只能顺序存储C)栈具有记忆作用D)对栈的插入与删除操作中,不需要改变栈底指针
(3)对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是 ()。
A)冒泡排序n/2 B)冒泡排序为n C)快速排序为n D)快速排序为n(n-1)/2
(4)对于长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为()。
A)log2n B)n/2 C)n D)n+
1
(5)下列对于线性链表的描述中正确的是()。
A)存储空间不一定是连续,且各元素的存储顺序是任意的B)存储空间不一定是连续,且前件元素一定存储在后件元素的前面C)存储空间必须连续,且前件元素一定存储在后件元素的前面D)存储空间必须连续,且各元素的存储顺序是任意的
(6)下列对于软件测试的描述中正确的是()。
A)软件测试的目的是证明程序是否正确B)软件测试的目的是使程序运行结果正确C)软件测试的目的是尽可能多地发现程序中的错误D)软件测试的目的是使程序符合结构化原则
(7)为了使模块尽可能独立,要求()。
A)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强B)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱C)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱 二级C语言程序设计试卷第1页(共13页) D)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强
(8)下列描述中正确的是()。
A)程序就是软件B)软件开发不受计算机系统的限制C)软件既是逻辑实体,又是物理实体D)软件是程序、数据与相关文档的集合
(9)数据独立性是数据库技术的重要特点之
一。
所谓数据独立性是指()。
A)数据与程序独立存放B)不同的数据被存放在不同的文件中C)不同的数据只能被对应的应用程序所使用D)以上三种说法都不对 (10)用树形结构表示实体之间联系的模型是()。
A)关系模型 B)网状模型 C)层次模型 D)以上三个都是 (11)算法具有5个特性,下列选项中不属于算法特性的是()。
A)有穷性 B)简洁性 C)可行性 D)确定性 (12)下列选项中可作为C语言合法常量的是()。
A)-80 B)-080 C)-8e1.0 D)-80.0e (13)下列叙述中正确的是()。
A)用C程序实现的算法必须要有输入和输出操作B)用C程序实现的算法可以没有输出但必须要有输入C)用C程序实现的算法可以没有输入但必须要有输出D)用C程序实现的算法可以既没有输入也没有输出 (14)下列不能定义的用户标识符是(A)MainC)_int )。
B)_0D)sizeof (15)下列选项中,不能作为合法常量的是()。
A)1.234e04 B)1.234e0.4 C)1.234e+
4 D)1.234e0 (16)数字字符0的ASCII值为48,运行下列程序的输出结果是()。
main(){chara='1',b='2';printf("%c,",b++); 二级C语言程序设计试卷第2页(共13页) printf("%d\n",b-a) }A)3,2C)2,
2 B)50,2D)2,50 (17)下列程序的输出结果是()。
main(){intm=12,n=34;printf("%d%d",m++,++n);printf("%d%d\n",n++,++m);}A)12353514C)12343514 B)12353513D)12343513 (18)有定义语句:intb;charc[10];,则正确的输入语句是()。
A)scanf("%d%s",&b,&c); B)scanf("%d%s",&b,c); C)scanf("%d%s",b,c); D)scanf("%d%s",b,&c); (19)有下列程序: main(
) {intm,n,p; scanf("m=%dn=%dp=%d",&m,&n,&p); printf("%d%d%d\n",m,n,p); } 若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789, 则正确的输入是()。
A)m=123n=456p=789 B)m=123n=456p=789 C)m=123,n=456,p=789 D)123456789 (20)下列程序的输出结果是()。
main(){inta,b,d=25;a=d/10%9;b=a&&(-1);printf("%d,%d\n",a,b);}A)6,1C)6,
0 B)2,1D)2,
0 (21)下列程序的输出结果是()。
main() {inti=1,j=2,k=3; if(i++==1&&(++j==3‖k++==3))printf("%d%d%d\n",i,j,k); } A)123 B)234 二级C语言程序设计试卷第3页(共13页) C)223 D)233 (22)若整型变量a、b、c、d中的值依次为:1、4、3、
2。
则条件表达式aa∶cc∶ d的值是()。
A)
1 B)
2 C)
3 D)
4 (23)下列程序的输出结果是()。
main() {intp[8]={11,12,13,14,15,16,17,18},i=0,j=0; while(i++<7) if(p[i]%2)j+=p[i]; printf("%d\n",j); } A)42 B)45 C)56 D)60 (24)下列程序的输出结果是()。
main(){chara[7]="a0\0a0\0";inti,j;i=sizeof(a);j=strlen(a);printf("%d%d\n",i,j);}A)22C)72 B)76D)62 (25)下列能正确定义一维数组的选项是(A)inta[5]={0,1,2,3,4,5};C)chara={'A','B','C'}; )。
B)chara[]={0,1,2,3,4,5};D)inta[5]="0123"; (26)下列程序的输出结果是()。
intf1(intx,inty){returnx>y?
x∶y;}intf2(intx,inty){returnx>y?
y∶x;}main(){inta=4,b=3,c=5,d=2,e,f,g;e=f2(f1(a,b),f1(c,d));f=f1(f2(a,b),f2(c,d));g=a+b+c+d-e-f;printf("%d,%d,%d\n",e,f,g);}A)4,3,7C)5,2,
7 B)3,4,7D)2,5,
7 (27)已有定义:chara[]="xyz",b[]={'x','y','z'};,下列叙述中正确的是()。
二级C语言程序设计试卷第4页(共13页) A)数组a和b的长度相同C)a数组长度大于b数组长度 B)a数组长度小于b数组长度D)上述说法都不对 (28)下列程序的输出结果是()。
voidf(int*x,int*y){intt;t=*x,*x=*y;*y=t;}main(){inta[8]={1,2,3,4,5,6,7,8},i,*p,*q;p=a;q=&a[7];while(p8 B)5,6,7,8,1,2,3,4D)8,7,6,5,4,3,2,
1 (29)下列程序的输出结果是()。
main() {inta[3][3],*p,i;p=&a[0][0]; for(i=0;i<9;i++)p[i]=i; for(i=0;i<3;i++)printf("%d",a[1][i]);} A)012 B)123 C)234 D)345 (30)下列叙述中错误的是()。
A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出B)数组名代表的是数组所占存储区的首地址,其值不可改变C)在程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息D)可以通过赋初值的方式确定数组元素的个数 (31)下列程序的输出结果是()。
#defineN20fun(inta[],intn,intm){inti,j;for(i=m;i>n;i--)a[i+1]=a[i]}main(){inti,a[N]={1,2,3,4,5,6,7,8,9,10};fun(a,2,9);for(i=0;i<5;i++)printf("%d",a[i]);} 二级C语言程序设计试卷第5页(共13页) A)10234C)12334 B)12344D)12234 (32)运行下列程序时,输入123的输出结果为( main() {inta[3][2]={0},(*ptr)[2],i,j; for(i=0;i<2;i++) {ptr=a+i;scanf("%d",ptr);ptr++; } for(i=0;i<3;i++) {for(j=0;j<2;j++) printf("%2d",a[i][j]); printf("\n"); } } A)产生错误信息 B)
1 2
0 C)12 D)
1 30
2 00
3 )。
000000 (33)下列程序的输出结果是()。
prt(int*m,intn) {inti; for(i=0;i5 B)2,3,4,5,
6 C)3,4,5,6,
7 D)2,3,4,5,
1 (34)下列程序的输出结果是(
)。
main(){inta[]={1,2,3,4,5,6,7,8,9,0},*p;for(p=a;p0,C)0,1,2,3,4,5,6,7,8,
9, B)2,3,4,5,6,7,8,9,10,
1,D)1,1,1,1,1,1,1,1,1,
1, (35)下列程序的输出结果是()。
二级C语言程序设计试卷第6页(共13页) #defineP3voidF(intx){return(P*x*x);}main(){printf("%d\n",F(3+5));}A)192C)25 B)29D)编译出错 (36)下列程序的输出结果是()。
main(){intc=35;printf("%d\n",c&c);}A)0C)35 B)70D)
1 (37)下列叙述中正确的是()。
A)预处理命令行必须位于源文件的开头B)在源文件的一行上可以有多条预处理命令C)宏名必须用大写字母表示D)宏替换不占用程序的运行时间 (38)若有下列说明和定义。
uniondt{inta;charb;doublec;}data;下列叙述中错误的是()。
A)data的每个成员起始地址都相同B)变量data所占内存字节数与成员c所占字节数相等C)程序段:data.a=5;printf("%f\n",data.c);输出结果为5.000000D)data可以作为函数的实参 (39)下列语句或语句组中,能正确进行字符串赋值的是()。
A)char*sp;*sp="right!
"; B)chars[10];s="right!
"; C)chars[10];*s="right"; D)char*sp="right!
"; (40)设有如下说明:typedefstructST{longa;intb;charc[2];}NEW;则下列叙述中正确的是()。
A)以上的说明形式非法C)NEW是一个结构体类型名 B)ST是一个结构体类型D)NEW是一个结构体变量 (41)下列程序的输出结果是()。
main(){inta=1,b;for(b=1;b<=10;b++){if(a>=8)break; 二级C语言程序设计试卷第7页(共13页) if(a%2==1){a+=5;continue;}a=3;}printf("%d\n",b);}A)3C)
5 B)4D)
6 (42)下列程序的输出结果是()。
main(){chars[]="159",*p;p=s;printf("%c",*p++);printf("%c",*p++);}A)15C)12 B)16D)59 (43)有下列函数:fun(char*a,char*b){while(*a!
='\0')&&(*b!
='\0')&&(*a==*b)}{a++;b++;}return(*a-*b);}该函数的功能是()。
A)计算a和b所指字符串的长度之差B)将b所指字符串复制到a所指字符串中C)将b所指字符串连接到a所指字符串后面D)比较a和b所指字符串的大小 (44)有下列程序:main(){intnum[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},i,j;for(i=0;i<4;i++){for(j=0;j1234 二级C语言程序设计试卷第8页(共13页) 678111216 则在程序下划线处应填入的是(A)i-1C)i+
1 )。
B)iD)4-i (45)下列程序的输出结果是()。
point(char*p){p+=3;}main(){charb[4]={'a','b','c','d'},*p=b;point(p);printf("%c\n",*p);}A)aC)c B)bD)d (46)程序中若有下列说明和定义语句: charfun(char*); main() {char*s="one",a[5]={0},(*f1)()=fun,ch;… } 下列选项中对fun()函数的正确调用语句是()。
A)(*fl)(a); B)*fl(*s); C)fun(&a); D)ch=*fl(s); (47)有下列结构体说明和变量定义,如图所示,指针p、q、r分别指向此链表中的三个连续结点。
structnode {intdata; structnode*next; }*p,*q,*r; 现要将q所指结点从链表中删除,同时要保持链表的连续,下列不能完成指定操作的 语句是()。
A)p->next=q->next; B)p-next=p->next->next; C)p->next=r; D)p=q->enxt; (48)下列对结构体类型变量
td的定义中,错误的是()。
A)typedefstructaa B)structaa {intn; {intn; 二级C语言程序设计试卷第9页(共13页) floatm;}AA;AAtd;C)struct{intn; floatm;}aa;structaatd; floatm;}td;structaatd;D)struct{intn; floatm;}td; (49)下列与函数fseek(fp,0L,SEEK_SET)有相同作用的是()。
A)feof(fp) B)ftell(fp) C)fgetc(fp) D)rewind(fp) (50)有下列程序: #include voidWriteStr(char*fn,char*str) {FILE*fp; fp=fopen(fn,"w");fputs(str,fp);fclose(fp); } main() {WriteStr("t1.dat","start"); WriteStr("t1.dat","end"); } 程序运行后,文件t1.dat中的内容是()。
A)start B)end C)startend D)endrt
二、填空题(每空2分,共40分)
(1)某二叉树中度为2的结点有18个,则该二叉树中有【1】个叶子结点。

(2)在面向对象方法中,类的实例称为【2】。

(3)诊断和改正程序中错误的工作通常称为【3】。

(4)在关系数据库中,把数据表示成二维表,每一个二维表称为【4】。

(5)问题处理方案正确而完整的描述称为【5】。

(6)下列程序运行时若从键盘输入:102030
输出结果是【6】。
#includemain(){inti=0,j=0,k=0;scanf("%d%*d%d",&i,&j,&k);printf("%d%d%d\n",i,j,k);} 二级C语言程序设计试卷第10页(共13页)
(7)下列程序运行后的输出结果是【7】。
#defineS(x)4*x*x+1main(){inti=6,j=8;printf("%d\n",S(i+j));}
(8)下列程序运行后的输出结果是【8】。
main(){inta=3,b=4,c=5,t=99;if(b(9)下列程序运行后的输出结果是【9】。
main(){inta,b,c;a=10;b=20;c=(a%b<1)‖(a/b>1);printf("%d%d%d\n",a,b,c);} (10)下列程序运行后的输出结果是【10】。
main(){charc1,c2;for(c1='0',c2='9';c1
则输出结果是【11】。
#includemain(){chara,b;a=getchar();scanf("%d",&b);a=a-'A'+'0';b=b*2;printf("%c%c\n",a,b);} (12)下列程序中,fun()函数的功能是求3行4列二维数组每行元素中的最大值。
请填空。
voidfun(int,int,int(*)[4],int*);main(){inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;fun(3,4,a,b);for(i=0;i<3;i+)printf("%4d",b[i]); 二级C语言程序设计试卷第11页(共13页) printf("\n");}voidfun(intm,intn,intar[][4],int*br){inti,j,x; for(i=0;ivoidswap(intx,inty){intt;t=x;x=y;y=t;printf("%d%d",x,y);}main(){inta=3,b=4;swap(a,b);printf("%d%d\n",a,b);} (14)下列程序运行后的结果是【14】。
#includevoidfun(char*s,intp,intk){inti;for(i=p;i#includemain(){charch[]="abc",x[3][4];inti;for(i=0;i<3;i++)strcpy(x[i],ch);for(i=0;i<3;i++)printf("%s",&x[i][i]);printf("\n");} (16)下列程序运行后的输出结果是【16】。
fun(inta){intb=0;staticintc=3;b++;c++;return(a+b+c); 二级C语言程序设计试卷第12页(共13页) }main(){inti,a=5; for(i=0;i<3;i++)printf("%d%d",i,fun(a));printf("\n");} (17)下列程序运行后的输出结果是【17】。
stuctNODE{intk;structNODE*link;};main(){structNODEm[5],*p=m,*q=m+4;inti=0;while(p!
=q){p->k=++i;p++;q->k=i++;q--;}q->k=i;for(i=0;i<5;i++)printf("%d",m[i].k);printf("\n");} (18)下列程序中huiwen()函数的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串:yes!
,否则函数返回字符串:no!
,并在主函数中输出。
所谓回文即正向与反向的拼写都一样,例如:adgda。
请填空。
#includechar*huiwen(char*str){char*p1,*p2;inti,t=0;p1=str;p2=【18】;for(i=0);i<=strlen(str)/2;i++)if(*p1++!
=*p2--){t=1;break;}if(【19】)return("yes!
");elsereturn("no!
");}main(){charstr[50];printf("Input:");scanf("%s",str);printf("%s\n",【20】);} 二级C语言程序设计试卷第13页(共13页)

标签: #c2是不是比c1好考 #语言 #程序员 #素数 #很深 #不是很 #彩超 #轴对称