#include<stdio.h> main() {FILE *fp inta 引脚=4,b=4,c=6,k,n; fp=fopen("test.dat" "w&q

BthisisaCthisisacat
时间: 3:34:52
&&&&&&&&&&&&2012年3月全国计算机等级考试二级C语言真题(考试时间90分钟,满分100分)一、选择题1、下列叙述中正确的是:&&&&&&&&A、循环队列是队列的一种顺序存储结构B、循环队列是队列的一种链式存储结构C、循环队列是非线性结构D、循环队列是一直逻辑结构2、下列叙述中正确的是&&&&&&&&A、栈是一种先进先出的线性表B、队列是一种后进先出的线性表c、栈和队列都是非线性结构D、以上三种说法都不对3、一棵二叉树共有25个节点,其中5个时子节点,那么度为1&&&&&&&&的节点数为A、44、的是A、内模式5、B、外模式C、概念模式D、逻辑模式B、6C、10D、16&&&&&&&&在下列模式中,能够给出数据库物理存储结构与物理存取方法&&&&&&&&在满足实体完整性约束的条件下A、一个关系中可以没有候选关键词&&&&&&&&&&&&B、一个关系中只能有一个候选关键词C、一个关系中必须有多个候选关键词D、一个关系中应该有一个或者多个候选关键词6、有三个关系R、S和T如下:RABCa12&&&&&&&&b21c31&&&&&&&&则由关系R和S得到关系T的操作是A、自然连接7、B、并C、差D、交&&&&&&&&软件生命周期中的活动不包括B、市场调研需求分析C、软件测试D、&&&&&&&&A、软件维护&&&&&&&&8、&&&&&&&&下面不属于需求分析阶段任务的是B、确定软件系统的系统的&&&&&&&&A、确定软件系统的功能需求系能需求B、制定软件集成测试计划9、&&&&&&&&D、需求规格说明书审评&&&&&&&&在黑盒测试方式中,设计测试用例的主要根据是A、程序外部功能B、程序内部逻辑&&&&&&&&&&&&C、程序数据结构10、在软件设计中不使用的工具是A、系统结构图C、PAD图&&&&&&&&D、程序流程图&&&&&&&&B、程序流程图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、设有以下语句Charch1,ch2,scanf(”%c%c”,ch1,ch2);若要为变量ch1和ch2分别输入字符A和B,正确的输入形式应该是A、A和B之间用逗号间隔隔符C、A和B之间可以用回车间隔16、以下选项中非法的字符常量是A、’\102’17、有以下程序#includesthio.hMain(){IntA=0,B=0,C=0;C=(A-=A-5);(A=B,B+=4);Printf(“%d,%d,%d\n”,A,B,C)}程序运行后输出的结果是A0,4,5B4,4,5C4,4,4D0,0,0B、’\65’C、’\xff’D、’\019’D、A和B之间用空格间隔B、A和B之间不能有任何间&&&&&&&&18、设变量均已正确定义并且赋值,以下与其他三组输出结构不同的&&&&&&&&&&&&一组语句是A、x++;printf((“%d\n”,x);C、++x;printf((“%d\n”,x);B、n=++x;printf((“%d\n”,n);D、n=x++;printf((“%d\n”,n);&&&&&&&&19、以下选项中,能表示逻辑值“假”的是A1B0.0、有以下程序#includesthio.hMain(){inta;Scanf(“%d”,a);If(a++9)printf((“%d\n”,a);Elseprintf((“%d\n”,a--);}程序运行时键盘输入9回车,则输出的结构是A、1021、有以下程序#includesthio.hMain(){ints=0,n;For(n=0;n3;n++){switch(s)B11C9D8C0D&&&&&&&&&&&&{case0;Case1;s+=1;Case2;s+=2;Case3;s+3;Case4;s+=4;}printf((“%d\n”,s);}}程序运行后的结果是A1,2,4B1,3,6C3,10,14D3,6,10&&&&&&&&22、若k是int类型变量,且有以下for语句For(k=-1;k0;k++)printf(****\n”);下面关于语句执行情况的叙述中正确的是A、循环体执行一次C、循环体一次也不执行23、有以下程序#includesthio.hMain(){charA,B,C;B=’1’;C=’A’For(A=0;A6;A++)B、循环体执行两次D、构成无限循环&&&&&&&&&&&&{if(A%2)putchar(B+A);Elseputchar(C+A);}}程序运行后输出的结果是A1B3D5FBABCDFECA2C4E6D123456&&&&&&&&24、设有如下定义语句Intm[]={2,4,6,8},*k=m;以下选项中,表达式的值为6的是A*(k+2)Bk+2C*k+2D*k+=2&&&&&&&&25、fun函数的功能是:通过键盘输入给x所指的整型数组所有元素赋值。在下列划线处应该填写的是#includesthio.h#defineN5Viodfun(intx[N]){For(m=N-1;m0;m--)scanf(“%d\n”,}Ax[++m]26、若有函数Viodfun(doublea[],int*n){………}Bx[m+1]Cx+(m++)Dx+m);&&&&&&&&&&&&以下叙述中正确的是A、调用fun函数时只有数组执行按值传送,其他实参和形参之间执行按地址传送B、C、D、形参a和n都是指针变量&&&&&&&&形参a是一个数组名,n是指针变量&&&&&&&&调用fun函数时将把double型实参数组元素一一对应地传送给形参a数组&&&&&&&&27、有以下程序#includesthio.hMain(){inta,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-mC、k=1,m=8;28、以下选项中有语法错误的是Achar*str[]={“guest”};B、charstr[10]={“guest”};D、charB、b=*p1+*p2+6D、p1=k,p2=m;&&&&&&&&C、char*str[3]*str[1]={“guest”};&&&&&&&&&&&&str[3][10];str[1]={“guest”};29、avg函数的功能是求整型数组中的前若干个元素的平均值,设数组元素个数最多不超过10,则下列函数说明语句错误的是A、intavg(int*a,intn);C、intavg(inta,intn);30、有以下函数#includesthio.h#includestring.hmain(){printf(“%d\n”,strren”ATS\n012\1”));}程序运行后的输出结果是A331、有以下函数#includesthio.hmain(){chara[20],b[20],c[20];scanf(”%s%s”,a,b);get(c);printf(”%s%s\n”,a,b,c);}程序运行时从第一行开始输入thisisacat!回车,则输出结果是Athisisacat!BthisisaCthisisacat!Dthisisacat!B8C4D9B、intavg(inta[10],intn);&&&&&&&&D、intavg(inta[],intn);&&&&&&&&&&&&32、有以下函数#includesthio.hviodfun(charc){if(c’x’)fun(c-1);printf(“%c”,c);}main(){fun”z”;}程序运行输出结果是Axyz33、有以下函数#includesthio.hviodfunc(intn){for(i=0;i=n;i++)printf(“*”);printf(“#”);main(){func(3);printf(“”);func(4);printf(“\n”);}程序运行输出结果是A****#***#C**#*****#34、有以下函数B***#*****#D****#*****#BwxyzCzyxwDzyx&&&&&&&&&&&&#includesthio.hviodfun(int*s){staicintj=0;do{s[j]=s[j]+s[j+1];}wihle(++j2);}main(){intk,a[10]={1,2,3,4,5};for(K+1;k3;k++)fun(a);for(K+1;k5;k++)printf(“%d”,a[k]);&&&&&&&&printf(“\n”);}程序运行输出结果是A1234535、有以下函数#includesthio.h#defineS(x)(x)*x*2BD35745&&&&&&&&main(){intk=5,j=2;printf(“%d,”,S[k+j]);printf(“%d\n”,S(k-j)));}程序运行输出结果是A98,18B39,11C39,18D98,11&&&&&&&&&&&&36、有以下函数#includesthio.hViodexch(intt[]){t[0]=t[5];}{intx[10]={1,2,3,4,5,6,7,8,9,10},i=0;While(i=4){exch(x[i])’i++;}for(i=0;i5;i++)printf(“%d”,x[i]);&&&&&&&&printf(“\n”);}程序运行输出结果是A、设有以下程序段StructMP3{charname[20];CF}std,*ptr=若要引用结构体变量std中的color成员,写法错误的是Astd.colorBptr-colorCstd-colorD(*ptr).colorBD678910&&&&&&&&38、有以下函数#includesthio.h&&&&&&&&&&&&structstu{charname[10];};viodfun(structstu*p){printf(“%s\n”,p-name);}mian(){structstux[3]={{01,”zhang”,20},{02,”wang”,19},{03,”zhao”,18}};fun(x+2);}程序运行输出结果是Azhang39、有以下函数#includesthio.hmian(){inta=12,c;c=(a2)1;printf(“%d\n”,c):}程序运行输出结果是A3B50C2D96BzhaoCwangD19&&&&&&&&40、以下函数不能用于向文件写入数据的是AftellBfwriteCfputcDfprintf&&&&&&&&&&&&二、填空题1、将长度为n的顺序存储在线性表中删除一个元素,最坏情况下需要移动表中的元素个数为()。&&&&&&&&2、设循环队列的存储空间为Q(1:3),初始状态为front=rear=30。现经过一系列入队与退队运算后,front=16,rear=15,则循环队列中有()个元素。&&&&&&&&3、数据库管理系统提供的数据语言中,负责数据的增、删、改和查询的是()。)。&&&&&&&&4、在将E-R图转换到关系模式时,实体和联系都可以表示成(&&&&&&&&5、常见的软件工程方法有结构化方法和面向对象方法,类、继承以及多态性等概念属于()。&&&&&&&&6、设变量a和b已定义为int类型,若要通过scanf(”a=%d,b=%d”,a,b);语句分别给a和b输入1和2,则正确的数据输入内容是(7、以下程序的输出结果是()。)。&&&&&&&&#includesthio.hmian(){inta=37;a+=a%=9;printf(“%d\n”,a);}8、设a、b、c都是整型变量,如果a的值为1,b的值为2,则执行c=a++||b++;语句后,变量b的值是().&&&&&&&&&&&&9、有以下程序段s=1.0;for(k=1,k=n;k++)s=s+1.0(k*(k+1));&&&&&&&&printf(“%f\n”,s);请填空,使以下程序段的功能与上面的程序段完全相同。s=1.0;k=1;while()&&&&&&&&{s=s+1.0(k*(k+1));k=k+1;}printf(“%f\n”,s);&&&&&&&&10、以下程序段的输出结果是(#includesthio.hmian(){chara,b;&&&&&&&&)&&&&&&&&for(a=0;a20;a+=7){b=a%10;putchar(b+’0’);}}&&&&&&&&11、以下程序段的输出结果是(#includesthio.hmian()&&&&&&&&)&&&&&&&&{char*ch[4]={“red”,”green”,”blue”};Inti=0;&&&&&&&&&&&&While(ch[i]);{putchar(ch[i][0];i++;}}&&&&&&&&12、有以下程序#includesthio.hmian(){intarr[]={1,3,5,7,2,4,6,8{,i,Scanf(“%d”,start);For(i=0,i3,i++)printf(“%d”,arr[(start+i)%8]);}若在程序运行时输入整数10回车,则输出结果为()。&&&&&&&&13、以下程序的功能是输出a数组中的所有字符串,请填空#includesthio.hmian(){char*a[]={“ABC”,”DEFGH”,”IJ”,”KLMNOP”};Inti=0;For(;i4;i++)printf(“%s\n”,});&&&&&&&&&&&&14、以下程序的输出结果是(#includesthio.h#includesthio.h#includestring.hmian(){char*p,*q,*r;&&&&&&&&)。&&&&&&&&p=q=r=(char*)malloc(sizeof(char)*20);strcpy(p,”attaboy,welcome!”);printf(“%c%c%c\n”,p[11],q[3],r[4]);free(p);}&&&&&&&&15、设文件test.txt中原已写入字符串Begin,执行以下程序后,文件中的内容为()。#includestring.hmian(){file*fp=fopen(“test.txt”,”w+”);fputs(“test”,fp);fclose(fp);}&&&&&&&&&&&&一、选择题1-5、ADDAD6-10、CBCADDADCA21-25、CACAD26-30、CADCBDCBDA二、填空题1、n-15、面向对象方法2、293、数据操纵语言7、24、关系8、29、k《=n31-35、CADDC36-40、11-15、ABBCB16-20、&&&&&&&&6、a=1,b=2&&&&&&&&10、074&&&&&&&&11、rgb&&&&&&&&12、57215、test&&&&&&&&13、a〔i〕&&&&&&&&14、cab&&&&&&&&2011年9月全国计算机等级考试二级笔试试卷C语言程序设计&&&&&&&&(考试时间90分钟,满分100分)一、选择题((1)-(10)、(21)-(40)每题2分,(11)-(20)每题1分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。请将正确选项填涂在答题卡相应位置上答在试卷上不得分。(1)下列叙述中正确的是()。A)算法就是程序B)设计算法时只需要考&&&&&&&&&&&&虑数据结构的设计C)设计算法时只需要考虑结果的可靠性(2)下列关于线性链表的叙述中,正确的是(D)以上三种说法都不对)。&&&&&&&&A)各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致B)各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续C)进行插入与删除时,不需要移动表中的元素D)以上三种说法都不对(3)下列关于二叉树的叙述中,正确的是(A)叶子结点总是比度为2的结点少一个B)叶子结点总是比度为2的结点多一个c)叶子结点数是度为2的结点数的两倍D)度为2的结点数是度为1的结点数的两倍(4)软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是(A)学生成绩管理系统B)C语言编译程序C)UNIX操作系统D)数据库管理系统(5)某系统总体结构图如下图所示:)。)。&&&&&&&&&&&&该系统总体结构图的深度是(A)7B)6C)3D)2&&&&&&&&)。&&&&&&&&(6)程序调试的任务是()。A)设计测试用例B)验证程序的正确性C)发现程序中的错误&&&&&&&&D)诊断和改正程序中的错误(7)下列关于数据库设计的叙述中,正确的是(A)在需求分析阶段建立数据字典典C)在逻辑设计阶段建立数据字典典(8)数据库系统的三级模式不包括(A)概念模式B)内模式C)外模式D)在物理设计阶段建立数据字)。D)数据模式)。&&&&&&&&B)在概念设计阶段建立数据字&&&&&&&&(9)有三个关系R、S利T如下:&&&&&&&&则由关系R和s得到关系T的操作是(A)自然连接B)差C)交D)并&&&&&&&&)。&&&&&&&&(10)下列选项中属于面向对象设计方法主要特征的是(A)继承B)自顶向下C)模块化)。D)逐步求精&&&&&&&&)。&&&&&&&&(11)以下叙述中错误的是(&&&&&&&&&&&&A)C语言编写的函数源程序,其文件名后缀可以是.CB)C语言编写的函数都可以作为一个独立的源程序文件C)C语言编写的每个函数都可以进行独立的编译并执行D)一个C语言程序只能有一个主函数(12)以下选项中关于程序模块化的叙述错误的是()。&&&&&&&&A)把程序分成若干相对独立的模块,可便于编码和调试B)把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块c)可采用自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序D)可采用自项向下、逐步细化的设计方法把若干独立模块组装成所要求的程序(13)以下选项中关于c语言常量的叙述错误的是()。&&&&&&&&A)所谓常量,是指在程序运行过程中,其值不能被改变的量B)常量分为整型常量、实型常量、字符常量和字符串常量c)常量可分为数值型常量和非数值型常量D)经常被使用的变量可以定义成常量(14)若有定义语句:inta=10;doubleb=3.14;,则表达式A+a+b值的类型是(A)char)。B)intC)doubleD)float&&&&&&&&(15)若有定义语句:intx=12,3=8,z;在其后执行语句z=0.9+x/y;,,则Z的值为()。&&&&&&&&&&&&A)1.9&&&&&&&&B)1&&&&&&&&C)2&&&&&&&&D)2.4&&&&&&&&(16)若有定义:inta,b;,通过语句scanf(%d;%d,a,b);,能把整数3赋给变量a,5赋给变量b的输入数据是(A)35B)3,5C)3;5D)35)。&&&&&&&&(17)若有定义语句:intk1=10,k2=20;,执行表达式(k1=k1k2)(k2=k2k1)后,k1和k2的值分别为(A)0和1B)0和20C)10和1D)10和20)。&&&&&&&&(18)有以下程序#includestdio.hmain(){inta=1,b=0;if(-a)b++;elseif(a=0)b+=2:elseb+=3:printf(%d\n,b);)程序运行后的输出结果是(A)0B)1C)2D)3)。)。&&&&&&&&(19)下列条件语句中,输出结果与其他语句不同的是(A)if(a)printf(%d\-n,x);elseprintf(%d\n,y);&&&&&&&&B)if(a—0)printf(%d\n,y);elseprintf(%d\n,x);C)if(a!=0)p由tf(%d\n,x);elseprintf(%d\n,y);&&&&&&&&&&&&D)if(a=0)printf(%d\n,x);elseprintf(%d\n,y);(20)有以下程序#includestdio.hmain(){inta=7;while(a--);printf(%d\n,a);)程序运行后的输出结果是(A)-1B)0C)1D)7)。&&&&&&&&(21)以下不能输出字符A的语句是(注:字符A的ASCIl码值为65,字符a的ASCIl码值为97)A)printf(%c\n,a-32);c)printf(%c\n,65);B)printf(%d\n,A);D)print-f(%c\n,B-1);&&&&&&&&(22)有以下程序(注:字符a的ASCIl码值为97)#includestdio.hmain(){char*s={abe);do{printf(”%d”,+s%10);++s;)while(+s);)&&&&&&&&&&&&程序运行后的输出结果是(A)abcB)789C)7890&&&&&&&&)。D)979899)。&&&&&&&&(23)若有定义语句:doublea,+p=&a;以下叙述中错误的是(A)定义语句中的*号是一个间址运算符B)定义语句中的*号只是一个说明符C)定义语句中的P只能存放double类型变量的地址D)定义语句中,*p=a把变量a的地址作为初值赋给指针变量P(24)有以下程序#includestdio.hdoublef(doublex);main(){doublea_0;inti;for(i=0;i30;i+=10)a+--f((double)i);printf(%5.0f\n,a);}doublef(doublex)(returnX+x+1;)程序运行后的输出结果是(A)503B)401C)500)。D)1404&&&&&&&&(25)若有定义语句:intyear=2009,*p=year;,以下不能使变量year中的值增至2010的语句是(A)*p+=1;B)(*p)++;)。C)++(*p);D)*p++;&&&&&&&&&&&&(26)以下定义数组的语句中错误的是(A)intnum[]={1,2,3,4,5,6};4,5,6};&&&&&&&&)。B)intnum[][3]={{1,2},3,&&&&&&&&C)intnum[2][4]=({1,2,,{3,4},{5,6});2,3,4,5,6};(27)有以下程序#includestdi0.hvoidfun(int+p){printf(”%d\n”,p[5]);}main();&&&&&&&&D)intnum[][4]={1,&&&&&&&&{inta[10]={1,2,3,4,5,6,7,8,9,10};fun(a[3]);)程序运行后的输出结果是(A)5B)6C)8D)9)。&&&&&&&&(28)有以下程序#includestdio.h#defineN4voidfun(inta[][N],imb[]){inti;for(i=0;iN;i++)b[i]=a[i][i]-a[i][N-1-i];)voidmain()&&&&&&&&&&&&{intx[N][N]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}},y[N],i;fun(x,y);for(i=0;iN;i++)printf(”%d,,y[i]);printf(\n);”}程序运行后的输出结果是(A)-12,-3,0,0,-3,-3,-3(29)有以下函数intfun(char*x,char*y){intn=0;while((*x=*y)*x!=\0){x++;y++;n++;}returnn:)函数的功能是()。A)查找x和y所指字符串中是否有\0B)统计x和y所指字符串中最前面连续相同的字符个数c)将y所指字符串赋给X所指存储空间D)统计x和y所指字符串中相同的字符个数(30)若有定义语句:char*s1=OK,*s2=ok;,以下选项中,能够输出0K的语句是()。B)if(strcmp(s1,s2)!=0)puts(s2);)。C)0,1,2,3,D)-3,&&&&&&&&B)-3,-1,1,3,&&&&&&&&A)if(strcmp(s1,s2)=0)puts(s1);&&&&&&&&&&&&C)if(strcmp(s1,s2)=1)puts(s1,);&&&&&&&&D)if(strcmp(s1,s2)!=0)puts(s1);&&&&&&&&(31)以下程序的主函数中调用了在其前面定义的fun函数#includestdio.h{main(){doublea[15],k;k=fun(a);}则以下选项中错误的fun函数首部是(A)doublefun(doublea[15])C)doublefun(doublea[])(32)有以下程序#includestdio.h#includestring.hmain(){chara[5][10]={china,beijing,you,tiananmen,welcome”);inti,j;chart[10];for(i=0;i4;i++)for(j=i+1;j5;j++)if(strcmp(a[i],a[j])O){strcpy(t,a[i]);strcpy(a[i],a[j]);strcpy(a[j],t);}puts(a[3]);)。&&&&&&&&B)doublefun(double*a)D)doublefun(doublea)&&&&&&&&&&&&)程序运行后的输出结果是(A)BeijingB)china)。D)tiananmen&&&&&&&&C)welcome&&&&&&&&(33)有以下程序#includestdio.hintf(intm){staticintn=0;n+=m:returnn;)main(){intn=0;printf(%d,f(++n));printf(%d\n,f(n++));)程序运行后的输出结果是(A)1,2B)1,1C)2,3)。D)3,3&&&&&&&&(34)有以下程序#includestdio.hmain(){charch[3][5]={AAAA,BBB,CC);printf(%s\n,ch[1]);&&&&&&&&&&&&}程序运行后的输出结果是(A)AAAAB)CC)。D)BBB&&&&&&&&C)BBBCC&&&&&&&&(35)有以下程序#includestdio.h#includestring.hvoidfun(char*w,intm){chars,*p1,*p2;p1=w;p2=w+m-1;while(p1p2){s=*p1;*p1=p2;*p2=s;p1++;p2--;))main(){chara[]=123456;fun(a,strlen(a));puts(a);}程序运行后的输出结果是(A)6611)C)3456&&&&&&&&(36)有以下程序#includestdio.h#includestring.htypedefstruct{charname[9];charsex;intscore[2];}STU;STUf(STUa)&&&&&&&&&&&&{STUb={Zhao,m,85,90};inti:strcpy(a.name,b.name);a.sex=b.sex;for(i=0;i2;i++)a.score[i]=b.score[i];returna;}main()fSTUc={Qian,f,95,92},d;d=f(c);printf(%s,%c,%d,%d,d.,nalne,sex,score[0],score[1]);d.d.d.printf(%s,%c,%d,%d,c.,nanle,Sex,score[0],score[1]);c.c.c.}程序运行后的输出结果是()。B)Zhao,m,85,90,&&&&&&&&A)Zhao,m,85,90,Qian,f,95,92Zha0,m,85,90C)Qian,f,95,Qian,f,95,92,)有以下程序#includestdio.hmain(){structnode{intn;stmctnode+next;}*p;&&&&&&&&D)Qian,f,95,Zhao,m,92,&&&&&&&&&&&&structnodex[31={(2,x+l},{4,x+2),{6,NULL}};p=x;printff%d,,p-n);printf(%dkn,p-next-n);}程序运行后的输出结果是(A)2,3B)2,4C)3,4)。D)4,6&&&&&&&&(38)有以下程序#includestdio.hmain(){inta=2,b;b=a2:printr(%d\n,b);)程序运行后的输出结果是(A)2B)4C)6D)8)。)。&&&&&&&&(39)以下选项中叙述错误的是(&&&&&&&&A)C程序函数中定义的赋有初值的静态变量,每调用一次函数,赋一次初值B)在C程序的同一函数中,各复合语句内可以定义变量,其作用域仅限本复合语句内C)C程序函数中定义的自动变量,系统不自动赋确定的初值D)C程序函数的形参不可以说明为static型变量&&&&&&&&&&&&(40)有以下程序#includestdio.hmain(){FILE*fp,intk,n,j,a[6]=1,2,3,4,5,6};fp=fopen(d2.dat,w);for(i=0;i6;i++)fprintf(fp,%d\n,a[i]);fclose(fp);fp=fopen(d2.dat,r);for(i=0;i3;i++)fscanf(fp,%d%d,k,n);fc|ose(fp);printf(%d,%d\n,k,n);)程序运行后的输出结果是(A)1,2B)3,4C)5,6)。D)123.456&&&&&&&&二、填空题(每空2分,共30分)请将每空的正确答案写在答题卡【1】至【15】序号的横线上,答在试卷上不得分。(1)数据结构分为线性结构与非线性结构,带链的栈属于【1】。&&&&&&&&(2)在长度为n的顺序存储的线性表中插入一个元素,最坏情况下需要移动表中【2】个元素。(3)常见的软件开发方法有结构化方法和面向对象方法。对某应用系&&&&&&&&&&&&统经过需求分析建立数据流图(DFD),则应采用【3】方法。(4)数据库系统的核心是【4】。(5)在进行关系数据库的逻辑设计时,E—R图中的属性常被转换为关系中的属性,联系通常被转换为【5】。(6)若程序中已给整型变量a和b赋值10和20,请写出按以下格式输出a、值的语句【6】。b****a=10.b=20****(7)以下程序运行后的输出结果是【7】。#includestdio.hmain()inta=37;a%=9;printf(%d\n,a);)(8)以下程序运行后的输出结果是【8】。#includestdio.hmain(){inti,j;for(i=6;i3;i--)j=i;printf(”%d%d\n”,i,j);}(9)以下程序运行后的输出结果是【9】。#includestdio.hmain()&&&&&&&&&&&&{inti,n[]={0,0,0,0,0);for(i=1;i=2;i++){n[i]=n[i-1]*3+1;printf(%d,n[i]);}printf(\n);}(10)以下程序运行后的输出结果是【10】。#includestdio.hmain(){chara;for(a=0;a15;a+=5){putchar(a+A);)printf(\n);)(11)以下程序运行后的输出结果是【11】。#includestdio.hvoidfun(intx){if(x/5o)fun(x/5);prinff(%dt,x);)main()&&&&&&&&&&&&{fun(11);printf(\n);}(12)有以下程序#includestdio.hmain(){intc[3]={0},k,i;while((k=getchar())!=\n)c[k-A]++;for(i=0;i3;i++)printf(”%d”,c[i]);printf(\n);&&&&&&&&若程序运行时从键盘输入ABcAcC回车,则输出结果为【12】。(13)以下程序运行后的输出结果是【13】。#includestdio.hmain(){intn[2],i,j;for(i=0;i2;i++)n[i]=0;for(i=0;i2;i++)for(j=0;j2;j++)n[j]=n[i]+1;printf(%d\n,n[1]);}(14)以下程序调用fun函数把x中的值插入到a数组下标为k的数组元素中。主函数中,n存放a数组中数据的&&&&&&&&&&&&个数。请填空。#includestdio.hvoidfun(ints[],int*n,intk,intx){inti;for(i=*n-1;i=k;i--)s[【14】]=s[i];s[k]=x;*n=*n+【15】}main(){inta[20]={1,2,3,4,5,6,7,8,9,10,11},i,x=0,k=6,n=11;fun(a,n,k,X);for(i=0;in;i++)printf(%4d,a[i]);printf(\n);};&&&&&&&&&&&&2011年下半年计算机二级C语言上机试题全真试卷一、填空题:函数fun的功能是:从三个形参a,b,c中找出中间的那个数,作为函数值返回。例如,当a=3,b=5,c=4时,中数为4。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下BLANK1.C中。&&&&&&&&&&&&不得增行或删行,也不得更改程序的结构!给定源程序:#includeintfun(inta,intb,intc){/**********found**********/t=(ab)?(bc?b:(ac?c:___1___)):((ac)?___2___:((bc)?c:___3___));}main(){inta1=3,a2=5,a3=4,r;r=fun(a1,a2,a3);printf(\nThemiddlenumberis:%d\n,r);}&&&&&&&&&&&&解题答案:#includeintfun(inta,intb,intc){/**********found**********/t=(ab)?(bc?b:(ac?c:a)):((ac)?a:((bc)?c:b));******************************************二、改错题:给定程序MODI1.C中函数fun的功能是:首先将大写字母转换为对应小写字母;若小写字母为a~u,则将其转换为其后的第5个字母;若小写字母为v~z,使其值减21。转换后的小写字母作为函数值返回。例如,若形参是字母A,则转换为小写字母f;若形参是字母W,则转换为小写字母b。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!给定源程序:&&&&&&&&&&&&#include#includecharfun(charc){if(c=Ac=Z)/**************found**************/C=C+32;if(c=ac=u)/**************found**************/c=c-5;elseif(c=vc=z)c=c-21;}main(){charc1,c2;&&&&&&&&&&&&printf(\nEnteraletter(A-Z):);c1=getchar();if(isupper(c1)){c2=fun(c1);printf(\n\nTheletter\%c\changeto\%c\\n,c1,c2);}elseprintf(\nEnter(A-Z)!\n);}解题答案:/**************found**************/c=c+32;/**************found**************/c=c+5;******************************************三、程序题:请编写函数fun,其功能是:计算并输出例如,在主函数中从键盘给n输入20后,输出为:s=534.188884。&&&&&&&&&&&&注意:要求n的值大于1但不大于100。部分源程序在文件PROG1.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。给定源程序:#include#includedoublefun(intn){}main(){printf(\n\nInputn:);scanf(%d,n);s=fun(n);printf(\n\ns=%f\n\n,s);&&&&&&&&&&&&NONO();}NONO(){/*请在此函数内打开文件,输入测试数据,调用fun函数,输出数据,关闭文件。*/FILE*rf,*intn,i;rf=fopen(in.dat,r);wf=fopen(out.dat,w);for(i=0;i10;i++){fscanf(rf,%d,n);s=fun(n);fprintf(wf,%lf\n,s);}fclose(rf);fclose(wf);}参考答案:&&&&&&&&&&&&doublefun(intn){doublefac=1.0;doublesum=1.0;for(i=2;i=n;i++){fac+=sqrt(i);sum+=}}&&&&&&&&2011年3月计算机等级考试二级C语言笔试一、选择&&&&&&&&&&&&(3)某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第1层)A)3B)4C)6D)7(4)在软件开发中,需求分析阶段产生的主要文档是A)软件集成测试计划B)软件详细设计说明书C)用户手册D)软件需求规格说明书(5)结构化程序所要求的基本结构不包括A)顺序结构B)GOTO跳转C)选择(分支)结构D)重复(循环)结构&&&&&&&&(1)下列关于栈叙述正确的是A)栈顶元素最先能被删除B)栈顶元素最后才能被删除C)栈底元素永远不能被删除D)以上三种说法都不对(2)下列叙述中正确的是&&&&&&&&&&&&A)有一个以上根结点的数据结构不一定是非线性结构B)只有一个根结点的数据结构不一定是线性结构C)循环链表是非线性结构D)双向链表是非线性结构(6)下面描述中错误的是A)系统总体结构图支持软件系统的详细设计B)软件设计是将软件需求转换为软件表示的过程C)数据结构与数据库设计是软件设计的任务之一D)PAD图是软件详细设计的表示工具(7)负责数据库中查询操作的数据库语言是A)数据定义语言B)数据管理语言C)数据操纵语言D)数据控制语言(8)一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师和课程间的联系是&&&&&&&&&&&&A)1:1联系B)1:m联系C)m:1联系D)m:n联系(9)有三个关系R、S和T如下:&&&&&&&&则由关系R和S得到关系T的操作是A)自然连接B)交C)除D)并(10)定义无符号整数类为UInt,下面可以作为类UInt实例化值的是A)-369B)369C)0.369D)整数集合{1,2,3,4,5}(11)计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是A)C语言程序仅可以编译执行B)C语言程序仅可以解释执行C)C语言程序既可以编译执行又可以解释执行&&&&&&&&&&&&D)以上说法都不对(12)以下叙述中错误的是A)C语言的可执行程序是由一系列机器指令构成的B)用C语言编写的源程序不能直接在计算机上运行C)通过编译得到的二进制目标程序需要连接才可以运行D)在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exe文件(13)以下选项中不能用作C程序合法常量的是A)1,234B)123C)123D)\x7G(14)以下选项中可用作C程序合法实数的是A).1e0B)3.0e0.2C)E9D)9.12E(15)若有定义语句:inta=3,b=2,c=1;,以下选项中错误的赋值表达式是A)a=(b=4)=3;B)a=b=c+1;&&&&&&&&&&&&C)a=(b=4)+c;D)a=1+(b=c=4);(16)有以下程序段charname[20];scanf(name=%snum=%d,num);当执行上述程序段,并从键盘输入:name=Lilinum=1001回车后,name的值为A)LiliB)name=LiliC)Lilinum=D)name=Lilinum=1001(17)if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是A)必须是逻辑值B)必须是整数值C)必须是正数D)可以是任意合法的数值(18)有以下程序&&&&&&&&&&&&#includemain(){intx=011;printf(%d\n,++x);}程序运行后的输出结果是A)12B)11C)10D)9(19)有以下程序#includemain(){scanf(%d,s);while(s0){switch(s){case1:printf(%d,s+5);&&&&&&&&&&&&case2:printf(%d,s+4);case3:printf(%d,s+3);default:printf(%d,s+1);}scanf(%d,s);}}运行时,若输入123450回车,则输出结果是A)656C)66(20)有以下程序段inti,n;for(i=0;i8;i++){n=rand()%5;switch(n){case1:&&&&&&&&&&&&case3:printf(%d\n,n);case2:case4:printf(%d\n,n);case0:exit(0);}printf(%d\n,n);}以下关于程序段执行情况的叙述,正确的是A)for循环语句固定执行8次B)当产生的随机数n为4时结束循环操作C)当产生的随机数n为1和2时不做任何操作D)当产生的随机数n为0时结束程序运行(21)有以下程序#includemain()&&&&&&&&&&&&{chars[]=012xy\08s34f4w2;inti,n=0;for(i=0;s[i]!=0;i++)if(s[i]=0s[i]=9)n++;printf(%d\n,n);}程序运行后的输出结果是A)0B)3C)7D)8(22)若i和k都是int类型变量,有以下for语句for(i=0,k=-1;k=1;k++)printf(*****\n);下面关于语句执行情况的叙述中正确的是A)循环体执行两次B)循环体执行一次C)循环体一次也不执行D)构成无限循环&&&&&&&&&&&&(23)有以下程序#includemain(){charb,c;b=a;c=A;for(i=0;i6;i++){if(i%2)putchar(i+b);elseputchar(i+c);}printf(\n);}程序运行后的输出结果是A)ABCDEFB)AbCdEfC)aBcDeFD)abcdef(24)设有定义:doublex[10],*p=x;,以下能给数组x下标为6的元素读入数据的正确语句是A)scanf(%f,x[6]);B)scanf(%lf,*(x+6));C)scanf(%lf,p+6);D)scanf(%lf,p[6]);&&&&&&&&&&&&(25)有以下程序(说明:字母A的ASCII码值是65)#includevoidfun(char*s){while(*s){if(*s%2)printf(%c,*s);s++;}}main(){chara[]=BYTE;fun(a);printf(\n);}程序运行后的输出结果是A)BYB)BTC)YTD)YE(26)有以下程序段&&&&&&&&&&&&#includemain(){…while(getchar()!=\n);…}以下叙述中正确的是A)此while语句将无限循环B)getchar()不可以出现在while语句的条件表达式中C)当执行此while语句时,只有按回车键程序才能继续执行D)当执行此while语句时,按任意键程序就能继续执行(27)有以下程序#includemain(){intx=1,y=0;&&&&&&&&&&&&if(!x)y++;elseif(x==0)if(x)y+=2;elsey+=3;printf(%d\n,y);}程序运行后的输出结果是A)3B)2C)1D)0(28)若有定义语句:chars[3][10],(*k)[3],*p;,则以下赋值语句正确的是A)p=s;B)p=k;C)p=s[0];D)k=s;(29)有以下程序#includevoidfun(char*c){while(*c){if(*c=a*c=z)*c=*c-(a-A);&&&&&&&&&&&&c++;}}main(){chars[81];gets(s);fun(s);puts(s):}当执行程序时从键盘上输入HelloBeijing回车,则程序的输出结果是A)hellobeijingB)HelloBeijingC)HELLOBEIJINGD)hELLOBeijing(30)以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。#include#defineN10voidfun(intx[N])&&&&&&&&&&&&{inti=0;while(i=p=}在程序中下划线处应填入的是A)x+iB)x[i+1]C)x+(i++)D)x[++i](31)有以下程序#includemain(){chara[30],b[30];scanf(%s,a);gets(b);printf(%s\n%s\n,a,b);}程序运行时若输入:&&&&&&&&&&&&howareyou?Iamfine回车则输出结果是A)howareyou?B)howIamfineareyou?IamfineC)howareyou?IamfineD)rowareyou?(32)设有如下函数定义intfun(intk){if(k1)return0;elseif(k==1)return1;elsereturnfun(k-1)+1;}若执行调用语句:n=fun(3);,则函数fun总共被调用的次数是A)2B)3C)4D)5(33)有以下程序#include&&&&&&&&&&&&intfun(intx,inty){if(x!=y)return((x+y);2);elsereturn(x);}main(){inta=4,b=5,c=6;printf(%d\n,fun(2*a,fun(b,c)));}程序运行后的输出结果是A)3B)6C)8D)12(34)有以下程序#includeintfun(){staticintx=1;x*=2;&&&&&&&&&&&&}main(){inti,s=1;for(i=1;i=3;i++)s*=fun();printf(%d\n,s);}程序运行后的输出结果是A)0B)10C)30D)64(35)有以下程序#include#defineS(x)4*(x)*x+1main(){intk=5,j=2;printf(%d\n,S(k+j));&&&&&&&&&&&&}程序运行后的输出结果是A)197B)143C)33D)28(36)设有定义:struct{charmark[12];intnum1;doublenum2;}t1,t2;,若变量均已正确赋初值,则以下语句中错误的是A)t1=t2;B)t2.num1=t1.num1;C)t2.mark=t1.D)t2.num2=t1.num2;(37)有以下程序#includestructord{intx,y;}dt[2]={1,2,3,4};main(){structord*p=printf(%d,,++(p-x));printf(%d\n,++(p-y));}&&&&&&&&&&&&程序运行后的输出结果是A)1,2B)4,1C)3,4D)2,3(38)有以下程序#includestructS{inta,b;}data[2]={10,100,20,200};main(){structSp=data[1];printf(%d\n,++(p.a));}程序运行后的输出结果是A)10B)11C)20D)21(39)有以下程序#includemain()&&&&&&&&&&&&{unsignedchara=8,c;c=a3;printf(%d\n,c);}程序运行后的输出结果是A)32B)16C)1D)0(40)设fp已定义,执行语句fp=fopen(file,w);后,以下针对文本文件file操作叙述的选项中正确的是A)写操作结束后可以从头开始读B)只能写不能读C)可以在原有内容后追加写D)可以随意读和写二、填空题(1)有序线性表能进行二分查找的前提是该线性表必须是【1】存储的。(2)一棵二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF,则后序遍历结果为【2】。(3)对软件设计的最小单位(模块或程序单元)进行的测试通常称为【3】测试。&&&&&&&&&&&&(4)实体完整性约束要求关系数据库中元组的【4】属性值不能为空。(5)在关系A(S,SN,D)和关系B(D,CN,NM)中,的主关键字是S,AB的主关键字是D,则称【5】是关系A的外码。(6)以下程序运行后的输出结果是【6】。#includemain(){a=(int)((double)(3/2)+0.5+(int)1.99*2);printf(%d\n,a);}(7)有以下程序#includemain(){scanf(%d,x);&&&&&&&&&&&&if(x15)printf(%d,x-5);if(x10)printf(%d,x);if(x5)printf(%d\n,x+5);}若程序运行时从键盘输入12回车,则输出结果为【7】。(8)有以下程序(说明:字符0的ASCII码值为48)#includemain(){charc1,c2;scanf(%d,c1);c2=c1+9;printf(%c%c\n,c1,c2);}若程序运行时从键盘输入48回车,则输出结果为【8】。(9)有以下函数&&&&&&&&&&&&voidprt(charch,intn){for(i=1;i=n;i++)printf(i%6!=0?%c:%c\n,ch);}&&&&&&&&执行调用语句prt(*,24);后,函数共输出了【9】行*号。(10)以下程序运行后的输出结果是【10】。#includemain(){intx=10,y=20,t=0;if(x==y)t=x;x=y;y=t;printf(%d%d\n,x,y);}(11)己知a所指的数组中有N个元素。函数fun的功能是,将下标k(k0)开始的后续元素全部向前移动一个位置。请填空。voidfun(inta[N],intk){&&&&&&&&&&&&for(i=k;I}(12)有以下程序,请在【12】处填写正确语句,使程序可正常编译运行。#include【12】;main(){doublex,y,(*p)();scanf(%lf%lf,x,y);p=printf(%f\n,(*p)(x,y));}doubleavg(doublea,doubleb){return((a+b)/2);}(13)以下程序运行后的输出结果是【13】。#include&&&&&&&&&&&&main(){inti,n[5]={0};for(i=1;i=4;i++){n[i]==n[i-1]*2+1;printf(%d,n[i]);}printf(\n);}(14)以下程序运行后的输出结果是【14】。#include#include#includemain(){char*p;p=(char*)malloc(sizeof(char)*20);strcpy(p,welcome);for(i=6;i=0;i--)putchar(*(p+i));&&&&&&&&&&&&printf(\n-);free(p);}(15)以下程序运行后的输出结果是【15】。#includemain(){FILE*intx[6]={1,2,3,4,5,6},i;fp=fopen(test.dat,wb);fwrite(x,sizeof(int),3,fp);rewind(fp);fread(x,sizeof(int),3,fp);for(i=0;i6;i++)printf(%d,x[i]);printf(\n);fclose(fp);}&&&&&&&&&&&&2010年9月全国计算机等级考试二级笔试试卷C语言程序设计(附答案)(考试时间90分钟,满分100分)&&&&&&&&一、选择题((1)—(10)(21)—(40)每题2分,、(11)—(20)每题1分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项填涂在答题卡相应位置上,答在试卷上不得分。(1)下列叙述中正确的是A)线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的&&&&&&&&&&&&B)线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构C)线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构D)上述三种说法都不对(2)下列叙述中正确的是A)在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B)在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C)在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化D)上述三种说法都不对(3)软件测试的目的是A)评估软件可靠性B)发现并改正程序中的错误C)改正程序中的错误D)发现程序中的错误(4)下面描述中,不属于软件危机表现的是A)软件过程不规范B)软件开发生产率低C)软件质量难以控制C)软件成本不断提高(5)软件生命周期是指A)软件产品从提出、实现、使用维护到停止使用退役的过程B)软件从需求分析、设计、实现到测试完成的过程C)软件的开发过程&&&&&&&&&&&&D)软件的运行维护过程(6)面向对象方法中,继承是指A)一组对象所具有的相似性质B)一个对象具有另一个对象的性质C)各对象之间的共同性质D)类之间共享属性和操作的机制(7)层次型、网状型和关系型数据库划分原则是A)记录长度B)文件的大小B)联系的复杂程度D)数据之间的联系方式(8)一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员与实体计算机之间的联系是A)一对一B)一对多C)多对多D)多对一(9)数据库设计中反映用户对数据要求的模式是A)内模式B)概念模式C)外模式D)设计模式(10)有三个关系R、S和T如下:&&&&&&&&RT&&&&&&&&SAcB3C1D&&&&&&&&Aab&&&&&&&&B123&&&&&&&&C211&&&&&&&&&&&&Acc&&&&&&&&D4&&&&&&&&则由关系R和S得到关系T的操作是A)自然连接B)交C)投影D)并(11)以下关于结构化程序设计的叙述中正确的是A)一个结构化程序必须同时由顺序、分支、循环三种结构组成B)结构化程序使用goto语句会很便捷C)在C语言中,程序的模块化是利用函数实现的D)由三种基本结构构成的程序只能解决小规模的问题(12)以下关于简单程序设计的步骤和顺序的说法中正确的是A)确定算法后,整理并写出文档,最后进行编码和上机调试B)首先确定数据结构,然后确定算法,再编码,并上机调试,最后整理文档C)先编码和上机调试,在编码过程中确定算法和数据结构,最后整理文档D)先写好文档,再根据文档进行编码和上机调试,最后确定算法和数据结构(13)以下叙述中错误的是A)C程序在运行过程中所有计算都以二进制方式进行B)C程序在运行过程中所有计算都以十进制方式进行C)所有C程序都需要编译链接无误后才能进行&&&&&&&&&&&&D)C程序中整型变量只能存放整数,实型变量只能存放浮点数(14)有以下定义:doublex,y;则以下选项中正确的表达式是A)a%(int)(x-y)B)a=x!=y;C)(a*y)%bD)y=x+y=x(15)以下选项中能表示合法常量的是A)整数:1,200B)实数:1.5E2.0C)字符斜杠:?\?D)字符串:”\007”(16)表达式a+=a-=a=9的值是A)9B)-9C)18D)0(17)若变量已正确定义,在if(W)printf(“%d\n”,k);中,以下不可替代W的是A)ab+cB)ch=getchar()C)a==b+cD)a++(18)有以下程序#includemain(){inta=1,b=0;if(!a)b++;elseif(a==0)if(a)b+=2;elseb+=3;&&&&&&&&&&&&printf(“%d\n”,b);}程序运行后的输出结果是A)0B)1C)2D)3(19)若有定义语句inta,b;则下列选项中没有错误的是A)switch(x%2){case0:a++;case1:b++;default:a++;b++;}B)switch((int)x/2.0){case0:a++;case1:b++;default:a++;b++;}C)switch((int)x%2){case0:a++;case1:b++;default:a++;b++;}D)switch((int)(x)%2){case0.0:a++;&&&&&&&&&&&&case1.0:b++;default:a++;b++;}(20)有以下程序#includemain(){inta=1,b=2;while(a6){b+=a;a+=2;b%=10;}printf(“%d,%d\n”,a,b);}程序运行后的输出结果是A)5,11B)7,1C)7,11D)6,1(21)有以下程序#includemain(){inty=10;while(y--);printf(“y=%d\n”,y);}程序执行后的输出结果是A)y=0B)y=-1C)y=1D)while构成无限循环(22)有以下程序#include&&&&&&&&&&&&main(){chars[]=”rstuv”;printf(“%c\n”,*s+2);}程序运行后的输出结果是A)tuvB)字符t的ASCII值C)tD)出错(23)有以下程序#includestdio.h#includestring.hmain(){charx[]=”STRING”;x[0]=0;x[1]=?\0?;x[2]=?0?;printf(“%d%d\n”,sizeof(x),strlen(x));}程序运行后的输出结果是A)61B)70C)63D)71(24)有以下程序#includeintf(intx);main(){intn=1,m;m=f(f(f(n)));&&&&&&&&&&&&printf(“%d\n”,m);}intf(intx){returnx*2;}程序运行后的输出结果是A)1B)2C)4D)8(25)以下程序段完全正确的是A)int*p;scanf(“%d”,p);B)int*p;scanf(“%d”,p);C)intk,*p=k;scanf(“%d”,p);D)intk,*p;*p=k;scanf(“%d”,p);(26)有定义语句:int*p[4];以下选项中与此语句等价的是A)intp[4];B)int**p;C)int*(p[4]);D)int(*p)[4];(27)下列定义数组的语句中,正确的是A)intN=10;B)#defineN10intx[N];intx[N];C)intx[0..10];D)intx[];(28)若要定义一个具有5个元素的整型数组,以下错误的定义语句是A)inta[5]={0};B)intb[]={0,0,0,0,0};C)intc[2+3];D)inti=5,d[i];(29)有以下程序#includevoidf(int*p);&&&&&&&&&&&&main(){inta[5]={1,2,3,4,5},*r=a;f(r);printf(“%d\n”,*r);}voidf(int*p){p=p+3;printf(“%d,”,*p);}程序运行后的输出结果是A)1,4B)4,4C)3,1D)4,1(30)有以下程序(函数fun只对下标为偶数的元素进行操作)#includevoidfun(int*a,intn){inti,j,k,t;for(i=0;in-1;i+=2){k=i;for(j=i;j+=2)if(a[j]a[k])k=j;t=a[i];a[i]=a[k];a[k]=t;}}main(){intaa[10]={1,2,3,4,5,6,7},i;fun(aa,7);&&&&&&&&&&&&for(i=0;i7;i++)printf(“%d,”,aa[i]);printf(“\n”);}程序运行后输出结果是A)7,2,5,4,3,6,1,B)1,6,3,4,5,2,7,C)7,6,5,4,3,2,1,D)1,7,3,5,6,2,1,(31)下列选项中,能够满足“若字符串s1等于字符串s2,则执行ST”要求的是A)if(strcmp(s2,s1)==0)ST;B)if(s1==s2)ST;C)if(strcpy(s1,s2)==1)ST;D)if(s1-s2==0)ST;(32)以下不能将s所指字符串正确复制到t所指存储空间的是A)while(*t=*s){t++,s++;}B)for(i=0;t[i]=s[i];i++);C)do{*t++=*s++;}while(*s);D)for(i=0,j=0;t[i++]=s[j++];);(33)有以下程序(strcat函数用以连接两个字符串)#includestdio.h#includestring.hmain(){chara[20]=”ABCD\0EFG\0”,b[]=”IJK”;&&&&&&&&&&&&strcat(a,b);printf(“%s\n”,a);}程序运行后的输出结果是A)ABCDE\OFG\OIJKB)ABCDIJKC)IJKD)EFGIJK(34)有以下程序,程序中库函数islower(ch)用以判断ch中的字母是否为小写字母#includestdio.h#includectype.hvoidfun(char*p){inti=0;while(p[i]){if(p[i]==islower(p[i-1]))p[i-1]=p[i-1]-?a?+?A?;i++;}}main(){chars1[100]=”abcdEFG!”;fun(s1);printf(“%s\n”,s1);}程序运行后的结果是&&&&&&&&&&&&A)abcdEFG!B)AbCdEFg!C)aBcDEFG!D)abcdEFg!(35)有以下程序#includevoidfun(intx){if(x/21)fun(x/2);printf(“%d”,x);}main(){fun(7);printf(“\n”);}程序运行后的输出结果是A)137B)731C)73D)37(36)有以下程序#includeintfun(){staticintx=1;x+=1;}main()&&&&&&&&&&&&{inti,s=1;for(i=1;i=5;i++)s+=fun();printf(“%d\n”,s);}程序运行后的输出结果是A)11B)21C)6D)120(37)有以下程序`#includestdio.h#includestdlib.hmain(){int*a,*b,*c;a=b=c=(int*)malloc(sizeof(int));*a=1;*b=2;*c=3;a=b;printf(“%d,%d,%d\n”,*a,*b,*c);}程序运行后的输出结果是A)3,3,3B)2,2,3C)1,2,3D)1,1,3(38)有以下程序#includemain()&&&&&&&&&&&&{ints,t,A=10;doubleB=6;s=sizeof(A);t=sizeof(B);printf(“%d,%d\n”,s,t);}在VC6平台上编绎运行,程序运行后输出结果是A)2,4B)1,4C)4,8D)10,6(39)若有以下语句typedefstructS{}T;以下叙述中正确的是A)可用S定义结构体变量B)可用T定义结构体变量C)是structS类型的变量D)T是structS类型的变量(40)有以下程序#includemain(){shortc=124;c=c;printf(“%d\n”,c);}若要使程序的运行结果为248,应在下划线处填入的是A)2B)|248C)0248D)1&&&&&&&&&&&&二、填空题(每空2分,共30分)请将每空的正确答案写在答题卡【1】至【15】序号的横线上,答在试卷上不得分。(1)一个栈的初始状态为空。首先将元素5,4,3,2,1依次入栈,然后退栈一次,再将元素A,B,C,D依次入栈,之后将所有元素全部退栈,则所有元素退栈(包括中间退栈的元素)的顺序为【1】。(2)在长度为n的线性表中,寻找最大项至少需要比较【2】次。(3)一棵二叉树有10个度为1的结点,7个度为2的结点,则该二叉树共有【3】个结点。(4)仅由顺序、选择(分支)和重复(循环)结构构成的程序是【4】程序。(5)数据库设计的四个阶段是:需求分析,概念设计,逻辑设计和【5】。(6)以下程序运行后输出结果是【6】。#includemain(){inta=200,b=010;printf(“%d%d\n”,a,b);}(7)有以下程序#includemain(){intx,y;&&&&&&&&&&&&scanf(“%2d%ld”,x,y);printf(“%d\n”,x+y);}程序运行时输入:1234567,程序的运行结果是【7】。(8)在C语言中,当表达式值为0时表示逻辑值“假”,当表达式为【8】时表示逻辑值“真”。(9)有以下程序#includemain(){inti,n[]={0,0,0,0,0};for(i=1;i=4;i++){n[i]=n[i-1]*3+1;printf(“%d”,n[i]);}}程序运行后输出结果是【9】。(10)以下fun函数的功能是:找出具有N个元素的一维数组中的最小值,并作为函数值返回,请填空。(设N已定义)intfun(intx[N]){inti,k=0;for(i=0;iN;i++)if(x[i]x[k])k=【10】;returnx[k];&&&&&&&&&&&&}(11)有以下程序#includestdio.hint*f(int*p,int*q);main(){intm=1,n=2,*r=m;r=f(r,n);printf(“%d\n”,*r);}int*f(int*p,int*q){return(*p*q)?p:q;}程序运行后的输出结果是【11】。(12)以下fun函数的功能是在N行M列的整型二维数组中,选出一个最大值作为函数值返回,请填空。(设M,N已定义)intfun(inta[N][M]){inti,j,row=0,col=0;for(i=0;ia[row][col]){row=i;col=j;}return(【12】);}(13)有以下程序#include&&&&&&&&&&&&main(){intn[2],i,j;for(i=0;i2;i++)n[i]=0;for(i=0;i2;i++)for(j=0;j2;j++)n[j]=n[i]+1;printf(“%d\n”,n[1]);}程序运行后的输出结果是【13】。(14)以下程序的功能是:借助指针变量找出数组元素中最大值所在的位置并输出该最大值。请在输出语句中填写代表最大值的输出项。#includemain(){inta[10],*p,*s;for(p=a;p-a10;p++)scanf(“%d”,p);for(p=a,s=a;p-a10;p++)if(*p*s)s=p;printf(“max=%d\n”,【14】);}(15)以下程序打开新文件f.txt,并调用字符输出函数将a数组中的字符写入其中,请填空。#includemain()&&&&&&&&&&&&{【15】*chara[5]={?1?,?2?,?3?,?4?,?5?},i;fp=fopen{“f,txt”,”w”};for(i=0;i5;i++)fputc{a[i],fp};fclose(fp);}&&&&&&&&2010年9月二级C语言笔试真题参考答案一、选择题1-5BCDAA6-10DDCCA11-15CBBAD16-20DAACB21-25BCBDC26-30CBDDA31-35ACBCD36-40BACBD二、填空题1.1DCBA.结构化5.物理设计6..非09..212.a[row][col]13.314.*s15.FILE&&&&&&&&2011年3月全国计算机等级考试二级笔试试卷C语言程序设计(考试时间90分钟,满分100分)&&&&&&&&一、选择题(1-10,21-40每题2分,11-20每题1分,共70分)&&&&&&&&&&&&(1)下列关于栈叙述正确的是A)栈顶元素最先能被删除B)栈顶元素最后才能被删除C)栈底元素永远不能被删除D)以上三种说法都不对&&&&&&&&(2)下列叙述中正确的是A)有一个以上根结点的数据结构不一定是非线性结构B)只有一个根结点的数据结构不一定是线性结构C)循环链表是非线性结构D)双向链表是非线性结构&&&&&&&&(3)某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第1层)A)3B)4C)6D)7&&&&&&&&(4)在软件开发中,需求分析阶段产生的主要文档是A)软件集成测试计划B)软件详细设计说明书C)用户手册D)软件需求规格说明书&&&&&&&&(5)结构化程序所要求的基本结构不包括A)顺序结构B)GOTO跳转&&&&&&&&&&&&C)选择(分支)结构D)重复(循环)结构&&&&&&&&(6)下面描述中错误的是A)系统总体结构图支持软件系统的详细设计B)软件设计是将软件需求转换为软件表示的过程C)数据结构与数据库设计是软件设计的任务之一D)PAD图是软件详细设计的表示工具&&&&&&&&(7)负责数据库中查询操作的数据库语言是A)数据定义语言B)数据管理语言C)数据操纵语言D)数据控制语言&&&&&&&&(8)一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师和课程间的联系是A)1:1联系B)1:m联系C)m:1联系D)m:n联系&&&&&&&&(9)有三个关系R、S和T如下:&&&&&&&&&&&&则由关系R和S得到关系T的操作是A)自然连接B)交C)除D)并&&&&&&&&(10)定义无符号整数类为UInt,下面可以作为类UInt实例化值的是A)-369B)369C)0.369D)整数集合{1,2,3,4,5}&&&&&&&&(11)计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是A)C语言程序仅可以编译执行B)C语言程序仅可以解释执行C)C语言程序既可以编译执行又可以解释执行D)以上说法都不对&&&&&&&&(12)以下叙述中错误的是A)C语言的可执行程序是由一系列机器指令构成的B)用C语言编写的源程序不能直接在计算机上运行C)通过编译得到的二进制目标程序需要连接才可以运行D)在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exe文件&&&&&&&&&&&&(13)以下选项中不能用作C程序合法常量的是A)1,234B)123C)123D)\x7G&&&&&&&&(14)以下选项中可用作C程序合法实数的是A).1e0B)3.0e0.2C)E9D)9.12E&&&&&&&&(15)若有定义语句:inta=3,b=2,c=1;,以下选项中错误的赋值表达式是A)a=(b=4)=3;B)a=b=c+1;C)a=(b=4)+c;D)a=1+(b=c=4);&&&&&&&&(16)有以下程序段charname[20];scanf(name=%snum=%d,num);当执行上述程序段,并从键盘输入:name=Lilinum=1001回车后,name的值为A)LiliB)name=Lili&&&&&&&&&&&&C)Lilinum=D)name=Lilinum=1001&&&&&&&&(17)if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是A)必须是逻辑值B)必须是整数值C)必须是正数D)可以是任意合法的数值&&&&&&&&(18)有以下程序#includemain(){intx=011;printf(%d\n,++x);}程序运行后的输出结果是A)12B)11C)10D)9&&&&&&&&(19)有以下程序#includemain(){scanf(%d,s);&&&&&&&&&&&&while(s0){switch(s){case1:printf(%d,s+5);case2:printf(%d,s+4);case3:printf(%d,s+3);default:printf(%d,s+1);}scanf(%d,s);}}运行时,若输入123450回车,则输出结果是A)656C)66&&&&&&&&(20)有以下程序段inti,n;for(i=0;i8;i++){n=rand()%5;switch(n){case1:case3:printf(%d\n,n);case2:case4:printf(%d\n,n);&&&&&&&&&&&&case0:exit(0);}printf(%d\n,n);}以下关于程序段执行情况的叙述,正确的是A)for循环语句固定执行8次B)当产生的随机数n为4时结束循环操作C)当产生的随机数n为1和2时不做任何操作D)当产生的随机数n为0时结束程序运行&&&&&&&&(21)有以下程序#includemain(){chars[]=012xy\08s34f4w2;inti,n=0;for(i=0;s[i]!=0;i++)if(s[i]=0s[i]=9)n++;printf(%d\n,n);}程序运行后的输出结果是A)0B)3C)7D)8&&&&&&&&&&&&(22)若i和k都是int类型变量,有以下for语句for(i=0,k=-1;k=1;k++)printf(*****\n);下面关于语句执行情况的叙述中正确的是A)循环体执行两次B)循环体执行一次C)循环体一次也不执行D)构成无限循环&&&&&&&&(23)有以下程序#includemain(){charb,c;b=a;c=A;for(i=0;i6;i++){if(i%2)putchar(i+b);elseputchar(i+c);}printf(\n);}程序运行后的输出结果是A)ABCDEFB)AbCdEfC)aBcDeFD)abcdef&&&&&&&&(24)设有定义:doublex[10],*p=x;,以下能给数组x下标为6的元素&&&&&&&&&&&&读入数据的正确语句是A)scanf(%f,x[6]);B)scanf(%lf,*(x+6));C)scanf(%lf,p+6);D)scanf(%lf,p[6]);&&&&&&&&(25)有以下程序(说明:字母A的ASCII码值是65)#includevoidfun(char*s){while(*s){if(*s%2)printf(%c,*s);s++;}}main(){chara[]=BYTE;fun(a);printf(\n);}程序运行后的输出结果是ABYBC)D)BTYTYE&&&&&&&&&&&&(26)有以下程序段#includemain(){…while(getchar()!=\n);…}以下叙述中正确的是A)此while语句将无限循环B)getchar()不可以出现在while语句的条件表达式中C)当执行此while语句时,只有按回车键程序才能继续执行D)当执行此while语句时,按任意键程序就能继续执行&&&&&&&&(27)有以下程序#includemain(){intx=1,y=0;if(!x)y++;elseif(x==0)if(x)y+=2;elsey+=3;printf(%d\n,y);&&&&&&&&&&&&}程序运行后的输出结果是A)3B)2C)1D)0&&&&&&&&(28)若有定义语句:chars[3][10],(*k)[3],*p;,则以下赋值语句正确的是A)p=s;B)p=k;C)p=s[0];D)k=s;&&&&&&&&(29)有以下程序#includevoidfun(char*c){while(*c){if(*c=a*c=z)*c=*c-(a-A);c++;}}main(){chars[81];gets(s);fun(s);puts(s):}当执行程序时从键盘上输入HelloBeijing回车,则程序的输出结果是&&&&&&&&&&&&A)hellobeijingB)HelloBeijingC)HELLOBEIJINGD)hELLOBeijing&&&&&&&&(30)以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。#include#defineN10voidfun(intx[N]){inti=0;while(i}在程序中下划线处应填入的是A)x+iB)x[i+1]C)x+(i++)D)x[++i]&&&&&&&&(31)有以下程序#includemain(){chara[30],b[30];scanf(%s,a);gets(b);printf(%s\n%s\n,a,b);&&&&&&&&&&&&}程序运行时若输入:howareyou?Iamfine回车则输出结果是A)howareyou?B)howIamfineareyou?IamfineC)howareyou?IamfineD)rowareyou?&&&&&&&&(32)设有如下函数定义intfun(intk){if(k1)return0;elseif(k==1)return1;elsereturnfun(k-1)+1;}若执行调用语句:n=fun(3);,则函数fun总共被调用的次数是A)2B)3C)4D)5&&&&&&&&(33)有以下程序#includeintfun(intx,inty){if(x!=y)return((x+y);2);elsereturn(x);&&&&&&&&&&&&}main(){inta=4,b=5,c=6;printf(%d\n,fun(2*a,fun(b,c)));}程序运行后的输出结果是A)3B)6C)8D)12&&&&&&&&(34)有以下程序#includeintfun(){staticintx=1;x*=2;}main(){inti,s=1;for(i=1;i=3;i++)s*=fun();printf(%d\n,s);}程序运行后的输出结果是A)0B)10C)30D)64&&&&&&&&&&&&(35)有以下程序#include#defineS(x)4*(x)*x+1main(){intk=5,j=2;printf(%d\n,S(k+j));}程序运行后的输出结果是A)197B)143C)33D)28&&&&&&&&(36)设有定义:struct{charmark[12];intnum1;doublenum2;}t1,t2;,若变量均已正确赋初值,则以下语句中错误的是A)t1=t2;B)t2.num1=t1.num1;C)t2.mark=t1.D)t2.num2=t1.num2;&&&&&&&&(37)有以下程序#includestructord{intx,y;}dt[2]={1,2,3,4};main(){&&&&&&&&&&&&structord*p=printf(%d,,++(p-x));printf(%d\n,++(p-y));}程序运行后的输出结果是A)1,2B)4,1C)3,4D)2,3&&&&&&&&(38)有以下程序#includestructS{inta,b;}data[2]={10,100,20,200};main(){structSp=data[1];printf(%d\n,++(p.a));}程序运行后的输出结果是A)10B)11C)20D)21&&&&&&&&(39)有以下程序#includemain(){unsignedchara=8,c;c=a3;&&&&&&&&&&&&printf(%d\n,c);}程序运行后的输出结果是A)32B)16C)1D)0&&&&&&&&(40)设fp已定义,执行语句fp=fopen(file,w);后,以下针对文本文件file操作叙述的选项中正确的是A)写操作结束后可以从头开始读B)只能写不能读C)可以在原有内容后追加写D)可以随意读和写&&&&&&&&二、填空题(1)有序线性表能进行二分查找的前提是该线性表必须是【1】存储的。&&&&&&&&(2)一棵二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF,则后序遍历结果为【2】。&&&&&&&&(3)对软件设计的最小单位(模块或程序单元)进行的测试通常称为【3】测试。(4)实体完整性约束要求关系数据库中元组的【4】属性值不能为空。&&&&&&&&&&&&(5)在关系A(S,SN,D)和关系B(D,CN,NM)中,A的主关键字是S,B的主关键字是D,则称【5】是关系A的外码。&&&&&&&&(6)以下程序运行后的输出结果是【6】。#includemain(){a=(int)((double)(3/2)+0.5+(int)1.99*2);printf(%d\n,a);}&&&&&&&&(7)有以下程序#includemain(){scanf(%d,x);if(x15)printf(%d,x-5);if(x10)printf(%d,x);if(x5)printf(%d\n,x+5);}&&&&&&&&&&&&若程序运行时从键盘输入12回车,则输出结果为【7】。&&&&&&&&(8)有以下程序(说明:字符0的ASCII码值为48)#includemain(){charc1,c2;scanf(%d,c1);c2=c1+9;printf(%c%c\n,c1,c2);}若程序运行时从键盘输入48回车,则输出结果为【8】。&&&&&&&&(9)有以下函数voidprt(charch,intn){for(i=1;i=n;i++)printf(i%6!=0?%c:%c\n,ch);}执行调用语句prt(*,24);后,函数共输出了【9】行*号。&&&&&&&&(10)以下程序运行后的输出结果是【10】。#include&&&&&&&&&&&&main(){intx=10,y=20,t=0;if(x==y)t=x;x=y;y=t;printf(%d%d\n,x,y);}&&&&&&&&(11)己知a所指的数组中有N个元素。函数fun的功能是,将下标k(k0)开始的后续元素全部向前移动一个位置。请填空。voidfun(inta[N],intk){for(i=k;i}&&&&&&&&(12)有以下程序,请在【12】处填写正确语句,使程序可正常编译运行。#include【12】;main(){doublex,y,(*p)();scanf(%lf%lf,x,y);p=printf(%f\n,(*p)(x,y));&&&&&&&&&&&&}doubleavg(doublea,doubleb){return((a+b)/2);}&&&&&&&&(13)以下程序运行后的输出结果是【13】。#includemain(){inti,n[5]={0};for(i=1;i=4;i++){n[i]==n[i-1]*2+1;printf(%d,n[i]);}printf(\n);}&&&&&&&&(14)以下程序运行后的输出结果是【14】。#include#include#includemain(){char*p;p=(char*)malloc(sizeof(char)*20);strcpy(p,welcome);for(i=6;i=0;i--)putchar(*(p+i));&&&&&&&&&&&&printf(\n-);free(p);}&&&&&&&&(15)以下程序运行后的输出结果是【15】。#includemain(){FILE*intx[6]={1,2,3,4,5,6},i;fp=fopen(test.dat,wb);fwrite(x,sizeof(int),3,fp);rewind(fp);fread(x,sizeof(int),3,fp);for(i=0;i6;i++)printf(%d,x[i]);printf(\n);fclose(fp);}&&&&&&&&2011年3月全国计算机等级考试二级笔试试卷C语言程序设计答案&&&&&&&&一.选择题1-5ABDDB&&&&&&&&&&&&6-10ACDCB&&&&&&&&11-15ADAAA&&&&&&&&16-20ADCAD21-25BDBCD26-30CDCCC31-35BBBDB36-40CDDCB二,填空题1)顺序2)DEBFCA3)单元测试4)主键5)D6)&&&&&&&&37)0)20011)i-112)doubleavg(double&&&&&&&&a,doubleb)13)14)&&&&&&&&12715&&&&&&&&Emoclew15)123456&&&&&&&&2009年9月全国计算机等级考试二级笔试试卷C语言程序设计(考试时间90分钟,满分100分)一、选择题((1)—(10)、(21)—(40)每题2分,(11)—(20)每题1分,共70分)(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)可封装D)自顶向下&&&&&&&&&&&&C)模块化D)逐步求精(7)软件详细设计产生的图如下:&&&&&&&&该图是A)N-S图B)PAD图C)程序流程图D)E-R图(8)数据库管理系统是A)操作系统的一部分B)在操作系统支持下的系统软件C)一种编译系统D)一种操作系统(9)在E-R图中,用来表示实体联系的图形是A)椭圆图B)矩形C)菱形D)三角形&&&&&&&&&&&&(10)有三个关系R,S和T如下:&&&&&&&&其中关系T由关系R和S通过某种操作得到,该操作为A)选择B)投影C)交D)并(11)以下叙述中正确的是A)程序设计的任务就是编写程序代码并上机调试B)程序设计的任务就是确定所用数据结构C)程序设计的任务就是确定所用算法D)以上三种说法都不完整(12)以下选项中,能用作用户标识符的是A)voidB)8_8C)_0_D)unsigned(13)阅读以下程序#includemain()&&&&&&&&&&&&{floatprintF;printf(“请输入2个数:”);scanf(“%d%f”,case,pjrintF);printf(“%d%f\n”,case,printF);}该程序编译时产生错误,其出错原因是A)定义语句出错,case是关键字,不能用作用户自定义标识符B)定义语句出错,printF不能用作用户自定义标识符C)定义语句无错,scanf不能作为输入函数使用D)定义语句无错,printf不能输出case的值(14)表达式:(int)((double)9/2)-(9)%2的值是A)0B)3C)4D)5(15)若有定义语句:intx=10;,则表达式x-=x+x的值为A)-20B)-10C)0D)10(16)有以下程序#include&&&&&&&&&&&&main(){inta=1,b=0;printf(“%d,”,b=a+b);printf(“%d\n”,a=2*b);}程序运行后的输出结果是A)0,0B)1,0C)3,2D)1,217)设有定义:inta=1,b=2,c=3;,以下语句中执行效果与其它三个不同的是A)if(ab)c=a,a=b,b=c;B)if(ab){c=a,a=b,b=c;}C)if(ab)c=a;a=b;b=c;D)if(ab){c=a;a=b;b=c;}(18)有以下程序#includemain(){intc=0,k;for(k=1;k3;k++)switch(k)&&&&&&&&&&&&{default:c+=kcase2:c++;case4:c+=2;}printf(“%d\n”,c);}程序运行后的输出结果是A)3B)5C)7D)9(19)以下程序段中,与语句:k=ab?(bc?1:0):0;功能相同的是A)if((ab)(bc))k=1;elsek=0;B)if((ab)||(bc)k=1;elsek=0;C)if(a=b)k=0;elseif(b=c)k=1;D)if(ab)k=1;elseif(bc)k=1;elsek=0;&&&&&&&&&&&&20)有以下程序#includemain(){chars[]={“012xy”};inti,n=0;for(i=0;s[i]!=0;i++)if(s[i]=’a’s[i]=’z’)n++;printf(“%d\n”,n);}程序运行后的输出结果是A)0B)2C)3D)5(21)有以下程序#includemain(){intn=2,k=0;while(k++n++2);printf(“%d%d\n”,k,n);}程序运行后的输出结果是A)02&&&&&&&&&&&&B)13C)57D)12(22)有以下定义语句,编译时会出现编译错误的是A)chara=’a’;B)chara=’\n’;C)chara=’aa’;D)chara=’\x2d’;(23)有以下程序#includemain(){charc1,c2;c1=’A’+’8’-‘4’;c2=’A’+’8’-‘5’;printf(“%c,%d\n”,c1,c2);}已知字母A的ASCII码为65,程序运行后的输出结果是A)E,68B)D,69C)E,DD)输出无定值(24)有以下程序&&&&&&&&&&&&#includevoidfun(intp){intd=2;p=d++;printf(“%d”,p);}main(){inta=1;fun(a);printf(“%d\n”,a);}程序运行后的输出结果是A)32B)12C)21D)22(25)以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能#defineMIN-intfindmax(intx[],intn){inti,for(i=0;iN;I++)p=/{max=MIN;if(}&&&&&&&&&&&&造成错误的原因是A)定义语句inti,中max未赋初值B)赋值语句max=MIN;中,不应给max赋MIN值C)语句if(maxD)赋值语句max=MIN;放错了位置(26)有以下程序#includemain(){intm=1,n=2,*p=m,*q=n,*r;r=p;p=q;q=r;printf(“%d,%d,%d,%d\n”,m,n,*p,*q);}程序运行后的输出结果是A)1,2,1,2B)1,2,2,1C)2,1,2,1D)2,1,1,2(27)若有定义语句:inta[4][10],*p,*q[4];且0≤i4,则错误的赋值是A)p=aB)q[i]=a[i]C)p=a[i]&&&&&&&&&&&&D)p=a[2][1](28)有以下程序#include#includemain(){charstr[][20]={“One*World”,“One*Dream!”},*p=str[1];printf(“%d,”,strlen(p));printf(“%s\n”,p);}程序运行后的输出结果是A)9,One*WorldB)9,One*DreamC)10,One*DreamD)10,One*World(29)有以下程序#includemain(){inta[]={2,3,5,4},i;for(i=0;i4;i++)switch(i%2){case0:switch(a[i]%2){case0:a[i]++;&&&&&&&&&&&&case1:a[i]--;}case1:a[i[=0;}for(i=0;i4;i++)printf(“%d”,a[i]);printf(“\n”);}A)3344B)2050C)3040D)0304(30)有以下程序#include#includemain(){chara[10]=”abcd”;printf(“%d,%d\n”,strlen(a),sizeof(a));}程序运行后的输出结果是A)7,4B)4,10C)8,8D)10,10&&&&&&&&&&&&(31)下面是有关C语言字符数组的描述,其中错误的是A)不可以用赋值语句给字符数组名赋字符串B)可以用输入语句把字符串整体输入给字符数组C)字符数组中的内容不一定是字符串D)字符数组只能存放字符串(32)下列函数的功能是fun(char*a,char*b){while((*b=*a)!=’\0’){a++,b++;}}A)将a所指字符串赋给b所指空间B)使指针b指向a所指字符串C)将a所指字符串和b所指字符串进行比较D)检查a和b所指字符串中是否有’\0’(33)设有以下函数voidfun(intn,char*s){}则下面对函数指针的定义和赋值均是正确的是A)void(*pf)();pf=B)viod*pf();pf=C)void*pf();*pf=D)void(*pf)(int,char);pf=(34)有以下程序#includeintf(intn);&&&&&&&&&&&&main(){inta=3,s;s=f(a);s=s+f(a);printf(“%d\n”,s);}intf(intn){staticinta=1;n+=a++;}程序运行以后的输出结果是A)7B)8C)9D)10(35)有以下程序#include#definef(x)x*x*xmain(){inta=3,s,t;s=f(a+1);t=f((a+1));printf(“%d,%d\n’,s,t);}&&&&&&&&&&&&程序运行后的输出结果是A)10,64B)10,10C)64,10D)64,64(36)下面结构体的定义语句中,错误的是A)structord{};B)structord{}C)structord{}a;D)struct{}a;(37)设有定义:char*c;,以下选项中能够使字符型指针c正确指向一个字符串的是A)charstr[]=”string”;c=B)scanf(“%s”,c);C)c=getchar();D)*c=”string”;(38)有以下程序#include#includestructA{charb[10];};structAf(structAt);&&&&&&&&&&&&main(){structAa={1001,”ZhangDa”,1098.0};a=f(a);jprintf(“%d,%s,%6.1f\n”,a.a,a.b,a.c);}structAf(structAt)(t.a=1002;strcpy(t.b,”ChangRong”);t.c=1202.0;)程序运行后的输出结果是A)1001,ZhangDa,1098.0B)1001,ZhangDa,1202.0C)1001,ChangRong,1098.0D)1001,ChangRong,)若有以下程序段intr=8;printf(“%d\n”,r1);输出结果是A)16B)8C)4D)2(40)下列关于C语言文件的叙述中正确的是A)文件由一系列数据依次排列组成,只能构成二进制文件&&&&&&&&&&&&B)文件由结构序列组成,可以构成二进制文件或文本文件C)文件由数据序列组成,可以构成二进制文件或文本文件D)文件由字符序列组成,其类型只能是文本文件二、填空题(每空2分,共30分)(1)某二叉树有5个度为2的结点以及3个度为1的结点,则该二叉树中共有【1】个结点。(2)程序流程图中的菱形框表示的是【2】。(3)软件开发过程主要分为需求分析、设计、编码与测试四个阶段,其中【3】阶段产生“软件需求规格说明书。(4)在数据库技术中,实体集之间的联系可以是一对一或一对多或多对多的,那么“学生”和“可选课程”的联系为【4】。(5)人员基本信息一般包括:身份证号,姓名,性别,年龄等。其中可以作为主关键字的是【5】。(6)若有定义语句:inta=5;,则表达式:a++的值是【6】。(7)若有语句doublex=17;,当执行y=(int)(x/5)%2;之后y的值为【7】。(8)以下程序运行后的输出结果是【8】。#includemain(){intx=20;printf(“%d”,0X20);p=/printf(“%d\n”,0XX=/&&&&&&&&&&&&(9)以下程序运行后的输出结果是【9】。#includemain(){inta=1,b=7;do{b=b/2;a+=b;}while(b1);printf(“%d\n”,a);}(10)有以下程序#includemain(){intf,f1,f2,i;f1=0;f2=1;printf(“%d%d”,f1,f2);for(i=3;i=5;i++){f=f1+f2;printf(“%d”,f);f1=f2;f2=f;}printf(“\n”);}程序运行后的输出结果是【10】。(11)有以下程序&&&&&&&&&&&&#includeinta=5;voidfun(intb){inta=10;a+=b;printf(“%d”,a);}main(){intc=20;fun(c);a+=c;printf(“%d\n”,a);}程序运行后的输出结果是【11】。(12)设有定义:structperson{intID;charname[12];}p;请将scanf(“%d”,【12】);语句补充完整,使其能够为结构体变量p的成员ID正确读入数据。(13)有以下程序#includemain(){chara[20]=”Howareyou?”,b[20];scanf(“%s”,b);printf(“%s%s\n”,a,b);}&&&&&&&&&&&&程序运行时从键盘输入:Howareyou?回车则输出结果为【13】。&&&&&&&&(14)有以下程序#includetypedefstruct{doubles}REC;voidfun1(RECx){x.num=23;x.s=88.5;}main(){RECa={16,90.0};fun1(a);printf(“%d\n”,a.num);}程序运行后的输出结果是【14】。&&&&&&&&(15)有以下程序#includefun(intx){if(x/20)run(x/2);printf(“%d”,x);}main()&&&&&&&&&&&&{fun(6);printf(“\n”);}程序运行后的输出结果是【15】。2009年9月全国计算机等级考试二级C语言笔试参考答案一、选择题&&&&&&&&(1)(6)(11)(16)(21)(26)(&&&&&&&&C&&&&&&&&(2)&&&&&&&&B&&&&&&&&(3)&&&&&&&&D&&&&&&&&(4)&&&&&&&&A&&&&&&&&(5)&&&&&&&&B&&&&&&&&A&&&&&&&&(7)&&&&&&&&C&&&&&&&&(8)&&&&&&&&B&&&&&&&&(9)&&&&&&&&C&&&&&&&&(10)&&&&&&&&D&&&&&&&&D&&&&&&&&(12)&&&&&&&&C&&&&&&&&(13)&&&&&&&&A&&&&&&&&(14)&&&&&&&&B&&&&&&&&(15)&&&&&&&&B&&&&&&&&D&&&&&&&&(17)&&&&&&&&C&&&&&&&&(18)&&&&&&&&A&&&&&&&&(19)&&&&&&&&A&&&&&&&&(20)&&&&&&&&B&&&&&&&&D&&&&&&&&(22)&&&&&&&&C&&&&&&&&(23)&&&&&&&&A&&&&&&&&(24)&&&&&&&&C&&&&&&&&(25)&&&&&&&&D&&&&&&&&B&&&&&&&&(27)&&&&&&&&A&&&&&&&&(28)&&&&&&&&C&&&&&&&&(29)&&&&&&&&C&&&&&&&&(30)&&&&&&&&B&&&&&&&&D&&&&&&&&(&&&&&&&&A&&&&&&&&(&&&&&&&&A&&&&&&&&(&&&&&&&&C&&&&&&&&(&&&&&&&&A&&&&&&&&&&&&31)(36)B&&&&&&&&32)(37)A&&&&&&&&33)(38)D&&&&&&&&34)(39)C&&&&&&&&35)(40)C&&&&&&&&*答案仅供参考(10)0(8)10(7)1(6)5(5)身份证号(4)多对多(3)需求分析(2)逻辑条件(1)14二、填空题&&&&&&&&2009年3月二级C语言笔试真题及答案&&&&&&&&&&&&((1)—(10)每小题2分,(11)—(50)每题1分,共60分)下列各题A)、C)、B)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。(1)下列叙述中正确的是A)栈是“先进先出”的线性表B)队列是“先进先出”的线性表C)循环队列是非线性结构D)有序性表既可以采用顺序存储结构,也可以采用链式存储结构(2)支持子程序调用的数据结构是A)栈B)树C)队列D)二叉树(3)某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是A)10B)8C)6D)4(4)下列排序方法中,最坏情况下比较次数最少的是A)冒泡排序B)简单选择排序C)直接插入排序D)堆排序(5)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是A)编译软件B)操作系统&&&&&&&&&&&&C)教务管理系统D)汇编程序(6)下面叙述中错误的是A)软件测试的目的是发现错误并改正错误B)对被调试的程序进行“错误定位”是程序调试的必要步骤C)程序调试通常也称为DebugD)软件测试应严格执行测试计划,排除测试的随意性(7)耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是A)提高耦合性降低内聚性有利于提高模块的独立性B)降低耦合性提高内聚性有利于提高模块的独立性C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度D)内聚性是指模块间互相连接的紧密程度(8)数据库应用系统中的核心问题是A)数据库设计B)数据库系统设计C)数据库维护D)数据库管理员培训(9)有两个关系R,S如下:RAaB3C2&&&&&&&&&&&&bc&&&&&&&&02&&&&&&&&11&&&&&&&&SAabcB302&&&&&&&&由关系R通过运算得到关系S,则所使用的运算为A)选择B)投影C)插入D)连接(10)将E-R图转换为关系模式时,实体和联系都可以表示为A)属性B)键C)关系D)域&&&&&&&&(11)以下选项中合法的标识符是A)1-1B)1—1C)-11D)1-(12)若函数中有定义语句:intk;,则A)系统将自动给k赋初值0B)这时k中值无定义C)系统将自动给k赋初值-1&&&&&&&&&&&&D)这时k中无任何值(13)以下选项中,能用作数据常量的是A)o115B)0118C)1.5e1.5D)115L(14)设有定义:intx=2;,以下表达式中,值不为6的是A)x*=x+1B)x++,2*xC)x*=(1+x)D)2*x,x+=2(15)程序段:intx=12;doubley=3.141593;printf(“%d%8.6f”,x,y);的输出结果是A)123.141593B)123.141593C)12,3.141593D)123.)若有定义语句:doublex,y,*px,*py,执行了px=x,py=y;之后,正确的输入语句是A)scanf(“%f%f”,x,y);B)scanf(“%f%f”,x,y);C)scanf(“%lf%le”,px,py);D)scanf(“%lf%lf”,x,y);(17)以下是if语句的基本形式:&&&&&&&&&&&&if(表达式)语句其中“表达式”A)必须是逻辑表达式B)必须是关系表达式C)必须是逻辑表达式或关系表达式D)可以是任意合法的表达式(18)有以下程序#includestdio.hmain(){scanf(“%d”,x);if(x=3);elseif(x!=10)printf(“%d\n”,x);}程序运行时,输入的值在哪个范围才会有输出结果A)不等于10的整数B)大于3且不等于10的整数C)大于3或等于10的整数D)小于3的整数&&&&&&&&&&&&(19)有以下程序#includestdio.hMain(){inta=1,b=2,c=3,d=0;if(a==1b++==2)if(b!=2||c--!=3)&&&&&&&&printf(“%d,%d,%d\n”,a,b,c);elseprintf(“%d,%d,%d\n”,a,b,c);elseprintf(“%d,%d,%d\n”,a,b,c);}程序运行后的输出结果是A)1,2,3B)1,3,2C)1,3,3D)3,2,1(20)以下程序中的变量已正确定义for(i=0;i4;i++,i++for(k=1;k3;k++);printf(*”);程序段的输出结果是A)********&&&&&&&&&&&&B)****C)**D)*(21)有以下程序#includestdio.hmain(){char*s=(“ABC);do{printf(“%d”,*s%10);s++;}while(*s);}注意,字母A的ASCII码值为65。程序运行后的输出结果是A)5670B)656667C)567D)ABC(22)设变量已正确定义,以下不能统计出一行中输入字符个数(不包含回车符)的程序段是A)n=0;while((ch=getchar())!=’\n’)n++;B)n=0;while(getchar()!=’\n’)n++;&&&&&&&&&&&&C)for(n=0;getchar()!=’\n’;n++);D)n=0;for(ch=getchar();ch!=’\n’;n++);(23)有以下程序#includestdio.hmain(){inta1,a2;charc1,c2;scanf(“%d%c%d%c”,a1,c1,a2,c2);printf(“%d,%c,%d,%c”,1,c1,a2,c2);}若想通过键盘输入,使得a1的值为12,a2的是为34,c1的值为字符a,c2的值为字符b,程序输出结果是:12,a,34,b,则正确的输入格式是(以下代表空格,CR代表回车)A)12a34bCRB)12a34bCRC)12,a,34,bCRD)12a34bCR&&&&&&&&&&&&(24)有以下程序#includestdio.hintf(intx,inty){return()y-x)*x);}main(){inta=3,b=4,c=5,d;d=f(f(a,b),f(a,c));printf(“%d\n”,d);}程序运行后的输出结果是A)10B)9C)8D)7(25)有以下程序#includestdio.hvoidfun(char*s){while(*s)&&&&&&&&{if(*s%2==0)printf(“%c”,*s);&&&&&&&&&&&&s++;&&&&&&&&}}main(){chara[]={“good”};&&&&&&&&fun(a);printf(“\n”);}注意:字母a的ASCⅡ码值为97,程序运行后的输出结果是A)dB)goC)godD)good(26)有以下程序#includestdio.hvoidfun(int*a,int*b){int*c;c=a;a=b;b=c;}main()&&&&&&&&&&&&{intx=3,y-5,*P=x,*q=y;&&&&&&&&fun(p,q);printf(“%d,%d,”,*p,*q);fun(x,y);printf(“%d,%d\n”,*p,*q);}程序运行后的输出结果是A)3,5,5,3B)3,5,3,5C)5,3,3,5D)5,3,5,3(27)有以下程序#includestdio.hviodf(int*p,int*q);main(){intm=1,n=2,*r=m;&&&&&&&&f(r,n);printf(“%d,%d”,m,n);}voidf(int*p,int*q){p=p+1;*q=*q+1;}程序运行后输出的结果是A)1,3&&&&&&&&&&&&B)2,3C)1,4D)1,2(28)以下函数按每行8个输出数组中的数据voidfun(int*w,intn){&&&&&&&&for(i=0;i++)&&&&&&&&{_________________&&&&&&&&printf(“%d”,w);&&&&&&&&}&&&&&&&&printf(“\n”);}下划线处应填入的语句是A)if(i/8==0)print(“\n”);B)if(i/8==0)C)if(i%8==0)print(“\n”);D)if(i%8==0)&&&&&&&&&&&&(29)若有以下定义&&&&&&&&intx[10],*pt=x;则对x数组元素的正确应用是A)*x[10]B)*(x+3)C)*(pt+10)D)pt+3(30)设有定义:chars[81];inti=10;,以下不能将一行(不超过80个字符)带有空格的字符串真确读入的语句或语句组是Agets(s)&&&&&&&&B)while((s[i++]=getchar())!=”\n”;s=”\0”;C)scanf(“%s”,s);D)do{scanf(“%c”,s);}while(s[i++]!=”\n”);s=”\0”;(31)有以下程序#includestdio.hmain(){char*a[]={“abcd”,”ef”,”gh”,”ijk”};intI;&&&&&&&&for(i=0;i4;i++)&&&&&&&&&&&&printf(“%c”,*a);}程序运行后输出的结果是A)aegiB)dfhkC)abcdD)abcdefghijk(32)以下选项中正确的语句组是A)chars[];s=”BOOK!”;B)char*s;s={”BOOK!”};C)chars[10];s=”BOOK!”;D)char*s;s=”BOOK!”;(33)有以下程序#includestdio.hintfun{intx,inty}{if(x==y)return(x);&&&&&&&&elsereturen((x+y)/2)}main(){inta=4,b=5,c=6;&&&&&&&&&&&&printf(“%d\n”,fun(2*a,fun(b,c)))}程序运行后的输出结果是A)3B)6C)8D)12(34)设函数中有整型变量n,为保证其在未赋值的情况下初值为0,应选择的存储类别是A)autoB)registerC)staticD)auto或register(35)有以下程序#includestdio.hintb=2;intfun(int*k){b=*k+b;return(b);}main(){inta[10]={1,2,3,4,5,6,7,8},I;&&&&&&&&for(i=2;i4;i++){b=fun(a)+b;printf(“%d”,b);}&&&&&&&&&&&&printf(“\n”);}程序运行后输出的结果是A)1012&&&&&&&&B)810C)1028D)1016(36)有以下程序#includestdio.h#definePT3.5;#defineS(x)PT*x*x;mian(){inta=1,b=2;printf(“%4.1f\n”,S(a+b));}程序运行后输出的结果是A)14.0B)31.5&&&&&&&&&&&&C)7.5D)程序有错无输出结果(37)有以下程序#includestdio.hstructord{intx,y;}dt[2]={1,2,3,4};main(){structord*p=&&&&&&&&printf(“%d,”,++p-x);printf(“%d\n”,++p-y);}程序的运行结果是A)1,2B)2,3C)3,4D)4,1(38)设有宏定义:#includeIsDIV(k,n)((k%n==1)?1:0且变量m已正确定义并赋值,则宏调用:IsDIV(m,5)IsDIV(m,7)为真时所要表达的是A)判断m是否能被5或者7整除B)判断m是否能被5和7整除C)判断m被5或者7整除是否余1&&&&&&&&&&&&D)判断m被5和7整除是否余1(39)有以下程序#includestdio.hmain(){inta=5,b=1,t;&&&&&&&&t=(a2|b);printf(“%d\n”,t)&&&&&&&&}程序运行后的输出结果是A)21B)11C)6D)1(40)有以下程序#includestdio.hmain(){EILE*f;&&&&&&&&f=fopen(“filea.txt”,”w”);&&&&&&&&fprintf(f,”abc”);&&&&&&&&&&&&fclose(f);}若文本文件filea.txt中原有内容为:hello,则运行以上程序后,文件filea.txt中的内容为A)helloabcB)abcloC)abcD)abchello二、填空题(每空2分,共30分)&&&&&&&&请将每一个空的正确答案写在答题卡【1】至【15】序号的横线上,答在试卷上不得分。(1)假设一个长度为50的数组(数组元素的下标从0到49)作为栈的存储空间,栈底指针bottom指向栈底元素,栈顶指针top指向栈顶元素,如果bottom=49,top=30(数组下标),则栈中具有【1】个元素。(2)软件测试可分为白盒测试和黑盒测试。基本路径测试属于【2】测试。(3)符合结构化原则的三种基本控制结构是:选择结构、循环结构和【3】。&&&&&&&&&&&&(4)数据库系统的核心是【4】(5)在E-R图中,图形包括矩形框、菱形框、椭圆框。其中表示实体联系的是【5】框。(6)表达式(int)((double)(5/2)+2.5)的值是【6】(7)若变量x、y已定义为int类型且x的值为99,y的值为9,请将输出语句printf(【7】,x/y);补充完整,使其输出的计算结果形式为:x/y=11(8)有以下程序#includestdio.hmain(){charc1,c2;&&&&&&&&scanf(“c”,c1);&&&&&&&&while(c165||c190)scanf(“c”,c1);&&&&&&&&c2=c1+32;&&&&&&&&printf(“c,c\n”,c1,c2);&&&&&&&&&&&&}程序运行输入65回车后,能否输出结果、结束运行(请回答能或不能)【8】。&&&&&&&&(9)以下程序运行后的输出结果是【9】#includestdio.hmain(){intk=1,s=0;do{if{((k2)!=0)continue;s+=k;k++;}while(k)10);prin

我要回帖

更多关于 inta 引脚 的文章

 

随机推荐