计算机二级c语言历年真题及答案

申明敬告: 本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。

文档介绍

计算机二级c语言历年真题及答案

一、选择题((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)PDL(过程设计语言)B)PAD图C)N-S图D)DFD图(7)下列叙述中正确的是()。A)软件交付使用后还需要再进行维护B)软件工具交付使用就不需要再进行维护C)软件交付使用后其生命周期就结束D)软件维护是指修复程序中被破坏的指令(8)数据库设计的根本目标是要解决()。A)数据共享问题B)数据安全问题C)大量数据存储问题D)简化数据维护(9)设有如下关系表:则下列操作中正确的是()。A)T=R∩SB)T=R∪SC)T=R×SD)T=R/S(10)数据库系统的核心的是()。A)数据模型B)数据库管理系统C)数据库D)数据库管理员124n(11)下列叙述中错误的是()。A)用户所定义的标识符允许使用关键字B)用户所定义的标识符应尽量做到“见名知意”C)用户所定义的标识符必须以字母或下划线开头D)用户定义的标识符中、大、小写字母代表不同标识(12)下列叙述中错误的是()。A)C语句必须以分号结束B)复合语句在语法上被看作一条语句C)空语句出现在任何位置都不会影响程序运行D)赋值表达式末尾加分号就构成赋值语句(13)下列叙述中正确的是()。A)调用printf()函数时,必须要有输出项B)使用putchar()函数时,必须在之前包含头文件stdio.hC)在C语言中,整数可以以十二进制、八进制或十六进制的形式输出D)调节getchar()函数读入字符时,可以从键盘上输入字符所对应的ASCII码(14)下列关于函数的叙述中正确的是()。A)每个函数都可以被其他函数调用(包括main函数)B)每个函数都可以被单独编译C)每个函数都可以单独运行D)在一个函数内部可以定义另一个函数(15)若有语句:char*line[5];下列叙述中正确的是()。A)定义line是一个数组,每个数组元素是一个基类型为char的指针变量B)定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组C)定义line是一个指针数组,语句中的*号称为间址运算符D)定义line是一个指向字符型函数的指针(16)有下列程序段:typedefstructNODE{intnum;structNODE*next;}OLD;下列叙述中正确的是()。A)以上的说明形式非法B)NODE是一个结构体类型C)OLD是一个结构体类型D)OLD是一个结构体变量(17)下列叙述中错误的是()。A)在C语言中,对二进制文件的访问速度比文本文件快B)在C语言中,随机文件以二进制代码形式存储数据C)语句FILEfp;定义了一个名为fp的文件指针D)C语言中的文本文件以ASCⅡ码形式存储数据(18)当把四个表达式用作if语句的控制表达式时,有一个选项与其他三个选项含义不同,这个选项是()。A)k%2B)k%2==1C)(k%2)!=0D)!k%2==1(19)下列不能正确计算代数式sin2()值的C语言表达式是()。A)1/3*sin(1/2)*sin(1/2)B)sin(0.5)*sin(0.5)/3C)pow(sin(0.5),2)/3D)1/3.0*pow(sin(1.0/2),2)124n(20)下列能正确定义且赋初值的语句是()。A)intnl=n2=10;B)charc=32;C)floatf=f+1.1;D)doublex=12.3E2.5;(21)下列程序的功能是:给r输入数据后计算半径为r的圆面积s。程序在编译时出错。main()/*Beginning*/{intr;floats;scanf("%d",&r);s=*π*r*r;printf("s=%fn",s);}出错的原因是()。A)注释语句书写位置错误B)存放圆半径的变量r不应该定义为整型C)输出语句中格式描述符非法D)计算圆面积的赋值语句中使用了非法变量(22)设有定义:intk=1,m=2;floatf=7;则下列选项中错误的表达式是()。A)k=k>=kB)-k++C)k%int(f)D)k>=f>=m(23)设有定义:inta=2,b=3,c=4;,则下列选项中值为0的表达式是()。A)(!a==1)&&(!b==0)B)(a<b)&&!c‖1C)a&&bD)a‖(b+b)&&(c-a)(24)有下列程序段:intk=0,a=1,b=2,c=3;k=a<b?b:a;k=k>c?c:k;执行该程序段后,k的值是()。A)3B)2C)1D)0(25)设变量a、b、c、d和y都已正确定义并赋值。若有下列if语句if(a<b)if(c==d)y=0;elsey=1;该语句所表示的含义是()。(26)有下列程序段intn,t=1,s=0;scanf("%d",&n);do{s=s+t;t=t-2;}while(t!=n);为使此程序段不陷入死循环,从键盘输入的数据应该是()。A)任意正奇数B)任意负偶数C)任意正偶数D)任意负奇数(27)设变量已正确定义,则以下能正确计算f=n!的程序段是()。A)f=0;B)f=1;for(i=1;i<=n;i++)f*=i;for(i=1;i<n;i++)f*=i;C)f=1;D)f=1;124nfor(i=n;i>1;i++)f*=i;for(i=n;i>=2;i--)f*=i;(28)设有定义:intn1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是()。A)*p=*q;B)p=q;C)*p=&n1;D)p=*q;(29)若有定义:intx=0,*p=&x;,则语句printf("%dn",*p);的输出结果是()。A)随机值B)0C)x的地址D)p的地址(30)设fun()函数的定义形式为()。voidfun(charch,floatx){…}则下列对函数fun的调用语句中,正确的是A)fun("abc",3.0);B)t=fun('D',16.5);C)fun('65',2.8);D)fun(32,32);(31)有下列程序:main(){inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p+2;printf("%dn",*p+*q);}程序运行后的输出结果是()。A)16B)10C)8D)6(32)有下列程序:main(){charp[]={'a','bv,'c'},q[]="abc";printf("%d%dn",sizeof(p),sizeof(q));};程序运行后的输出结果是()。A)44B)33C)34D)43(33)有下列程序:#definef(x)=(x*x)main(){inti1,i2;i1=f(8)/f(4);i2=f(4+4)/f(2+2);prinft("%d,%dn",i1,i2);}程序运行后的输出结果是()。A)64,28B)4,4C)4,3D)64,64(34)有下列程序:main(){chara1='M',a2='m';printf("%cn",(a1,a2));}下列叙述中正确的是()。A)程序输出大写字母MB)程序输出小写字母mC)格式说明符不足,编译出错D)程序运行时产生出错信息(35)有下列程序:#include124nmain(){charc1='1',c2='2';c1=getchar();c2=getchar();putchar(c1);putchar(c2);}当运行时输入:a后,下列叙述正确的是()。A)变量c1被赋予字符a,c2被赋予回车符B)程序将等待用户输入第2个字符C)变量c1被赋予字符a,c2中仍是原有字符2D)变量c1被赋予字符a,c2中将无确定值(36)有下列程序:main(){intk=5,n=0;while(k>0){switch(k){default:break;case1:n+=k;case2:case3:n+=k;}k--;}printf("%dn",n);}程序运行后的输出结果是()。A)0B)4C)6D)7(37)有下列程序:main(){inta[]={2,4,6,8,10},y=0,x,*p;p=&a[1];for(x=1;x<3;x++)y+=p[x];printf("%dn",y);}程序运行后的输出结果是()。A)10B)11C)14D)15(38)有下列程序:voidsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(aa+2,5);124nfor(i=0;i<10;i++)printf("%d,",aa[i]);printf("n");}程序运行后的输出结果是()。A)1,2,3,4,5,6,7,8,9,10,B)1,2,7,6,3,4,5,8,9,10,C)1,2,7,6,5,4,3,8,9,10,D)1,2,9,8,7,6,5,4,3,10,(39)有下列程序:voidsum(inta[]){a[0]=a[-1]+a[1];}main(){inta[10]={1,2,3,4,5,6,7,8,9,10};sum(&a[2]);printf("%dn",a[2]);}程序运行后的输出结果是()。A)6B)7C)5D)9(40)有下列程序:voidswap1(intc0[],intc1[]){intt;t=c0[0];c0[0]=c1[0];c1[0]=t;}voidswap2(int*c0,int*cl){intt;t=*c0;*c0=*c1;*c1=t;}main(){inta[2]={3,5},b[2]={3,5};swap1(a,a+1);swap2(&b[0],&b[1]);printf("%d%d%d%dn",a[0],a[1],b[0],b[1]);}程序运行后的输出结果是()。A)3553B)5335C)3535D)5353(41)有下列程序:#includemain(){charp[]={'a','b','c'},q[10]={'a','b','c'};printf("%d%dn",strlen(p),strlen(q));}下列叙述中正确的是()。A)在给p和q数组赋初值时,系统会自动添加字符串结束符,故输出的长度都为3B)由于p数组中没有字符串结束符,长度不能确定,但q数组中字符串长度为3C)由于q数组中没有字符串结束符,长度不能确定,但p数组中字符串长度为3D)由于p和q数组中都没有字符串结束符,故长度都不能确定124n(42)有下列程序,其中函数f()的功能是将多个字符串按字典顺序排序()。#includevoidf(char*p[],intn){char*t;inti,j;for(i=0;i0){t=p[i];p[i]=p[j],p[j]=t;}}main(){char*p[5]={"abc","aabdfg","abbd","dcdbe","cd"};f(p,5);printf("%dn",strlen(p[1]));}程序运行后的输出结果是()。A)2B)3C)6D)4(43)有下列程序:#includevoidf(char*s,char*t){chark;k=*s;*s=*t;*t=k;s++;t--;if(*s)f(s,t);}main(){charstr[10]="abcdefg",*p;p=str+strlen(str)/2+1;f(p,p-2);printf("%sn",str);}程序运行后的输出结果是()。A)abcdefgB)gfedcbaC)gbcdefaD)abedcfg(44)有下列程序:floatfl(floatn){returnn*n;}floatf2(floatn){return2*n;}main(){float(*p1)(float),(*p2)(float),(*t)(float),y1,y2;p1=f1;p2=f2;y1=p2(p1(2.0));t=p1;p1=p2;p2=t;y2=p2(p1(2.0));printf("%3.0f,%3.0fn",y1,y2);}124n程序运行后的输出结果是()。A)8,16B)8,8C)16,16D)4,8(45)有下列程序:inta=2;intf(intn){staticinta=3;intt=0;if(n%2){staticinta=4;t+=a++;}else{staticinta=5;t+=a++;}returnt+a++;}main(){ints=a,i;for(i=0;i<3;i++)s+=f(i);printf("%dn",s);}程序运行后的输出结果是()。A)26B)28C)29D)24(46)有下列程序:#includestructSTU{intnum;floatTolalScorc;};voidf(structSTUp){structSTUs[2]={{20044,550},{20045,537}};p.num=s[1].num;p.TotalScore=s[1].TotalScore;}main(){structSTUs[2]={{20041,703},{20042,580}};f(s[0]);printf("%d%3.0fn",s[0].num,s[0].TotalScore);}程序运行后的输出结果是()。A)20045537B)20044550C)20042580D)20041703(47)有下列程序:#includestructSTU{charname[10];intnum;};voidf(char*name,intnum){structSTUs[2]={{"SunDan",20044},{"Penghua",20045}};num=s[0].num;124nstrcpy(name,s[0].name);}main(){structSTUs[2]={{"YangSan",2004},{"LiSiGuo",20042}},*p;p=&s[1];f(p->name,p->num);printf("%s%dn",p->name,p->num);}程序运行后的输出结果是()。A)SunDan20042B)SunDan20044C)LiSiGuo20042D)YangSan20041(48)有下列程序:structSTU{charname[10];intnum;floatTotalScore;};voidf(structSTU*p){structSTUs[2]={{"SunDan",20044,550},{"Penghua",20045,537}},*q=s;++p;++q;*p=*q;}main(){structSTUs[3]={{"YangSan",20041,703},{"LiSiGuo",20042,580}};f(s);printf("%s%d%3.0fn",s[1].name,s[1].num,s[1].TotalScore);}程序运行后的输出结果是()。A)SunDan20044550B)Penghua20045537C)LiSiGuo20042580D)SunDan20041703(49)下列程序的功能是进行位运算:main(){unsignedchara,b;a=7^3;b=~4&3;printf("%d%dn",a,b);}程序运行后的输出结果是()。A)43B)73C)70D)40(50)有下列程序:#includemain(){FILE*fp;inti,k,n;fp=fopen("data.dat","w+");for(i=1;i<6;i++){fprintf(fp,"%d",i);if(i%3==0)fprintf(fp,"n");}rewind(fp);fscanf(fp,"%d%d",&k,&n);printf("%d%dn",k,n);124nfclose(fp);}程序运行后的输出结果是()。A)00B)12345C)14D)12二、填空题(每空2分,共40分)(1)数据管理技术发展过程经过人工管理、文件系统和数据库系统3个阶段,其中数据独立性最高的阶段是【1】。(2)算法复杂度主要包括时间复杂度和【2】复杂度。(3)在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块(桩模块)。其中【3】的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果。(4)一棵二叉树第六层(根结点为第一层)的结点数最多为【4】个。(5)数据结构分为逻辑结构和存储结构,循环队列属于【5】结构。(6)下列程序运行后的输出结果是【6】。main(){intx=0210;printf("%Xn",x);}(7)下列程序运行后的输出结果【7】。main(){inta=1,b=2,c=3;if(c=a)printf("%dn",c);elseprintf("%dn"b);}(8)已有定义:double*p;,请写出完整的语句,利用malloc函数使p指向一个双精度型的动态存储单元【8】。(9)下列程序运行后的输出结果是【9】。main(){charc;intn=100;floatf=10;doublex;x=f*=n/=(c=50);printf("%d%fn",n,x);}(10)下列程序的功能是计算:s=1+12+123+1234+12345。请填空。main(){intt=0,s=0,i;for(i=1;i<=5;i++}{t=i+【10】;s=s+t;}printf("s=%dn",s);}(11)已知字母A的ASCII码为65,下列程序运行后的输出结果是【11】。main(){chara,b;a='A'+'5'-'3';b=a+'6'-'2';printf("%d%cn",a,b);124n}(12)有下列程序:intsub(intn){return(n/10+n%10);}main(){intx,y;scanf("%d",&x);y=sub(sub(sub(x)));printf("%dn",y);}若运行时输入:1234,程序的输出结果是【12】。(13)下列函数sstrcat()的功能是实现字符串的连接,即将t所指字符串复制到s所指字符串的尾部。例如:s所指字符串为abcd,t所指字符串为efgh,函数调用后s所指字符串为abcdefgh。请填空。#includevoidsstrcat(char*s,char*t){intn;n=strlen(s);while(*(s+n)=【13】){s++,t++;}}(14)下列程序运行后的输出结果是【14】#includechar*ss(char*s){char*p,t;p=s+1;t=*s;while(*p){*(p-1)=*p;p++;}*(p-1)=t;returns;}main(){char*p,str[10]="abcdefgh";p=ss(str);printf("%sn",p);}(15)下列程序运行后的输出结果是【15】。intf(inta[],intn){if(n>=1)returnf(a,n-1)+a[n-1];elsereturn0;}main(){intaa[5]={1,2,3,4,5},s;s=f(aa,5);printf("%dn",s);}(16)下列程序运行后的输出结果是【16】。structNODE124n{intnum;tructNODE*next;};main(){structNODEs[3]={{1,''},{2,''},{3,''}},*p,*q,*r;intsum=0;s[0].next=s+1;s[1].next=s+2;s[2].next=s;p=s;q=p→next;r=q→next;sum+=q→next→num;sum+=r→next->next→num;printf("%dn",sum);}(17)下列程序的功能是输出如下形式的方阵:13141516910111256781234请填空。main(){inti,j,x;for(j=4;j【17】;j--){for(i=1;i<=4;i++){x=(j-1)*4+【18】;printf("%4d",x);}printf("n");}}(18)下列函数rotate的功能是:将a所指N行N列的二维数组中的最后一行放到b所指二维数组的第0列中,把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b所指二维数组中其他数据不变。#defineN4voidrotade(inta[][N],intb[][N]){inti,j;for(i=0;I0【18】i(18)【19】a[0][i]【20】b[i][0]2006年4月全国计算机等级考试笔试试卷二级公共基础知识和C语言程序设计(考试时间120分钟,满分100分)PDF版(非扫描)下载:2006年4月计算机二级C语言笔试真题一、选择题((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)ABCDEFB)DBEAFCC)ABDECFD)DEBFCA(7)在深度为7的满二叉树中,叶子结点的个数为()。124nA)32B)31C)64D)63(8)“商品”与“顾客”两个实体集之间的联系一般是()。A)一对一B)一对多C)多对一D)多对多(9)在E-R图中,用来表示实体的图形是()。A)矩形B)椭圆形C)菱形D)三角形(10)数据库DB、数据库系统DBS、数据库管理系统DBMS之间的关系是()。A)DB包含DBS和DBMSB)DBMS包含DB和DBSC)DBS包含DB和DBMSD)没有任何关系(11)下列不合法的用户标识符是()。A)j2_KEYB)DoubleC)4dD)_8_(12)下列不合法的数值常量是()。A)011B)1e1C)8.0E0.5D)0xabcd(13)下列不合法的字符常量是()。A)'18'B)'"'C)'\'D)'xcc'(14)表达式3.6-5/2+1.2+5%2的值是()。A)4.3B)4.8C)3.3D)3.8(15)下列能正确定义字符串的语句是()。A)charstr[]={'64'};B)charstr="kx43";C)charstr=";D)charstr[]="";(16)下列数组定义中错误的是()。A)intx[][3]={0};B)intx[2][3]={{l,2},{3,4},{5,6}};C)intx[][3]={{l,2,3},{4,5,6}};D)intx[2][3]={l,2,3,4,5,6};(17)若要求从键盘读入含有空格字符的字符串,应使用函数()。A)getc()B)gets()C)getchar()D)scanf()(18)下列4个程序中,完全正确的是()。A)#includeB)#includemain();main(){/*programming*/{/*/programming/*/printf("programming!n");}printf("programming!n");}C)#includeD)includemain()main(){/*/programming*/*/{/*programming*/printf("programming!n");}printf("programming!n");}(19)若有定义:floatx=1.5;inta=1,b=3,c=2;则正确的switch语句是()。124nA)switch(x)B)switch((int)x);{case1.0:printf("*n");{case1:printf("*n");case2.0:printf("**n");}case2:printf("**n");}C)switch(a+b)D)switch(a+b){case1:printf("*n");{case1:printf("*n");case2+1:printf("**n");}casec:printf("**n");}(20)若各选项中所用变量已正确定义,fun()函数中通过return语句返回一个函数值,下列选项中错误的程序是()。A)main()B)floatfun(inta,intb){……}{……x=fun(2,10);……}main()floatfun(inta,intb){……}{……x=fun(i,j);……}C)floatfun(int,int);D)main()main(){floatfun(intI,intj);{……x=fun(2,10);……}……x=fun(i,j);……}floatfun(inta,intb){……}floatfun(inta,intb){……}(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)已定义下列函数:intfun(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个结点。structnode{hardata;tructnode*next;}*p,*q,*r;现要将q和r所指结点交换前后位置,同时要保持链表的连续,下列不能完成此操作的语句是()。124nA)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)有下列程序段structst{intx;int*y;}*pt;inta[]={l,2},b[]={3,4};structstc[2]={10,a,20,b};pt=c;下列选项中表达式的值为11的是()。A)*pt?>yB)pt?>xC)++pt?>xD)(pt++)->x(27)设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为()。A)EOFB)非0值C)0D)NULL(28)设有以下语句inta=1,b=2,c;c=a^(b<<2);执行后,C的值为()。A)6B)7C)8D)9(29)有下列程序:#includemain(){charc1,c2,c3,c4,c5,c6;scanf("%c%c%c%c",&c1,&c2,&c3,&c4);c5=getchar();c6=getchar();putchar(c1);putchar(c2);printf("%c%cn",c5,c6);}程序运行后,若从键盘输入(从第1列开始)12345678则输出结果是()。A)1267B)1256C)1278D)1245(30)有下列程序:main(){inty=10;while(y--);printf("y=%dn",y);}程序执行后的输出结果是()。124nA)y=0B)y=-1C)y=1D)while构成无限循环(31)有下列程序:main(){inta=0,b=0,c=0,d=0;if(a=1)b=1;c=2;elsed=3;printf("%d,%d,%d,%dn",a,b,c,d);}程序输出()。A)0,1,2,0B)0,0,0,3C)1,1,2,0D)编译有错(32)有下列程序:main(){inti,j,x=0;for(i=0;i<2;i++){x++;for(j=0;j<=3;j++){if(j%2)continue;x++;}x++;}printf("x=%dn",x);}程序执行后的输出结果是()。A)x=4B)x=8C)x=6D)x=12(33)有下列程序:intfun1(doublea){returna*=a;}intfun2(doublex,doubley){doublea=0,b=0;a=fun1(x);b=fun1(y);return(int)(a+b);}main(){doublew;w=fun2(1.1,2.0);……}程序执行后变量w中的值是()。A)5.21B)5C)5.0D)0.0(34)有下列程序:main(){inti,t[][3]={9,8,7,6,5,4,3,2,1};for(i=0;i<3;i++)printf("%d",t[2-i][i]);}124n程序执行后的输出结果是()。A)753B)357C)369D)751(35)有下列程序:fun(charp[][10]){intn=0,i;for(i=0;i<7;i++)if(p[i][0]=='T')n++;returnn;}main(){charstr[][10]={"Mon","Tue","Wed","Thu","Fri","Sat","Sun"};printf("%dn",fun(str));}程序执行后的输出结果是()。A)1B)2C)3D)0(36)有下列程序:main(){inti,s=0,t[]={l,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2)s+=*(t+i);printf("%dn",s);}程序执行后的输出结果是()。A)45B)20C)25D)36(37)有下列程序:voidfun1(char*p){char*q;q=p;while(*q!=''){(*q)++;q++;}}main(){chara[]={"Program"},*p;p=&a[3];fun1(p);printf("%sn",a);}程序执行后的输出结果是()。A)ProhsbnB)PrphsbnC)ProgsbnD)Program(38)有下列程序:voidswap(char*x,char*y){chart;t=*x;*x=*y;*y=t;124n}main(){char*s1="abc",*s2="123";swap(s1,s2);printf("%s,%sn",s1,s2);}程序执行后的输出结果是()。A)123,abcB)abc,123C)1bc,a23D)321,cba(39)有下列程序:intfun(intn){if(n==1)return1;elsereturn(n+fun(n-1));}main(){intx;scanf("%d",&x);x=fun(x);printf("%dn",x);}执行程序时,给变量x输入10,程序的输出结果是()。A)55B)54C)65D)45(40)有下列程序:intfun(intx[],intn){staticintsum=0,i;for(i=0;imain(){FILE*fp;char*s1="Fortran",*s2="Basic";if((fp=fopen("test.txt","wb"))==NULL){printf("Can’topentest.txtfilen");exit(1);}fwrite(s1,7,1,fp);/*把从地址s1开始的7个字符写到fp所指文件中*/fseek(fp,0L,SEEK_SET);/*文件位置指针移到文件开头*/fwrite(s2,5,1,fp);fclose(fp);}A)BasicanB)BasicFortranC)BasicD)FortranBasic(44)下列叙述中错误的是()。A)C语言源程序经编译后生成后缀为.obj的目标程序B)C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件C)用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中D)C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令(45)下列叙述中错误的是()。A)算法正确的程序最终一定会结束B)算法正确的程序可以有零个输出C)算法正确的程序可以有零个输入D)算法正确的程序对于相同的输入一定有相同的结果(46)下列叙述中错误的是()。A)C程序必须由一个或一个以上的函数组成124nB)函数调用可以作为一个独立的语句存在C)若函数有返回值,必须通过return语句返回D)函数形参的值也可以传回给对应的实参(47)设有下列定义和语句charstr[20]="Program",*p;p=str;则下列叙述中正确的是()。A)*p与str[0]的值相等B)str与p的类型完全相同C)str数组长度和p所指向的字符串长度相等D)数组str中存放的内容和指针变量p中存放的内容相同(48)下列叙述中错误的是()。A)C程序中的#include和#define行均不是C语句B)除逗号运算符外,赋值运算符的优先级最低C)C程序中,j++;是赋值语句D)C程序中,+、-、*、/、%号是算术运算符,可用于整型和实型数的运算(49)下列叙述中正确的是()。A)预处理命令行必须位于C源程序的起始位置B)在C语言中,预处理命令行都以"#"开头C)每个C程序必须在开头包含预处理命令行:#includeD)C语言的预处理不能实现宏定义和条件编译的功能(50)下列叙述中错误的是()。A)可以通过typedef增加新的类型B)可以用typedef将已存在的类型用一个新的名字来代表C)用typedef定义新的类型名后,原有类型名仍有效D)用typedef可以为各种类型起别名,但不能为变量起别名二、填空题(每空2分,共40分)(1)对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为【1】。(2)在面向对象方法中,【2】描述的是具有相似属性与操作的一组对象。(3)在关系模型中,把数据看成是二维表,每一个二维表称为一个【3】。(4)程序测试分为静态分析和动态测试。其中【4】是指不执行程序,而只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。(5)数据独立性分为逻辑独立性与物理独立性。当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改,称为【5】。(6)若变量a,b已定义为int类型并赋值21和55,要求用printf函数以a=21,b=55的形式输出,请写出完整的的输出语句【6】。(7)下列程序用于判断a、b、c能否构成三角形,若能,输出YES,否则输出NO。当给a、b、c输入三角形三条边长时,确定a、b、c能构成三角形的条件是需同时满足三个条件:a+b>c,a+c>b,b+c>a。请填空。main(){floata,b,c;scanf("%f%f%f",&a,&b,&c);124nif(【7】)printf("YESn");/*a、b、c能构成三角形*/elseprintf("NOn");/*a、b、c不能构成三角形*/}(8)下列程序的输出结果是【8】。main(){inta[3][3]={{1,2,9},{3,4,8},{5,6,7}},i,s=0;for(i=0;i<3;i++)s+=a[i][i]+a[i][3-i-1];printf("%dn",s);}(9)当运行下列程序时,输入abcd,程序的输出结果是:【9】。insert(charstr[]){inti;i=strlen(str);while(i>0){str[2*i]=str[i];str[2*i-1]='*';i--;}printf("%sn",str);}main(){charstr[40];scanf("%s",str);insert(str);}(10)下列程序的运行结果是:【10】。fun(intt[],intn){inti,m;if(n==1)returnt[0];elseif(n>=2){m=fun(t,n-1);returnm;}}main(){inta[]={11,4,6,3,8,2,3,5,9,2};printf("%dn",fun(a,10));}(11)现有两个C程序文件T18.c和myfun.c同在TC系统目录(文件夹)下,其中T18.c文件如下:#include#include"myfun.c"main(){fun();printf("n");}myfun.c文件如下:voidfun(){chars[80],c;intn=0;while((c=getchar())!='n')s[n++]=c;n--;124nwhile(n>=0)printf("%c",s[n--]);}当编译连接通过后,运行程序T18时,输入Thank!则输出结果是:【11】。(12)下列函数fun的功能是返回str所指字符串中以形参c中字符开头的后续字符串的首地址,例如:str所指字符串为:Hello!,c中的字符为e,则函数返回字符串:ello!的首地址。若str所指字符串为空串或不包含c中的字符,则函数返回NULL。请填空。char*fun(char*str,charc){intn=0;char*p=str;if(p!=NULL)while(p[n]!=c&&p[n]!='')n++;if(p[n]=='')returnNULL;return(【12】);}(13)下列程序的功能是:输出100以内(不含100)能被3整除且个位数为6的所有整数,请填空。main()(inti,j;for(i=0;【13】;i++){j=i*10+6;if(【14】)continue;printf("%d",j);}}(14)下列isprime函数的功能是判断形参a是否为素数,是素数,函数返回1,否则返回0。请填空intisprime(inta){inti;for(i=2;i<=a/2;i++)if(a%i==0)【15】;【16】;}(15)下列程序的功能是输入任意整数给n后,输出n行由大写字母A开始构成的三角形字符阵列图形。例如,输入整数5时(注意:n不得大于10),程序运行结果如下:ABCDEFGHIJKLMNO请填空完成该程序。main(){inti,j,n;charch='A';scanf("%d",&n);if(n<11)124n{for(i=1;i<=n;i++){for(j=1;j<=n-i+1;j++){printf("%2c",ch);【17】;}【18】;}}elseprintf("nistoolarge!n")printf("n");}(16)下列程序中fun()函数的功能是:构成一个如图所示的带头结点的单向链表,在结点的数据域中放入了具有两个字符的字符串。Disp()函数的功能是显示输出该单链表中所有结点中的字符串。请填空完成disp()函数。#includetypedefstructnode/*链表结点结构*/{charsub[3];structnode*next;}Node;Nodefun(chars)/*建立链表*/{……}voiddisp(Node*h){Node*p;p=h?>next;while(【19】){printf("%sn",P?>sub);p=【20】;}}main(){Node*hd;hd=fun();disp(hd);printf("n");}一、选择题(1)D)(2)A)(3)D)(4)B)(5)A)(6)D)(7)C)(8)D)(9)A)(10)C)(11)C)(12)C)(13)A)(14)D)(15)D)(16)B)(17)B)(18)B)(19)C)(20)A)(21)B)(22)A)(23)B)(24)D)(25)D)(26)C)(27)B)(28)D)(29)D)(30)B)(31)D)(32)B)(33)C)(34)B)(35)B)(36)C)(37)A)(38)C)(39)A)(40)C)(41)A)(42)D)(43)A)(44)D)(45)B)(46)D)(47)A)(48)D)124n(49)B)(50)A)二、填空题(1)【1】45(2)【2】类(3)【3】关系(4)【4】静态测试(5)【5】物理独立性(6)【6】printf("a=%d,b=%d",a,b);(7)【7】(a+b>c)&&(a+c>b)&&(b+c>a)(8)【8】30(9)【9】a*b*c*d*(10)【10】11(11)【11】!knahT(12)【12】p+n(13)【13】i<10【14】j%3!=0(14)【15】return0【16】return1(15)【17】ch++【18】printf("n");(16)【19】p!=NULL【20】p->next2006年9月全国计算机等级考试笔试试卷二级公共基础知识和C语言程序设计(考试时间120分钟,满分100分)PDF版(非扫描)下载:2006年9月计算机二级C语言真题一、选择题((1)-(10)每小题2分,(11)-(50)每小题1分,共60分)(1)下列选项中不符合良好程序设计风格的是()。A)源程序要文档化B)数据说明的次序要规范化C)避免滥用goto语句D)模块设计要保证高耦合、高内聚(2)从工程管理角度,软件设计一般分为两步完成,它们是()。A)概要设计与详细设计B)数据设计与接口设计C)软件结构设计与数据设计D)过程设计与数据设计(3)下列选项中不属于软件生命周期开发阶段任务的是()。A)软件测试B)概要设计C)软件维护D)详细设计(4)在数据库系统中,用户所见的数据模式为()。A)概念模式B)外模式C)内模式D)物理模式(5)数据库设计的4个阶段是:需求分析、概念设计、逻辑设计和()。A)编码设计B)测试阶段C)运行阶段D)物理设计(6)设有如下3个关系表下列操作中正确的是()。A)T=R∩SB)T=R∪SC)T=R×SD)T=R/S(7)下列叙述中正确的是()。A)一个算法的空间复杂度大,则其时间复杂度也必定大B)一个算法的空间复杂度大,则其时间复杂度必定小C)一个算法的时间复杂度大,则其空间复杂度必定小D)上述三种说法都不对124n(8)在长度为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为()。A)63B)64C)6D)7(9)数据库技术的根本目标是要解决数据的()。A)存储问题B)共享问题C)安全问题D)保护问题(10)对下列二叉树进行中序遍历的结果是()。A)ACBDFEGB)ACBDFGEC)ABDCGEFD)FCADBEG(11)下列叙述中错误的是()。A)一个C语言程序只能实现一种算法B)C程序可以由多个程序文件组成C)C程序可以由一个或多个函数组成D)一个C函数可以单独作为一个C程序文件存在(12)下列叙述中正确的是()。A)每个C程序文件中都必须要有一个main()函数B)在C程序中main()函数的位置是固定的C)C程序中所有函数之间都可以相互调用,与函数所处位置无关D)在C程序的函数中不能定义另一个函数(13)下列定义变量的语句中错误的是()。A)int_int;B)doubleint_;C)charFor;D)floatUS$;(14)若变量x、y已正确定义并赋值,下列符合C语言语法的表达式是()。A)++x,y=x--B)x+1=yC)x=x+10=x+yD)double(x)/10(15)下列关于逻辑运算符两侧运算对象的叙述中正确的是()。A)只能是整数0或1B)只能是整数0或非0整数C)可以是结构体类型的数据D)可以是任意合法的表达式(16)若有定义intx,y;并已正确给变量赋值,则下列选项中与表达式(x-y)?(x++):(y++)中的条件表达式(x-y)等价的是()。A)(x-y>0)B)(x-y<0)C)(x-y<0‖x-y>0)D)(x-y==0)(17)有下列程序:main(){intx,y,z;x=y=1;z=x++,y++,++y;printf("%d,%d,%dn",x,y,z);}程序运行后的输出结果是()。A)2,3,3B)2,3,2C)2,3,1D)2,2,1(18)设有定义:inta;floatb;执行scanf("%2d%f",&a,&b);语句时,若从键盘输入876543.0,a和b的值分别是()。124nA)876和543.000000B)87和6.000000C)87和543.000000D)76和543.000000(19)有下列程序:main(){inta=0,b=0;a=10;/*给a赋值b=20;给b赋值*/printf("a+b=%dn",a+b);/*输出计算结果*/}程序运行后的输出结果是()。A)a+b=10B)a+b=30C)30D)出错(20)在嵌套使用if语句时,C语言规定else总是()。A)和之前与其具有相同缩进位置的if配对B)和之前与其最近的if配对C)和之前与其最近的且不带else的if配对D)和之前的第一个if配对(21)下列叙述中正确的是()。A)break语句只能用于switch语句B)在switch语句中必须使用defaultC)break语句必须与switch语句中的case配对使用D)在switch语句中,不一定使用break语句(22)有下列程序:main(){intk=5;while(--k)printf("%d",k-=3);printf("n");}执行后的输出结果是()。A)1B)2C)4D)死循环(23)有下列程序:main(){inti;for(i=1;i<=40;i++){if(i++%5==0)if(++i%8==0)printf("%d",i);}printf("n");}执行后的输出结果是()。A)5B)24C)32D)40(24)下列选项中,值为1的表达式是()。A)1-'0'B)1-''C)'1'-0D)''-'0'124n(25)有下列程序:fun(intx,inty){return(x+y);}main(){inta=1,b=2,c=3,sum;sum=fun((a++,b++,a+b),c++);printf("%dn",sum);}执行后的输出结果是()。A)6B)7C)8D)9(26)有下列程序:main(){chars[]="abcde";s+=2;printf("%dn",s[0]);}执行后的结果是()。A)输出字符a的ASCII码B)输出字符c的ASCII码C)输出字符cD)程序出错(27)有下列程序:fun(intx,inty){staticintm=0,i=2;i+=m+1;m=i+x+y;returnm;}main(){intj=1,m=1,k;k=fun(j,m);printf("%d,",k);k=fun(j,m);printf("%dn",k);}执行后的输出结果是()。A)5,5B)5,11C)11,11D)11,5(28)有下列程序:fun(intx){intp;if(x==0‖x==1)return(3);p=x-fun(x-2);returnp;}main(){printf("%dn",fun(7));}执行后的输出结果是()。A)7B)3C)2D)0124n(29)在16位编译系统上,若有定义inta[]={10,20,30},*p=&a;,当执行p++;后,下列说法错误的是()。A)p向高地址移了一个字节B)p向高地址移了一个存储单元C)p向高地址移了两个字节D)p与a+1等价(30)有下列程序:main(){inta=1,b=3,c=5,*p;int*p1=&a,*p2=&b,*p3=&c;*p=*p1*(*p2);printf("%dn",*p);}执行后的输出结果是()。A)1B)2C)3D)4(31)若有定义:intw[3][5];,则下列不能正确表示该数组元素的表达式是()。A)*(*w+3)B)*(*w+1)[4]C)*(*(*w+1))D)*(&w[0][0]+1)(32)若有以下函数首部intfun(doublex[10],int*n)则下列针对此函数的函数声明语句中正确的是()。A)intfun(doublex,int*n);B)intfun(double,int);C)intfun(double*x,intn);D)intfun(double*,int*);(33)若有定义语句:intk[2][3],*pk[3];,则下列语句中正确的是()。A)pk=k;B)pk[0]=&k[1][2];C)pk=k[0];D)pk[1]=k;(34)有下列程序:voidchange(intk[]){k[0]=k[5];}main(){intx[10]={1,2,3,4,5,6,7,8,9,10},n=0;while(n<=4){change(&x[n]);n++;}for(n=0;n<5;n++)printf("%d",x[n]);printf("n");}程序运行后输出的结果是()。A)678910B)13579C)12345D)62345(35)若要求定义具有10个int型元素的一维数组a,则下列定义语句中错误的是()。A)#defineN10B)#definen5inta[N];inta[2*n];C)inta[5+5];D)intn=10,a[n];(36)有下列程序:main(){intx[3][2]={0},i;for(i=0;i<3;i++)scanf("%d",x[i]);124nprintf("%3d%3d%3dn",x[0][0],x[0][1],x[1][0]);}若运行时输入:246,则输出结果为()。A)200B)204C)240D)246(37)有下列程序:main(){chars[]={"aeiou"},*ps;ps=s;printf("%cn",*ps+4);}程序运行后的输出结果是()。A)aB)eC)uD)元素s[4]的地址(38)下列语句中存在语法错误的是()。A)charss[6][20];ss[1]="right?";B)charss[][20]={"right?"};C)char*ss[6];ss[1]="right?";D)charss[]={"right?"};(39)若有定义:char*x="abcdefghi";,下列选项中正确运用了strcpy函数的是()。A)chary[10];strcpy(y,x[4]);B)chary[10];strcpy(++y,&x[1]);C)chary[10],*s;strcpy(s=y+5,x);D)chary[10],*s;strcpy(s=y+1,x+1);(40)有下列程序:intadd(inta,intb){return(a+b);}main(){intk,(*f)(),a=5,b=10;f=add;…}则下列函数调用语句错误的是()。A)k=(*f)(a,b);B)k=add(a,b);C)k=*f(a,b);D)k=f(a,b);(41)有下列程序:#includemain(intargc,char*argv[]){inti=1,n=0;while(i#defineN5#defineMN+1#definef(x)(x*M)main(){inti1,i2;i1=f(2);i2=f(1+1);printf("%d%dn",i1,i2);}程序的运行结果是()。A)1212B)117C)1111D)127(44)设有以下语句:typedefstructTT{charc;inta[4];}CIN;则下列叙述中正确的是()。A)可以用TT定义结构体变量B)TT是struct类型的变量C)可以用CIN定义结构体变量D)CIN是structTT类型的变量(45)有下列结构体说明、变量定义和赋值语句:structSTD{charname[10];intage;charsex;}s[5],*ps;ps=&s[0];则下列scanf函数调用语句中错误引用结构体变量成员的是()。A)scanf("%s",s[0].name);B)scanf("%d",&s[0].age);C)scanf("%c",&(ps->sex));D)scanf("%d",ps->age);(46)若有下列定义和语句:uniondata{inti;charc;floatf;}x;inty;则下列语句正确的是()。124nA)x=10.5;B)x.c=101;C)y=x;D)printf("%dn",x);(47)程序中已构成如下图所示的不带头结点的单向链表结构,指针变量s、p、q均已正确定义,并用于指向链表结点,指针变量s总是作为头指针指向链表的第一个结点。若有下列程序段q=s;s=s->next;p=s;while(p->next)p=p->next;p->next=q;q->next=NULL;该程序段实现的功能是()。A)首结点成为尾结点B)尾结点成为首结点C)删除首结点D)删除尾结点(48)若变量已正确定义,则下列语句的输出结果是()。s=32;s^=32;printf("%d",s);A)-1B)0C)1D)32(49)下列叙述中正确的是()。A)C语言中的文件是流式文件,因此只能顺序存取数据B)打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖C)在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据D)当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失(50)有下列程序:#includemain(){FILE*fp;inti;charch[]="abcd",t;fp=fopen("abc.dat","wb+");for(i=0;i<4;i++)fwrite(&ch[i],1,1,fp);fseek(fp,-2L,SEEK_END);fread(&t,1,1,fp);fclose(fp);printf("%cn",t);}程序执行后的输出结果是()。A)dB)cC)bD)a二、填空题(每空2分,共40分)注意:以命令关键字填空的必须拼写完整。(1)下列软件系统结构图的宽度为【1】。(2)【2】的任务是诊断和改正程序中的错误。(3)一个关系表的行称为【3】。(4)按“先进后出”原则组织数据的数据结构是【4】。124n(5)数据结构分为线性结构和非线性结构,带链的队列属于【5】。(6)设有定义:floatx=123.4567;,则执行下列语句后的输出结果是【6】。printf("%fn",(int)(x*100+0.5)/100.0);(7)下列程序运行后的输出结果是【7】。main(){intm=011,n=11;printf("%d%dn",++m,n++);}(8)下列程序运行后的输出结果是【8】。main(){intx,a=1,b=2,c=3,d=4;x=(ax)?x:d;printf("%dn",x);}(9)有下列程序,若运行时从键盘输入:18,11,则程序的输出结果是【9】。main(){inta,b;printf("Entera,b:");scanf("%d,%d",&a,&b);while(a!=b){while(a>b)a-=b;while(b>a)b-=a;}printf("%3d%3dn",a,b);}(10)下列程序的功能是:将输入的正整数按逆序输出。例如:若输入135则输出531。请填空。#includemain(){intn,s;printf("Enteranumber:");scanf("%d",&n);printf("Output:");do{s=n%10;printf("%d",s);【10】;}while(n!=0);printf("n");}(11)下列程序中,fun()函数的功能是计算x2-2x+6,主函数中将调用fun()函数计算:y1=(x+8)2-2(x+8)+6y2=sin2(x)-2sin(x)+6请填空。#include"math.h"doublefun(doublex){return(x*x-2*x+6);}main(){doublex,y1,y2;124nprintf("Enterx:");scanf("%lf",&x);y1=fun(【11】);y2=fun(【12】);printf("y1=%lf,y2=%lfn",y1,y2);}(12)下列程序的功能是将N行N列二维数组中每一行的元素进行排序,第0行从小到大排序,第1行从大到小排序,第2行从小到大排序,第3行从大到小排序,例如:请填空。#defineN4voidsort(inta[][N]){inti,j,k,t;for(i=0;ia[i][k]){t=a[i][j];a[i][j]=a[i][k];a[i][k]=t;}}voidoutarr(inta[N][N]){……}main(){intaa[N][N]={{2,3,4,1},{8,6,5,7},{11,12,10,9},{15,14,16,13}};outarr(aa);/*以矩阵的形式输出二维数组*/sort(aa);outarr(aa);}(13)下列程序中的函数strcpy2()实现字符串两次复制,即将t所指字符串复制两次到s所指内存空间中,全并形成一个新字符串。例如。若t所指字符串为:efgh,调用strcpy2后,s所指字符串为:efghefgh。请填空。#include#includevoidstrcpy2(char*s,char*t){char*p=t;while(*s++=*t++);s=【15】;while(【16】=*p++);}main()124n{charstr1[100]="abcd",str2[]="efgh";strcpy2(str1,str2);printf("%sn",str1);}(14)下列程序的运行结果是:【17】。#includeintf(inta[],intn){if(n>1)returna[0]+f(a+1,n-1);elsereturna[0];}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},s;s=f(aa+2,4);printf("%dn",s);}(15)下列程序由两个源程序文件:t4.h和t4.c组成,程序编译运行的结果是:【18】。t4.h的源程序为:#defineN10#definef2(x)(x*N)t4.c的源程序为:#include#defineM8#definef(x)((x)*M)#include"t4.h"main(){inti,j;i=f(1+1);j=f2(1+1);printf("%d%dn",i,j);}(16)下列程序的功能是建立一个有3个结点的单循环链表,然后求各个结点数值域data中数据的和。请填空。#include#includestructNODE{intdata;structNODE*next;};main(){structNODE*p,*q,*r;intsum=0;p=(structNODE*)malloc(sizeof(structNODE));q=(structNODE*)malloc(sizeof(structNODE));r=(structNODE*)malloc(sizeof(structNODE));p->data=100;q->data=200;r->data=300;124np->next=q;q->next=r;r->next=p;sum=p->data+p->next->data+r->next->next【19】;printf("%dn",sum);}(17)有下列程序,其功能是:以二进制"写"方式打开文件d1.dat,写入1~100这100个整数后关闭文件。再以二进制"读"方式打开文件d1.dat,将这100个整数读入到另一个数组b中,并打印输出。请填空。#includemain(){FILE*fp;inti,a[100],b[100];fp=fopen("d1.dat","wb");for(i=0;i<100;i++),a[i]=i+1;fwrite(a,sizeof(int),100,fp);fclose(fp);fp=fopen("d1.dat",【20】);fread(b,sizeof(int),100,fp);fclose(fp);for(i=0;i<100;i++)printf("%dn",b[i]);}一、选择题(1)D)(2)A)(3)C)(4)B)(5)D)(6)C)(7)D)(8)B)(9)B)(10)A)(11)A)(12)D)(13)D)(14)A)(15)D)(16)D)(17)C)(18)B)(19)A)(20)C)(21)D)(22)A)(23)C)(24)B)(25)C)(26)D)(27)B)(28)C)(29)B)(30)C)(31)C)(32)C)(33)B)(34)A)(35)D)(36)B)(37)B)(38)A)(39)D)(40)C)(41)C)(42)A)(43)B)(44)C)(45)D)(46)B)(47)A)(48)B)(49)D)(50)B)二、填空题(1)【1】45(2)【2】类(1)【1】3(2)【2】程序调试(3)【3】元组(4)【4】栈(5)【5】线性结构(6)【6】123.460000(7)【7】1011(8)【8】1(9)【9】11(10)【10】n/=10或n=n/10(11)【11】x+8【12】sin(x)(12)【13】j+1【14】i%2==1(13)【15】s-1【16】*s++(14)【17】18(15)【18】1611(16)【19】->next->data(17)【20】“rb”124n2007年4月全国计算机等级考试笔试试卷二级公共基础知识和C语言程序设计(考试时间120分钟,满分100分)PDF版(非扫描)下载:2007年4月计算机二级C语言真题一、选择题((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)DYBEAFCZXB)YDEBFZXCAC)ABDYECFXZD)ABCDEFXYZ(7)某二叉树中有n个度为2的结点,则该二叉树中的叶子结点数为()。A)n+1B)n-1C)2nD)n/2(8)在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是()。A)并B)交C)投影D)笛卡儿乘积(9)在E-R图中,用来表示实体之间联系的图形是()。A)矩形B)椭圆形C)菱形D)平行四边形124n(10)下列叙述中错误的是()。A)在数据库系统中,数据的物理结构必须与逻辑结构一致B)数据库技术的根本目标是要解决数据的共享问题C)数据库设计是指在已有数据库管理系统的基础上建立数据库D)数据库系统需要操作系统的支持(11)在算法中,对需要执行的每一步操作,必须给出清楚、严格的规定。这属于算法的()。A)正当性B)可行性C)确定性D)有穷性(12)下列叙述中错误的是()。A)计算机不能直接执行用C语言编写的源程序B)C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件C)后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件D)后缀为.obj和.exe的二进制文件都可以直接运行(13)按照C语言规定的用户标识符命名规则,不能出现在标识符中的是()。A)大写字母B)连接符C)数字字符D)下划线(14)下列叙述中错误的是()。A)C语言是一种结构化程序设计语言B)结构化程序由顺序、分支、循环3种基本结构组成C)使用3种基本结构构成的程序只能解决简单问题D)结构化程序设计提倡模块化的设计方法(15)对于一个正常运行的C程序,下列叙述中正确的是()。A)程序的执行总是从main函数开始,在main函数结束B)程序的执行总是从程序的第一个函数开始,在main函数结束C)程序的执行总是从main函数开始,在程序的最后一个函数中结束D)程序的执行总是从程序中的第一个函数开始,在程序的最后一个函数中结束(16)设变量均已正确定义,若要通过scanf("%d%c%d%c",&a1,&c1,&a2,&c2);语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y。下列所示的输入形式中正确的是(注:口代表空格字符)()。A)10□X□20□YB)10□X20□YC)10□X20YD)10X20□Y(17)若有代数式nx+ex,(其中e仅代表自然对数的底数,不是变量),则下列能够正确表示该代数式的C语言表达式是()。A)sqrt(abs(n^x+e^x))B)sqrt(fabs(pow(n,x)+pow(x,e)))C)sqrt(fabs(pow(n,x)+exp(x)))D)sqrt(fabs(pow(x,n)+exp(x)))(18)设有定义:intk=0;,下列选项的4个表达式中与其他3个表达式的值不相同的是()。A)k++B)k+=1C)++kD)k+1124n(19)有下列程序,其中%u表示按无符号整数输出。main(){unsignedintx=0xFFFF;/*x的初值为十六进制数*/printf("%un",x);}程序运行后的输出结果是()。A)-1B)65535C)32767D)0xFFFF(20)设变量x和y均已正确定义并赋值。下列if语句中,在编译时将产生错误信息的是()。A)if(x++);B)if(x>y&&y!=0);C)if(x>0)x--D)if(y<0){;}elsey++;elsex++;(21)下列选项中,当x为大于l的奇数时,值为0的表达式是()。A)x%2==1B)x/2C)x%2!=0D)x%2==0(22)下列叙述中正确的是()。A)break语句只能用于switch语句体中B)continue语句的作用是使程序的执行流程跳出包含它的所有循环C)break语句只能用在循环体内和switch语句体内D)在循环体内使用break语句和continue语句的作用相同(23)有下列程序:main(){intk=5,n=0;do{switch(k){case1:case3:n+=1;k--;break;default:n=0;k--;case2:case4;n+=2;k--;break;}printf("%d",n);}while(k>0&&n<5);}程序运行后的输出结果是()。A)235B)0235C)02356D)2356(24)有下列程序:main(){inti,j;for(i=1;i<4;i++){for(j=i;j<4;j++)printf("%d*%d=%d",i,j,i*j);printf("n");}}124n程序运行后的输出结果是()。A)1*1=11*2=21*3=3B)1*1=11*2=21*3=32*1=22*2=42*2=42*3=63*1=33*3=9C)1*1=1D)1*1=11*2=22*2=42*1=22*2=41*3=32*3=63*3=93*1=33*2=63*3=9(25)下列合法的字符型常量是()。A)'x13'B)'81'C)'65'D)"n"(26)在C语言中,函数返回值的类型最终取决于()。A)函数定义时在函数首部所说明的函数类型B)return语句中表达式值的类型C)调用函数时主调函数所传递的实参类型D)函数定义时形参的类型(27)已知大写字母A的ASCII码是65,小写字母a的ASCII码是97。下列不能将变量c中的大写字母转换为对应小写字母的语句是()。A)c=(c-'A')%26+'a'B)c=c+32C)c=c-'A'+'a'D)c=('A'+C)%26-'a'(28)有下列函数:intfun(char*s){char*t=s;while(*t++);return(t-s);}该函数的功能是()。A)比较两个字符串的大小B)计算s所指字符串占用内存字节的个数C)计算s所指字符串的长度D)将s所指字符串复制到字符串t中(29)设已有定义:floatx;,则下列对指针变量p进行定义且赋初值的语句中正确的是()。A)float*p=1024;B)int*p=(float)x;C)floatp=&x;D)float*p=&x;(30)有下列程序:#includemain(){intn,*p=NULL;*p=&n;printf("Inputn:");scanf("%d",&p);printf("outputn:");printf("%dn",p);}该程序试图通过指针p为变量n读入数据并输出,但程序有多处错误,下列语句正确的是()。A)intn,*p=NULL;B)*p=&n;124nC)scanf("%d",&p)D)printf("%dn",p);(31)下列程序中函数f的功能是:当flag为1时,进行由小到大排序;当flag为0时,进行由大到小排序。voidf(intb[],intn,intflag){inti,j,t;for(i=0;ib[j]:b[i]a[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;}/*按列排序*/for(i=0;i<4;i++)printf("%d,",a[i][i]);}程序运行后的输出结果是()。A)1,6,5,7,B)8,7,3,1,C)4,7,5,2,D)1,6,2,1,(35)有下列程序:main(){inta[4][4]={{1,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,k,t;for(i=0;i<3;i++)for(k=i+l;k<4;k++)if(a[i][i]main(){charp[20]={'a','b','c','d'},q[]="abc",r[]="abcde";strcpy(p+strlen(q),r);strcat(p,q);printf("%d%dn",sizeof(p),strlen(p));}124n程序运行后的输出结果是()。A)209B)99C)2011D)1111(38)有下列程序:#includemain(){charp[20]={'a','b','c','d'},q[]="abc",r[]="abcde";strcat(p,r);strcpy(p+strlen(q),q);printf("%dn",strlen(p));}程序运行后的输出结果是()。A)9B)6C)11D)7(39)有下列程序:#includevoidf(charp[][10],intn)/*字符串从小到大排序*/{chart[10];inti,j;for(i=0;i0){strcpy(t,p[i]);strcpy(p[i],p[j]);strcpy(p[j],t);}}main(){charp[5][10]={"abc","aabdfg","abbd","dcdbe","cd"};f(p,5);printf("%dn",strlen(p[0]));}程序运行后的输出结果是()。A)2B)4C)6D)3(40)有下列程序:voidf(intn,int*r){intrl=0;if(n%3==0)r1=n/3;elseif(n%5==0)r1=n/5;elseif(--n,&r1);*r=r1;}main(){intm=7,r;f(m,&r);printf("%d",r);}程序运行后的输出结果是()。A)2B)1C)3D)0(41)有下列程序:main(intargc,char*argv[])124n{intn=0,i;for(i=l;in-1;i++)for(j=i+1;jn;j++)if(p->a[i]>p->a[j]){t=p->a[i];p->a[i]=p->a[j];p->a[j]=t;}}main(){inti;structSs={10,{2,3,l,6,8,7,5,4,10,9}};f(&s);for(i=0;imain(){FILE*fp;intk,n,a[6]={1,2,3,4,5,6};fp=fopen("d2.dat","w");fprintf(fp,"%d%d%dn",a[0],a[1],a[2]);fprintf(fp,"%d%d%dn",a[3],a[4],a[5]);fclose(fp);fp=fopen("d2.dat","r");fscanf(fp,"%d%d",&k,&n);printf("%d%dn",k,n);fclose(fp);}程序运行后的输出结果是()。A)12B)14C)1234D)123456(50)有下列程序:#includemain(){FILE*fp;inti,a[6]={l,2,3,4,5,6};fp=fopen("d3.dat","w+b");fwrite(a,sizeof(int),6,fp);/*该语句使读文件的位置指针从文件头向后移动3个int型数据*/fseek(fp,sizeof(int)*3,SEEK_SET);fread(a,sizeof(int),3,fp);fclose(fp);for(i=0;i<6;i++)printf("%d,",a[i]);}程序运行后的输出结果是()。A)4,5,6,4,5,6,B)1,2,3,4,5,6,C)4,5,6,1,2,3,D)6,5,4,3,2,1,二、填空题(每空2分,共40分)(1)在深度为7的满二叉树中,度为2的结点个数为【1】。(2)软件测试分为白箱(盒)测试和黑箱(盒)测试。等价类划分法属于【2】测试。(3)在数据库系统中,实现各种数据管理功能的核心软件称为【3】。(4)软件生命周期可分为多个阶段,一般分为定义阶段、开发阶段和维护阶段。编码和测试属于【4】阶段。(5)在结构化分析使用的数据流图(DFD)中,利用【5】对其中的图形元素进行确切解释。(6)执行下列程序后的输出结果是【6】。main(){inta=10;a=(3*5,a+4);printf("a=%dn",a);}(7)当执行下列程序时,输入1234567890,则其中while循环体将执行【7】次。124n#includemain(){charch;while((ch=getchar())=='0')printf("#");}(8)下列程序的运行结果是【8】。intk=0;voidfun(intm){m+=k;k+=m;printf("m=%dk=%d",m,k++);}main(){inti=4;fun(i++);printf("i=%dk=%dn",i,k);}(9)下列程序的运行结果是【9】。main(){inta=2,b=7,c=5;switch(a>0){case1:switch(b<0){case1:printf("@");break;case2:printf("!");break;}case0:switch(c==5){case0:printf("*");break;case1:printf("#");break;case2:printf("$");break;}default:printf("&");}printf("n");}(10)下列程序的输出结果是【10】。#includemain(){printf("%dn",strlen("IBMn0121\"));}(11)已定义charch=‘$’;inti=1,j;,执行j!=ch&&i++以后,i的值为【11】。(12)下列程序的输出结果是【12】。#includemain(){chara[]={'1','2','3','4',''};printf("%d%dn",sizeof(a),strlen(a));}(13)设有定义语句:inta[][3]={{0},{1}{2}};,则数组元素a[1][2]的值是【13】。(14)下列程序的功能是:求出数组x中各相邻两个元素的和依次存放到a数组中,然后输124n出。请填空。main(){intx[10],a[9],i;for(i=0;i<10;i++)scanf("%d",&x[i]);for(【14】;i<10;i++)a[i-1]=x[i]+【15】;.for(i=0;i<9;i++)printf("%d",a[i]);printf("");}(15)下列程序的功能:利用指针指向3个整型变量,并通过指针运算找出3个数中的最大值,输出到屏幕上。请填空。main(){intx,y,z,max,*px,*py,*pz,*pmax;scanf("%d%d%d",&x,&y,&z);px=&x;py=&y;pz=&z;pmax=&max;【16】;if(*pmax<*py)*pmax=*py;if(*pmax<*pz)*pmax=*pz;printf("max=%dn",max);}(16)下列程序的输出结果是【17】。intfun(int*x,intn){if(n==0)returnx[0];elsereturnx[0]+fun(x+1,n-1);}main(){inta[]={1,2,3,4,5,6,7};printf("%dn",fun(a,3));}(17)下列程序的输出结果是【18】。#includemain(){char*s1,*s2,m;s1=s2=(char*)malloc(sizeof(char));*s1=15;*s2=20;m=*s1+*s2;printf("%dn",m);}(18)设有说明:structDATE{intyear;intmonth;intday;};请写出一条定义语句,该语句定义d为上述结构体类型变量,并同时为其成员year、month、day依次赋初值2006、10、1:【19】。(19)设有定义:FILE*fw;,请将以下打开文件的语句补充完整,以便可以向文本文件readme.txt的最后续写内容。fw=fopen("readme.txt",【20】);一、选择题124n(1)B)(2)D)(3)A)(4)C)(5)D)(6)C)(7)A)(8)B)(9)C)(10)A)(11)C)(12)D)(13)B)(14)C)(15)A)(16)A)(17)C)(18)A)(19)B)(20)C)(21)D)(22)C)(23)B)(24)B)(25)A)(26)A)(27)D)(28)C)(29)D)(30)A)(31)B)(32)B)(33)D)(34)A)(35)B)(36)B)(37)C)(38)B)(39)C)(40)A)(41)D)(42)B)(43)D)(44)A)(45)A)(46)A)(47)C)(48)B)(49)D)(50)A)二、填空题(1)【1】63(2)【2】黑箱(盒)测试(3)【3】数据库管理系统(4)【4】开发阶段(5)【5】数据字典(6)【6】a=14(7)【7】0(8)【8】m=4k=4i=5k=5(9)【9】#&(10)【10】9(11)【11】2(12)【12】54(13)【13】0(14)【14】i=1【15】x[i-1](15)【16】*pmax=*px;(16)【17】10(17)【18】40(18)【19】structDATEd={2006,10,1};(19)【20】"a"2007年9月全国计算机等级考试笔试试卷二级公共基础知识和C语言程序设计(考试时间120分钟,满分100分)PDF版(非扫描)下载:2007年9月计算机二级C语言真题一、选择题((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)程序的可读性好124nC)程序中要有必要的注释D)输入数据前要有提示信息(5)下列叙述中正确的是()。A)程序执行的效率与数据的存储结构密切相关B)程序执行的效率只取决于程序的控制结构C)程序执行的效率只取决于所处理的数据量D)以上三种说法都不对(6)下列叙述中正确的是()。A)数据的逻辑结构与存储结构必定是一一对应的B)由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构C)程序设计语言中的数据一般是顺序存储结构,因此,利用数组只能处理线性结构D)以上三种说法都不对。(7)冒泡排序在最坏情况下的比较次数是A)n(n+1)/2B)nlog2nC)n(n-1)/2D)n/2(8)一棵二叉树中共有70个叶子结点与80个度为1的结点,则该二叉树中的总结点数为A)219B)221C)229D)231(9)下列叙述中正确的是()。A)数据库系统是一个独立的系统,不需要操作系统的支持B)数据库技术的根本目标是要解决数据的共享问题C)数据库管理系统就是数据库系统D)以上三种说法都不对(10)下列叙述中正确的是()。A)为了建立一个关系,首先要构造数据的逻辑关系B)表示关系的二维表中各元组的每一个分量还可以分成若干数据项C)一个关系的属性名表称为关系模式D)一个关系可以包括多个二维表(11)C语言源程序名的后缀是()。A).exeB).CC).objD).cp(12)可在C程序中用作用户标识符的一组标识符是()。A)andB)Date_2007y-m-dC)HiD)caseDr.TomBigl(13)下列选项中,合法的一组C语言数值常量是()。A)028B)12..5e-30xa23.0xf4.5e0C).177D)0x8A4e1.510,0000abc3.e5(14)下列叙述中正确的是()。A)C语言程序将从源程序中第一个函数开始执行124nB)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行C)C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束D)main可作为用户标识符,用以命名任意一个函数作为主函数(15)若在定义语句:inta,b,c,*p=&c;之后,接着执行下列选项中的语句,则能正确执行的语句是()。A)scanf("%d",a,b,c);B)scanf("%d%d%d",a,b,c);C)scanf("%d",p);D)scanf("%d",&p);(16)下列关于long、int和short类型数据占用内存大小的叙述中正确的是()。A)均占4个字节B)根据数据的大小来决定所占内存的字节数C)由用户自己定义D)由C语言编译系统决定(17)若变量均已正确定义并赋值,下列合法的C语言赋值语句是()。A)x=y==5;B)x=n%2.5;C)x+n=i;D)x=5=4+1;(18)有下列程序段:intj;floaty;charname[50];scanf("%2d%f%s",&j,&y,name);当执行上述程序段,从键盘上输入555667777abc后,y的值为()。A)55566.0B)566.0C)7777.0D)566777.0(19)若变量已正确定义,有下列程序段:i=0;doprintf("%d,",i);while(i++);printf("%dn",i);其输出结果是()。A)0,0B)0,1C)1,1D)程序进入无限循环(20)有下列计算公式:若程序前面已在命令行中包含math.h文件,不能够正确计算上述公式的程序段是()。A)if(x>=0)y=sqrt(x);B)y=sqrt(x);elsey=sqrt(-x);if(x<0)y=sqrt(-x);C)if(x>=0)y=sqrt(x);D)y=sqrt(x>=0?x:-x);if(x<0)y=sqrt(-x);(21)设有条件表达式:(EXP)?i++:j--,则下列表达式中与(EXP)完全等价的是()。A)(EXP==0)B)(EXP!=0)C)(EXP==1)D)(EXP!=1)(22)有下列程序:#includemain(){inty=9;for(;y>0;y--)if(y%3==0)printf("%d",--y);}程序的运行结果是()。124nA)741B)963C)852D)875421(23)已有定义:charc;,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为大写字母的表达式是()。A)isupper(c)B)'A'<=c<='Z'C)'A'<=c&&c<='Z'D)c<=('z'-32)&&('a'-32)<=c(24)有下列程序:#includemain(){inti,j,m=55;for(i=1;i<=3;i++)for(j=3;j<=i;j++)m=m%j;printf("%d\n",m);}程序的运行结果是()。A)0B)1C)2D)3(25)若函数调用时的实参为变量时,下列关于函数形参和实参的叙述中正确的是()。A)函数的实参和其对应的形参共占同一存储单元B)形参只是形式上的存在,不占用具体存储单元C)同名的实参和形参占同一存储单元D)函数的形参和实参分别占用不同的存储单元(26)已知字符'A'的ASCII代码值是65,字符变量cl的值是'A',c2的值是'D'。执行语句printf("%d,%d",c1,c2-2);后,输出结果是()。A)A,BB)A,68C)65,66D)65,68(27)下列叙述中错误的是()。A)改变函数形参的值,不会改变对应实参的值B)函数可以返回地址值C)可以给指针变量赋一个整数作为地址值D)当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL(28)下列正确的字符串常量是()。A)"\"B)'abc'C)OlympicGamesD)""(29)设有定义:charp[]={'1','2','3'},*q=p;,下列不能计算出一个char型数据所占字节数的表达式是()。A)sizeof(p)B)sizeof(char)C)sizeof(*q)D)sizeof(p[0])(30)有下列函数:intaaa(char*s){char*t=s;while(*t++);t--;return(t-s);}下列关于aaa函数的功能的叙述正确的是()。124nA)求字符串s的长度B)比较两个串的大小C)将串s复制到串tD)求字符串s所占字节数(31)若有定义语句:inta[3][6];,按在内存中的存放顺序,a数组的第10个元素是()。A)a[0][4]B)a[1][3]C)a[0][3]D)a[1][4](32)有下列程序:#includevoidfun(char**p){++p;printf("%sn",*p);}main(){char*a[]=("Morning","Afternoon","Evening","Night");fun(a);}程序的运行结果是()。A)AfternoonB)fternoonC)MorningD)orning(33)若有定义语句:inta[2][3],*p[3];,则下列语句中正确的是()。A)p=a;B)p[0]=a;C)p[0]=&a[1][2];D)p[1]=&a;(34)有下列程序:#includevoidfun(int*a,intn)/*fun函数的功能是将a所指数组元素从大到小排序*/{intt,i,j;for(i=0;iintfun(chars[]){intn=0;while(*s<='9'&&*s>='0'){n=10*n+*s-'0';s++;}return(n);}main(){chars[10]={'6','1','*','4','*','9','*','0','*'};printf("%dn",fun(s));124n}程序的运行结果是()。A)9B)61490C)61D)5(36)当用户要求输入的字符串中含有空格时,应使用的输入函数是()。A)scanf()B)getchar()C)gets()D)getc()(37)下列关于字符串的叙述中正确的是()。A)C语言中有字符串类型的常量和变量B)两个字符串中的字符个数相同时才能进行字符串大小的比较C)可以用关系运算符对字符串的大小进行比较D)空串一定比空格打头的字符串小(38)有下列程序:#includevoidfun(char*t,char*s){while(*t!=0)t++;while((*t++=*s++)!=0);}main(){charss[10]="acc",aa[10]="bbxxyy";fun(ss,aa);printf("%s,%sn",ss,aa);}程序的运行结果是()。A)accxyy,bbxxyyB)acc,bbxxyyC)accxxyy,bbxxyyD)accbbxxyy,bbxxyy(39)有下列程序:#include#includevoidfun(chars[][10],intn){chart;inti,j;for(i=0;is[j][0]){t=s[i][0];s[i][0]=s[j][0];s[j][0]=t;}}main(){charss[5][10]={"bcc","bbcc","xy","aaaacc","aabcc"};fun(ss,5);printf("%s,%sn",ss[0],ss[4]);}程序的运行结果是()。A)xy,aaaaccB)aaaacc,xyC)xcc,aabccD)acc,xabcc(40)在一个C源程序文件中所定义的全局变量,其作用域为()。A)所在文件的全部范围B)所在程序的全部范围C)所在函数的全部范围D)由具体定义位置和extern说明来决定范围124n(41)有下列程序:#includeinta=1;intf(intc){staticinta=2;c=c+1;return(a++)+c;}main(){inti,k=0;for(i=0;i<2;i++){inta=3;k+=f(a);}k+=a;printf("%dn",k);}程序的运行结果是()。A)14B)15C)16D)17(42)有下列程序:#includevoidfun(intn,int*p){intf1,f2;if(n==1||n==2)*p=1;else{fun(n-1,&f1);fun(n-2,&f2);*p=f1+f2;}}main(){ints;fun(3,&s);printf("%dn",s);}程序的运行结果是()。A)2B)3C)4D)5(43)若程序中有宏定义行:#defineN100,则下列叙述中正确的是()。A)宏定义行中定义了标识符N的值为整数100B)在编译程序对C源程序进行预处理时用100替换标识符NC)对C源程序进行编译时用100替换标识符ND)在运行时用100替换标识符N(44)下列关于typedef的叙述错误的是()。A)用typedef可以增加新类型B)typedef只是将已存在的类型用一个新的名字来代表C)用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名D)用typedef为类型说明一个新名,通常可以增加程序的可读性(45)有下列程序:#include124nstructtt{intx;structtt*y;}*p;structtta[4]={20,a+1,15,a+2,30,a+3,17,a};main(){inti;p=a;for(i=1;i<=2;i++){printf("%d,",p->x);p=p->y;}}程序的运行结果是()。A)20,30,B)30,17C)15,30,D)20,15,(46)有下列程序:#include#includetypedefstruct{charname[9];charsex;floatscore[2];}STU;STUf(STUa){STUb={"Zhao",'m',85.0,90.0};inti;strcpy(a.name,b.name);a.sex=b.sex;for(i=0;i<2;i++)a.score[i]=b.score[i];returna;}main(){STUc={"Qian",'f',95.0,92.0},d;d=f(c);printf("%s,%c,%2.0f,%2.0fn",d.neme,d.sex,d.score[0],d.score[1]);}程序的运行结果是()。A)Qian,f,95,92B)Qian,m,85,90C)Zhao,m,85,90D)Zhao,f,95,92(47)设有下列定义:uniondata{intd1;floatd2;}demo;则下列叙述中错误的是()。A)变量demo与成员d2所占的内存字节数相同B)变量demo中各成员的地址相同C)变量demo和各成员的地址相同D)若给demo.d1赋99后,demo.d2中的值是99.0(48)有下列程序:#includemain(){inta=1,b=2,c=3,x;x=(a^b)&c;printf("%dn",x);}程序的运行结果是()。A)0B)1C)2D)3(49)读取二进制文件的函数调用形式为:fread(buffer,size,count,fp);,其中buffer代表的是124n()。A)一个文件指针,指向待读取的文件B)一个整型变量,代表待读取的数据的字节数C)一个内存块的首地址,代表读入数据存放的地址D)一个内存块的字节数(50)有下列程序:#includemain(){FILE*fp;inta[10]={1,2,3,0,0},i;fp=fopen("d2.dat","wb");fwtite(a,sizeof(int),5,fp);fwrite(a,sizeof(int),5,fp);fclose(fp);fp=fopen("d2.dat","rb");fread(a,sizeof(int),10,fp);fclose(fp);for(i=0;i<10;i++)printf("%d",a[i]);}程序的运行结果是()。A)1,2,3,0,0,0,0,0,0,0,B)1,2,3,1,2,3,0,0,0,0,C)123,0,0,0,0,123,0,0,0,0,D)1,2,3,0,0,1,2,3,0,0,二、填空题(每空2分,共40分)(1)软件需求规格说明书应具有完整性、无歧义性、正确性、可验证性、可修改性等特性,其中最重要的是【1】。(2)在两种基本测试方法中,【2】测试的原则之一是保证所测模块中每一个独立路径至少要执行一次。(3)线性表的存储结构主要分为顺序存储结构和链式存储结构。队列是一种特殊的线性表,循环队列是队列的【3】存储结构。(4)对下列二叉树进行中序遍历的结果为【4】。(5)在E-R图中,矩形表示【5】。(6)执行下列程序时,输入1234567,则输出结果是【6】。#includemain(){inta=1,b;scanf("%2d%2d",&a,&b);printf("%d%dn",a,b);}(7)下列程序的功能是输出a、b、c三个变量中的最小值。请填空。#includemain(){inta,b,c,t1,t2;scanf("%d%d%d",&a,&b,&c);t1=amain(){intn=12345,d;while(n!=0){d=n%10;printf("%d",d);n/=10;}}(9)有下列程序段,且变量已正确定义和赋值for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1));printf("s=%fnn",s);请填空,使下列程序段的功能与之完全相同s=1.0;k=1;while(【10】){s=s+1.0/(k*(k+1));【11】;}printf("s=%fnn",s);(10)下列程序的输出结果是【12】。#includemain(){inti;for(i='a';i<'f';i++,i++)printf("%c",i-'a'+'A');printf("n");}(11)下列程序的输出结果是【13】。#include#includechar*fun(char*t){char*p=t;return(p+strlen(t)/2);}main(){char*str="abcdefgh";str=fun(str);puts(str);}(12)下列程序中函数f的功能是在数组x的n个数(假定n个数互不相同)中找出最大最小数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。请填空。#includevoidf(intx[],intn){intp0,p1,i,j,t,m;i=j=x[0];p0=p1=0;for(m=0;mi){i=x[m];p0=m;}elseif(x[m]#includemain(){intnum[26]={0},i;charc;whilc((【16】)!='#')if(isupper(c))num[c-'A']+=【17】;for(i=0;i<26;i++)printf("%c:%dn",i+'A',num[i]);}(14)执行下列程序的输出结果是【18】。#includemain(){inti,n[4]={1};for(i=1,i<=3;i++){n[i]=n[i-1]*2+1;printf("%d",n[i]);}}(15)下列程序的输出结果是【19】。#include#defineM5#defineNM+Mmain(){intk;k=N*N*5;printf("%dn",k);}(16)函数min()的功能是在带头结点的单链表中查找数据域中值最小的结点。请填空。#includestructnode{intdata;structnode*next;};intmin(structnode*first)/*指针first为链表头指针*/124n{structnode*p;intm;p=first->next;m=p->data;p=p->next;for(;p!=NULL;p=【20】)if(p->datadata;returnm;}一、选择题(1)D)(2)B)(3)C)(4)A)(5)A)(6)D)(7)C)(8)A)(9)B)(10)A)(11)B)(12)A)(13)B)(14)C)(15)C)(16)D)(17)A)(18)B)(19)B)(20)B)(21)B)(22)C)(23)B)(24)B)(25)D)(26)C)(27)C)(28)D)(29)A)(30)A)(31)B)(32)A)(33)B)(34)D)(35)C)(36)C)(37)D)(38)D)(39)D)(40)D)(41)A)(42)A)(43)B)(44)A)(45)D)(46)C)(47)D)(48)D)(49)C)(50)D)二、填空题(1)【1】无歧义性(2)【2】白盒(3)【3】顺序(4)【4】ACBDFEHGP(5)【5】实体(6)【6】1234(7)【7】a:b【8】c:t1(8)【9】54321(9)【10】k<=n【11】k++(10)【12】ACE(11)【13】efgh(12)【14】x[0](13)【16】c=getchar()【15】x[0]【17】1(14)【18】3715(15)【19】55(16)【20】p->next2008年4月全国计算机等级考试笔试试卷二级公共基础知识和C语言程序设计(考试时间120分钟,满分100分)PDF版(非扫描)下载:2008年4月计算机二级C语言真题一、选择题((1)-(10)每小题2分,(11)-(50)每小题1分,共60分)(1)程序流程图中带有箭头的线段表示的是()。A)图元关系B)数据流C)控制流D)调用关系(2)结构化程序设计的基本原则不包括()。A)多元性B)自顶向下C)模块化D)逐步求精(3)软件设计中模块划分应遵循的准则是()。124nA)低内聚低耦合B)高内聚低耦合C)低内聚高耦合D)高内聚高耦合(4)在软件开发中,需求分析阶段产生的主要文档是()。A)可行性分析报告B)软件需求规格说明书C)概要设计说明书D)集成测试计划(5)算法的有穷性是指()。A)算法程序的运行时间是有限的B)算法程序所处理的数据量是有限的C)算法程序的长度是有限的D)算法只能被有限的用户使用(6)对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是()。A)快速排序B)冒泡排序C)简单插入排序D)堆排序(7)下列关于栈的叙述正确的是()。A)栈按“先进先出”组织数据B)栈按“先进后出”组织数据C)只能在栈底插入数据D)不能删除数据(8)在数据库设计中,将E-R图转换成关系数据模型的过程属于()。A)需求分析阶段B)概念设计阶段C)逻辑设计阶段D)物理设计阶段(9)有三个关系R、S和T如下:由关系R和S通过运算得到关系T,则所使用的运算为()。A)并B)自然连接C)笛卡尔积D)交(10)设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为()。A)课号,成绩B)学号,成绩C)学号,课号D)学号,姓名,成绩(11)以下叙述中正确的是A)C程序中的注释只能出现在程序的开始位置和语句的后面()。B)C程序书写格式严格,要求一行内只能写一个语句C)C程序书写格式自由,一个语句可以写在多行上D)用C语言编写的程序只能放在一个程序文件中(12)以下选项中不合法的标识符是()。A)printB)ForC)&aD)-00(13)以下选项中不属于字符常量的是()。A)'C'B)"C"C)'xCC'D)'72'(14)设变量已正确定义并赋值,以下正确的表达式是()。A)x=y*5=x+zB)int(15.8%5)124nC)x=y+z+5,++yD)x=25%5.0(15)以下定义语句中正确的是()。A)inta=b=0;B)charA=65+1,b='b';C)floata=1,"b=&a,"c=&b;D)doublea=0.0;b=1.1;(16)有以下程序段()。charch;intk;ch='a';k=12;printf("%c,%d,",ch,ch,k);printf("k=%dn",k);已知字符a的ASCII十进制代码为97,则执行上述程序段后输出结果是A)因变量类型与格式描述符的类型不匹配输出无定值B)输出项与格式描述符个数不符,输出为零值或不定值C)a,97,12k=12D)a,97,k=12(17)已知字母A的ASCII代码值为65,若变量kk为char型,以下不能正确判断出kk中的值为大写字母的表达式是()。A)kk>='A'&&kk<='Z'B)!(kk>='A'‖kk<='Z')C)(kk+32)>='a'&&(kk+32)<='z'D)isalpha(kk)&&(kk<91)(18)当变量c的值不为2、4、6时,值也为“真”的表达式是()。A)(c==2)‖(c==4)‖(c==6)B)(c>=2&&c<=6)‖(c!=3)‖(c!=5)C)(c>=2&&c<-6)&&!(c%2)D)(c>=2&&c<=6)&&(c%2!=1)(19)若变量已正确定义,有以下程序段inta=3,b=5,c=7;if(a>b)a=b;c=a;if(c!=a)c=b;printf("%d,%d,%dn",a,b,c);其输出结果是()。A)程序段有语法错B)3,5,3C)3,5,5D)3,5,7(20)有以下程序#includemain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;124n}printf("a=%d,b=%dn",a,b);}程序的运行结果是()。A)a=1,b=0B)a=2,b=2C)a=1,b=1D)a=2,b=1(21)有以下程序#includemain(){intx=8;for(;x>0;x--){if(x%3){printf("%d,",x--);continue;}printf("%d,",--x);}}程序的运行结果是()。A)7,4,2,B)8,7,5,2,C)9,7,6,4,D)8,5,4,2,(22)以下不构成无限循环的语句或语句组是()。A)n=0;B)n=0;do{++n;}while(n<=o);while(1){n++;}C)n=10;D)for(n=0,i=1;;i++)n+=iwile(n);{n--;}(23)有以下程序#includemain(){inta[]={1,2,3,4},y,*p=&a[3];--p;y=*p;printf("y=%dn",y);}程序的运行结果是()。A)y=0B)y=1C)y=2D)y=3(24)以下错误的定义语句是()。A)intx[][3]={{0},{1},{1,2,3}};B)intx[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};C)intx[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};D)intx[][3]={1,2,3,4};(25)设有如下程序段chars[20]="Beijing",*p;p=s;则执行p=s;语句后,以下叙述正确的是()。A)可以用*p表示s[0]124nB)s数组中元素的个数和p所指字符串长度相等C)s和p都是指针变量D)数组s中的内容和指针变量p中的内容相同(26)若有定义:inta[2][3];,以下选项中对a数组元素正确引用的是()。A)a[2][!1]B)a[2][3]C)a[0][3]D)a[1>2][!1](27)有定义语句:chars[10];,若要从终端给s输入5个字符,错误的输入语句是()。A)gets(&s[0]);B)scanf("%s",s+1);C)gets(s);D)scanf("%s",s[1]);(28)以下叙述中错误的是()。A)在程序中凡是以“#”开始的语句行都是预处理命令行B)预处理命令行的最后不能以分号表示结束C)#defineMAX是合法的宏定义命令行D)C程序对预处理命令行的处理是在程序执行的过程中进行的(29)以下结构体类型说明和变量定义中正确的是()。A)typedefstructB)structREC;{intn;charc;}REC;{intn;charc;};RECt1,t2;RECt1,t2;C)typedefstructREC;D)struct{intn=0;charc='A';}t1,t2;{intn;charc;}REC;RECt1,t2;(30)以下叙述中错误的是()。A)gets函数用于从终端读入字符串B)getchar函数用于从磁盘文件读入字符C)fputs函数用于把字符串输出到文件D)fwrite函数用于以二进制形式输出数据到文件(31)有以下程序#includemain(){ints[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;for(i=0;i<12;i++)c[s[i]]++;for(i=1;i<5;i++)printf("%d",c[i]);printf("n");}程序的运行结果是()。A)1234B)2344C)4332D)1123(32)有以下程序#includevoidfun(int*s,intn1,intn2){inti,j,t;i=n1;j=n2;124nwhile(i#include"string.h"voidfun(char*s[],intn){char*t;inti,j;for(i=0;istrlen(s[j])){t=s[i];s[i]=s[j];s[j]=t;}}main(){char*ss[]={"bcc","bbcc","xy","aaaacc","aabcc"};fun(ss,5);printf("%s,%sn",ss[0],ss[4]);}程序的运行结果是()。A)xy,aaaaccB)aaaacc,xyC)bcc,aabccD)aabcc,bcc(34)有以下程序#includeintf(intx){inty;if(x==0||x==1)return(3);y=x*x-f(x-2);returny;}main(){intz;z=f(3);printf("%dn",z);}程序的运行结果是()。124nA)0B)9C)6D)8(35)有以下程序#includevoidfun(char*a,char*b){while(*a=='*')a++;while(*b=*a){b++;a++;}}main(){char*s="*****a*b****",t[80];fun(s,t);puts(t);}程序的运行结果是()。A)*****a*bB)a*bC)a*b****D)ab(36)有以下程序#include#include"string.h"typedefstruct{charname[9];charsex;floatscore[2];}STU;voidf(STUa){STUb={"Zhao",'m',85.0,90.0};inti;strcpy(a.name,b.name);a.sex=b.sex;for(i=0;i<2;i++)a.score[i]=b.score[i];}main(){STUc={"Qian",'f',95.0,92.0};f(c);printf("%s,%c,%2.0f,%2.0fn",c.name,c.sex,c.score[0],c.score[1]);}程序的运行结果是()。A)Qian,f,95,92B)Qian,m,85,90C)Zhao,f,95,92D)Zhao,m,85,90(37)有以下程序#includemain(){FILE*fp;inta[10]={1,2,3},i,n;fp=fopen("d1.dat","w");for(i=0;i<3;i++)fprintf(fp,"%d",a[i]);124nfprintf(fp,"n");fclose(fp);fp=open("d1.dat","r");fscanf(fp,"%d",&n);fclose(fp);printf("%dn",n);}程序的运行结果是()。A)12300B)123C)1D)321(38)变量a中的数据用二进制进表示的形式是01011101,变量b中的数据用二进制表示的形式是11110000,若要求将a的高4位取反,低4位不变,所要执行的运算是()。A)a*bB)abC)a&bD)a<<4(39)在C语言中,只有在使用时才占用内存单元的变量,其存储类型是()。A)anto和registerB)extern和registerC)auto和staticD)static和register(40)设有定义语句int(*f)(int);,则以下叙述正确的是()。A)f是基类型为int的指针变量B)f是指向函数的指针变量,该函数具有一个int类型的形态C)f是指向int类型一维数组的指针变量D)f是函数名,该函数的返回值是其类型为int类型的地址二、填空题(每空2分,共40分)(1)测试用例包括输入值集和【1】值集。(2)深度为5的满二叉树有【2】个叶子结点。(3)设某循环队列的容量为50,头指针front=5(指向队头元素的前一位置),尾指针rear=29(指向队尾元素),则该循环队列中共有【3】个元素。(4)在关系数据库中,用来表示实体之间联系的是【4】。(5)在数据库管理系统提供的数据定义语言、数据操纵语言和数据控制语言中,【5】负责数据的模式定义与数据的物理存取构建。(6)已有定义:charc='';inta=1,b;(此处c的初值为空格字符),执行b=!c&&a;后b的值为【6】。(7)改变量已正确定义为整型,则表达式n=i=2,++i,i++的值为【7】。(8)若有定义:intk;,以下程序段的输出结果是【8】。for(k=2;k<6;k++,k++)printf("##%d",k);(9)以下程序的定义语句中,x[1]的初值是【9】,程序运行后输出的内容是【10】。#includemain(){intx[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},*p[4],i;for(i=0;i<4;i++){p[i]=&x[2*i+1];124nprintf("%d",p[i][0]);}printf("n");}(10)以下程序的输出结果是【11】。#includevoidswap(int*a,int*b){int*t;t=a;a=b;b=t;}main(){inti=3,j=5,*p=&i,*q=&j;swap(p,q);printf("%d%dn",*p,*q);}(11)以下程序的输出结果是【12】。#includemain(){inta[5]={2,4,6,8,10},*p;p=a;p++;printf("%d",*p);}(12)以下程序的输出结果是【13】。#includevoidfun(intx){if(x/2>0)fun(x/2);printf("%d",x);}main(){fun(3);printf("n");}(13)以下程序中函数fun的功能是:统计person所指结构体数组中所有性别(sex)为M的记录的个数,存入变量n中,并作为函数值返回。请填空。#include#defineN3typedefstruct{intnum;charnam[10];charsex;}SS;intfun(SSperson[]){inti,n=0;for(i=0;imain(){FILE*fp;charch;fp=fopen(【15】);ch=fgetc(fp);while(!feof(fp)){putchar(ch);ch=fgetc(fp);}putchar("n");fclose(fp);}一、选择题(1)C)(2)A)(3)B)(4)B)(5)A)(6)D)(7)B)(8)C)(9)D)(10)C)(11)C)(12)C)(13)B)(14)C)(15)B)(16)D)(17)B)(18)B)(19)B)(20)D)(21)D)(22)A)(23)D)(24)C)(25)A)(26)D)(27)D)(28)C)(29)A)(30)B)(31)C)(32)C)(33)A)(34)C)(35)C)(36)A)(37)B)(38)A)(39)A)(40)B)二、填空题(1)【1】输出(2)【2】16(3)【3】24(4)【4】关系(5)【5】数据定义语言(6)【6】0(7)【7】3(8)【8】##2##4(9)【9】2【10】2468(10)【11】35(11)【12】4(12)【13】13(13)【14】person[i].sex(14)【15】"filea.dat","r"2008年9月全国计算机等级考试笔试试卷二级公共基础知识和C语言程序设计(考试时间90分钟,满分100分)PDF版(非扫描)下载:2008年9月计算机二级C语言真题一、选择题((1)~(10)、(21)~(40)每题2分,(11)~(20)每题1分,70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。124n(1)一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是()。A)12345ABCDEB)EDCBA54321C)ABCDE12345D)54321EDCBA(2)下列叙述中正确的是()。A)循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B)在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C)在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D)循环队列中元素的个数是由队头指针和队尾指针共同决定(3)在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是()。A)O(n)B)O(n2)C)O(log2n)D)O(nlog2n)(4)下列叙述中正确的是()。A)顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的B)顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C)顺序存储结构能存储有序表,链式存储结构不能存储有序表D)链式存储结构比顺序存储结构节省存储空间(5)数据流图中带有箭头的线段表示的是()。A)控制流B)事件驱动C)模块调用D)数据流(6)在软件开发中,需求分析阶段可以使用的工具是()。A)N-S图B)DFD图C)PAD图D)程序流程图(7)在面向对象方法中,不属于“对象”基本特点的是()。A)一致性B)分类性C)多态性D)标识唯一性(8)一间宿舍可住多个学生,则实体宿舍和学生之间的联系是()。A)一对一B)一对多C)多对一D)多对多(9)在数据管理技术发展的三个阶段中,数据共享最好的是()。A)人工管理阶段B)文件系统阶段C)数据库系统阶段D)三个阶段相同(10)有三个关系R、S和T如下:由关系R和S通过运算得到关系T,则所使用的运算为()。A)笛卡尔积B)交C)并D)自然连接(11)以下叙述中正确的是()。A)C程序的基本组成单位是语句B)C程序中的每一行只能写一条语句C)简单C语句必须以分号结束D)C语句必须在一行内写完(12)计算机能直接执行的程序是()。A)源程序B)目标程序C)汇编程序D)可执行程序(13)以下选项中不能作为C语言合法常量的是()。A)'cd'B)0.1e+6C)"a"D)'11'(14)以下选项中正确的定义语句是()。A)doublea;b;B)doublea=b=7;C)doublea=7,b=7;D)double,a,b;(15)以下不能正确表示代数式2abcd的C语言表达式是()。A)2*a*b/c/dB)a*b/c/d*2C)a/c/d*b*2D)2*a*b/c*d(16)C源程序中不能表示的数制是()。124nA)二进制B)八进制C)十进制D)十六进制(17)若有表达式(w)?(--x):(++y),则其中与w等价的表达式是()。A)w==lB)w==0C)w!=lD)w!=0(18)执行以下程序段后,w的值为()。intw='A',x=14,y=15;w=((x||y)&&(w<'a'));A)-1B)NULLC)lD)0(19)若变量已正确定义为int型,要通过语句scanf("%d,%d,%d",&a,&b,&c);给a赋值1、给b赋值2、给c赋值3,以下输入形式中错误的是(ò代表一个空格符)()。A)òòò1,2,3<回车>B)1ò2ò3<回车>C)1,òòò2,òòò3<回车>D)1,2,3<回车>(20)有以下程序段inta,b,c;a=10;b=50;c=30;if(a>b)a=b,b=c;c=a;printf("a=%db=%dc=%dn”,a,b,c);程序的输出结果是()。A)a=10b=50c=10B)a=10b=50c=30C)a=10b=30c=10D)a=50b=30c=50(21)若有定义语句:intm[]={5,4,3,2,1},i=4;,则下面对m数组元素的引用中错误的是()。A)m[--i]B)m[2*2]C)m[m[0]]D)m[m[i]](22)下面的函数调用语句中func函数的实参个数是()。func(f2(v1,v2),(v3,v4,v5),(v6,max(v7,v8)));A)3B)4C)5D)8(23)若有定义语句:doublex[5]={1.0,2.0,3.0,4.0,5.0},*p=x;则错误引用x数组元素的是()。A)*pB)x[5]C)*(p+1)D)*x(24)若有定义语句:chars[10]="1234567";,则strlen(s)的值是()。A)7B)8C)9D)10(25)以下叙述中错误的是()。A)用户定义的函数中可以没有return语句B)用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值C)用户定义的函数中若没有return语句,则应当定义函数为void类型D)函数的return语句中可以没有表达式(26)以下关于宏的叙述中正确的是()。A)宏名必须用大写字母表示B)宏定义必须位于源程序中所有语句之前C)宏替换没有数据类型限制D)宏调用比函数调用耗费时间(27)有以下程序#includemain(){inti,j;124nfor(i=3;i>=l;i--){for(j=1;j<=2;j++)printf("%d",i+j);printf("n");}}程序的运行结果是()。A)234B)432345543C)23D)4534344523(28)有以下程序#includemain(){intx=l,y=2,z=3;if(x>y)if(ymain(){inti=5;do{if(i%3=1)if(i%5==2){printf("*%d",i);break;}i++;}while(i!=0);printf("n");}程序的运行结果是()。A)*7B)*3*5C)*5D)*2*6(30)有以下程序#includeintfun(inta,intb){if(b==0)returna;elsereturn(fun(--a,--b));}main(){printf("%dn",fun(4,2));}124n程序的运行结果是()。A)1B)2C)3D)4(31)有以下程序#include#includeintfun(intn){int*p;p=(int*)malloc(sizeof(int));*p=n;return*p;}main(){inta;a=fun(10);printf("%dn",a+fun(10));}程序的运行结果是()。A)0B)10C)20D)出错(32)有以下程序#includevoidfun(inta,intb){intt;t=a;a=b;b=t;}main(){intc[10]={1,2,3,4,5,6,7,8,9,0),i;for(i=0;i<10;i+=2)fun(c[i],c[i+l]);for(i=0;i<10;i++)printf("%d,",c[i]);printf("n");}程序的运行结果是()。A)l,2,3,4,5,6,7,8,9,0,B)2,l,4,3,6,5,8,7,0,9,C)0,9,8,7,6,5,4,3,2,1,D)0,1,2,3,4,5,6,7,8,9,(33)有以下程序#includestructst{intx,y;)data[2]={l,10,2,20};main(){structst*p=data;printf("%d,",p->y);printf("%dn",(++p)->x);}程序的运行结果是()。A)10,1B)20,1C)10,2D)20,2(34)有以下程序#includevoidfun(inta[],intn)124n{inti,t;for(i=0;i#defineN4voidfun(inta[][N],intb[]){inti;for(i=0;iintfun(int(*s)[4],intn,intk){intm,i;m=s[0][k];for(i=l;im)m=s[i][k];returnm;}main(){inta[4][4]={{1,2,3,4),{11,12,13,14},{2l,22,23,24},{31,32,33,34}};printf("%dn",fun(a,4,0));}程序的运行结果是()。A)4B)34C)31D)32(37)有以下程序#includemain(){structSTU{charname[9];charsex;doublescore[2];};124nstructSTUa={"Zhao",'m',85.0,90.0),b={"Qian",'f',95.0,92.0);b=a;printf("%s,%c,%2.0f,%2.0fn",b.name,b.sex,b.score[0],b.score[1]);}程序的运行结果是()。A)Qian,f,95,92B)Qian,m,85,90C)Zhao,f,95,92D)Zhao,m,85,90(38)假定已建立以下链表结构,且指针p和q已指向如图所示的结点:则以下选项中可将q所指结点从链表中删除并释放该结点的语句组是()。A)(*p).next=(*q).next;free(p);B)p=q->next;free(q);C)p=q;free(q);D)p->next=q->next;free(q);(39)有以下程序#includemain(){chara=4;printf("%dn",a=a<<1);}程序的运行结果是()。A)40B)16C)8D)4(40)有以下程序#includemain(){FILE*pf;char*s1="China",*s2="Beijing";pf=fopen("abc.dat","wb+");fwrite(s2,7,l,pf);rewind(pf);/*文件位置指针回到文件开头*/fwrite(s1,5,1,pf);fclose(pf);}以上程序执行后abc.dat文件的内容是()。B)ChinaB)ChinangC)ChinaBeijingD)BeijingChina二、填空题(每空2分,共30分)请将每一个空的正确答案写在答题卡【1】至【15】序号的横线上,答在试卷上不得分。(1)对下列二叉树进行中序遍历的结果【1】。(2)按照软件测试的一般步骤,集成测试应在【2】测试之后进行。(3)软件工程三要素包括方法、工具和过程,其中,【3】支持软件开发的各个环节的控制和管理。(4)数据库设计包括概念设计、【4】和物理设计。(5)在二维表中,元组的【5】不能再分成更小的数据项。(6)设变量a和b已正确定义并赋初值。请写出与a-=a+b等价的赋值表达式【6】。(7)若整型变量a和b中的值分别为7和9,要求按以下格式输出a和b的值:a=7124nb=9请完成输出语句:printf("【7】",a,b);。(8)以下程序的输出结果是【8】。#includemain(){inti,j,sum;for(i=3;i>=1;i--){sum=0;for(j=1;j<=i;j++)sum+=i*j;}printf("%dn",sum);}(9)以下程序的输出结果是【9】。#includemain(){intj,a[]={1,3,5,7,9,11,13,15},*p=a+5;for(j=3;j;j--){switch(j){case1:case2:printf("%d",*p++);break;case3:printf("%d",*(--p));}}}(10)以下程序的输出结果是【10】。#include#defineN5intfun(int*s,inta,intn){intj;*s=a;j=n;while(a!=s[j])j--;returnj;}main(){ints[N+1];intk;for(k=l;k<=N;k++)s[k]=k+l;printf("%dn",fun(s,4,N));}(11)以下程序的输出结果是【11】。#includeintfun(intx){staticintt=0;return(t+=x);}124nmain(){ints,i;for(i=l;i<=5;i++)s=fun(i);printf("%dn",s);}(12)以下程序按下面指定的数据给x数组的下三角置数,并按如下形式输出,请填空。43726915810#includemain(){intx[4][4],n=0,i,j;for(j=0;j<4;j++)for(i=3;i>=j;【12】){n++;x[i][j]=【13】;}for(i=0;i<4;i++){for(j=0;j<=i;j++)printf("%3d",x[i][j]);printf("n");}}(13)以下程序的功能是:通过函数func输入字符并统计输入字符的个数。输入时用字符@作为输入结束标志。请填空。#includelong【14】;/*函数说明语句*/main(){longn;n=func();printf("n=%ldn",n);}longfunc(){longm;for(m=0;getchar()!='@';【15】);retumm;}、选择题(1)B)(2)D)(3)C)(4)A)(5)D)(6)B)(7)A)(8)B)(9)C)(10)D)(11)C)(12)D)(13)A)(14)C)(15)D)(16)A)(17)D)(18)C)(19)B)(20)A)(21)C)(22)A)(23)B)(24)A)(25)B)(26)C)(27)D)(28)D)(29)A)(30)B)(31)C)(32)A)(33)C)(34)D)(35)B)(36)C)(37)D)(38)D)(39)C)(40)B)二、填空题124n(1)【1】DBXEAYFZC(2)【2】单元(3)【3】过程(4)【4】逻辑设计(5)【5】分量(6)【6】a=a-(a+b)或(a=-b)(7)【7】a=%dnb=%d(8)【8】1(9)【9】9911(10)【10】3(11)【11】15(12)【12】i--(13)【13】n(14)【14】func()(15)【15】m++2009年3月全国计算机等级考试二级笔试试卷C语言程序设计(考试时间90分钟,满分100分)PDF版(非扫描)下载:2009年3月计算机二级C语言真题一、选择题((1)—(10)、(21)—(40)每题2分,(11)—(20)每题1分,共70分)下列各题A)、B)、C)、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)耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是()。124nA)提高耦合性降低内聚性有利于提高模块的独立性B)降低耦合性提高内聚性有利于提高模块的独立性C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度D)内聚性是指模块间互相连接的紧密程度(8)数据库应用系统中的核心问题是()。A)数据库设计B)数据库系统设计C)数据库维护D)数据库管理员培训(9)有两个关系R,S如下:由关系R通过运算得到关系S,则所使用的运算为()。A)选择B)投影C)插入D)连接(10)将E-R图转换为关系模式时,实体和联系都可以表示为()。A)属性B)键C)关系D)域(11)以下选项中合法的标识符是()。A)1_lB)1—1C)_11D)l__(12)若函数中有定义语句:intk;,则()。A)系统将自动给k赋初值0B)这时k中的值无定义C)系统将自动给k赋初值-1D)这时k中无任何值(13)以下选项中,能用作数据常量的是()。A)0115B)0118C)1.5e1.5D)115L(14)设有定义:intx=2;,以下表达式中,值不为6的是()。A)x*=x+lB)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.1415930(16)若有定义语句: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%If",x,y);(17)以下是if语句的基本形式:if(表达式)语句其中“表达式”A)必须是逻辑表达式B)必须是关系表达式C)必须是逻辑表达式或关系表达式D)可以是任意合法的表达式(18)有以下程序#includemain(){intx;scanf("%d",&x);124nif(x<=3);elseif(x!=10)printf("%dn",x);}程序运行时,输入的值在哪个范围才会有输出结果()。A)不等于10的整数B)大于3且不等10的整数C)大于3或等于10的整数D)小于3的整数(19)有以下程序#includemain(){inta=1,b=2,c=3,d=0;if(a==1&&b++==2)if(b!=2||c--!=3)printf("%d,%d,%dn",a,b,c);elseprintf("%d,%d,%dn",a,b,c);elseprintf("%d,%d,%dn",a,b,c);}程序运行后的输出结果是()。A)1,2,3B)1,3,2C)1,3,3D)3,2,1(20)以下程序段中的变量已正确定义for(i=0;i<4;i++,i++)for(k=l;k<3;k++);printf("*");程序段的输出结果是()。A)********B)****C)**D)*(21)有以下程序#includemain(){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)有以下程序#includemain(){inta1,a2;charc1,c2;124nscanf("%d%c%d%c",&a1,&c1,&a2,&c2);printf("%d,%c,%d,%c",a1,c1,a2,c2);}若想通过键盘输入,使得al的值为12,a2的值为34,cl的值为字符a,c2的值为字符b,程序输出结果是:12,a,34,b则正确的输入格式是(以下??代表空格,代表回车)()。A)12a34bB)12??a??34??bC)12,a,34,bD)12??a34??b(24)有以下程序#includeintf(intx,inty){return((y-x)*x);}main(){inta=3,b=4,c=5,d;d=f(f(a,b),f(a,c));printf("%dn",d);}程序运行后的输出结果是()。A)10B)9C)8D)7(25)有以下程序#includevoidfun(char*s){while(*s){if(*s%2==0)printf("%c",*s);s++;}}main(){chara[]={"good"};fun(a);printf("n");}注意:字母a的ASCII码值为97,程序运行后的输出结果是()。A)dB)goC)godD)good(26)有以下程序#includevoidfun(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);124nfun(&x,&y);printf("%d,%dn",*p,*q);}程序运行后的输出结果是()。A)3,5,5,3B)3,5,3,5C)5,3,3,5D)5,3,5,3(27)有以下程序#includevoidf(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,3B)2,3C)1,4D)l,2(28)以下函数按每行8个输出数组中的数据voidfun(int*w,intn){inti;for(i=0;imain(){char*a[]={"abcd","ef","gh","ijk"};inti;for(i=0;i<4;i++)printf("%c",*a[i]);124n}程序运行后的输出结果是()。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)有以下程序#includeintfun(intx,inty){if(x==y)return(x);elsereturn((x+y)/2);}main(){inta=4,b=5,c=6;printf("%dn",fun(2*a,fun(b,c)));}程序运行后的输出结果是()。A)3B)6C)8D)12(34)设函数中有整型变量n,为保证其在未赋初值的情况下初值为0,应选择的存储类别是()。A)autoB)registerC)staticD)auto或register(35)有以下程序#includeintb=2;intfun(int*k){b=*k+b;return(b);}main(){inta[10]={1,2,3,4,5,6,7,8},i;for(i=2;i<4;i++){b=fun(&a[i])+b;printf("%d",b);}printf("n");}程序运行后的输出结果是()。A)1012B)810C)1028D)1016(36)有以下程序#include#definePT3.5;#defineS(x)PT*x*x;main(){inta=1;b=2;printf("%4.1fn",S(a+b));}程序运行后的输出结果是()。124nA)14.0B)31.5C)7.5D)程序有错无输出结果(37)有以下程序#includestructord{intx,y;}dt[2]={1,2,3,4};main(){structord*p=dt;printf("%d,",++p->x);printf("%d,",++p->y);}程序的运行结果是()。A)1,2B)2,3C)3,4D)4,l(38)设有宏定义:#defineIsDIV(k,n)((k%n==1)?l:0)且变量m已正确定义并赋值,则宏调用:IsDIV(m,5)&&IsDIV(m,7)为真时所要表达的是()。A)判断m是否能被5或者7整除B)判断m是否能被5和7整除C)判断m被5或者7整除是否余lD)判断m被5和7整除是否都余1(39)有以下程序#includemain(){inta=5,b=1,t;t=(a<<2)|b;printf("%dn",t);}程序运行后的输出结果是()。A)2lB)11C)6D)l(40)有以下程序#includemain(){FILE*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指向栈底元素,栈顶指针top124n指向栈顶元素,如果bottom=49,top=30(数组下标),则栈中具有__________个元素。(2)软件测试可分为白盒测试和黑盒测试。基本路径测试属于__________测试。(3)符合结构化原则的三种基本控制结构是:选择结构、循环结构和__________。(4)数据库系统的核心是__________。(5)在E-R图中,图形包括矩形框、菱形框、椭圆框。其中表示实体联系的是__________框。(6)表达式(int)((double)(5/2)+2.5)的值是__________。(7)若变量x、y已定义为int类型且X的值为99,y的值为9,请将输出语句printf(__________,x/y);补充完整,使其输出的计算结果形式为:x/y=11。(8)有以下程序#includemain(){charc1,c2;scanf("%c",&c1);while(c1<65||c1>90)scanf("%c",&c1);c2=c1+32;printf("%c,%cn",c1,c2);}程序运行输入65回车后,能否输出结果、结束运行(请回答能或不能)__________。(9)以下程序运行后的输出结果是__________。#includemain(){intk=1,s=0;do{if((k%2)!=0)continue;s+=k;k++;}while(k>10);printf("s=%dn",s);}(10)下列程序运行时,若输入1abcedf2df<回车>输出结果为__________。#includemain(){chara=0,ch;while((ch=getchar())!='n'){if(a%2!=0&&(ch>='a'&&ch<='z'))ch=ch-'a'+'A';a++;putchar(ch);}printf("n");}(11)有以下程序,程序执行后,输出结果是__________。#includevoidfun(int*a)124n{a[0]=a[1];}main(){inta[10]={10,9,8,7,6,5,4,3,2,1},i;for(i=2;i>=0;i--)fun(&a[i]);for(i=0;i<10;i++)printf("%d",a[i]);printf("n");}(12)请将以下程序中的函数声明语句补充完整。#includeint__________;main(){intx,y,(*p)();scanf("%d%d",&x,&y);p=max;printf("%dn",(*p)(x,y));}intmax(inta,intb){return(a>b?a:b);}(13)以下程序用来判断指定文件是否能正常打开,请填空。#includemain(){FILE*fp;if(((fp=fopen("test.txt","r"))==__________))printf("未能打开文件!n");elseprintf("文件打开成功!n");}(14)下列程序的运行结果为__________。#include#includestructA{inta;charb[10];doublec;};voidf(structA*t);main(){structAa={1001,"ZhangDa",1098.0};f(&a);printf("%d,%s,%6.1fn",a.a,a.b,a.c);}voidf(structA*t){strcpy(t->b,"ChangRong");}(15)以下程序把三个NODETYPE型的变量链接成一个简单的链表,并在while循环中输出链表结点数据域中的数据。请填空。#includestructnode124n{intdata;structnode*next;};typedefstructnodeNODETYPE;main(){NODETYPEa,b,c*h,*p;a.data=10;b.data=20;c.data=30;h=&a;a.next=&b;b.next=&c;c.next='';p=h;while(p){printf("%d,",p->data);__________;}printf("n");}2009年9月全国计算机等级考试笔试试卷二级公共基础知识和C语言程序设计(考试时间90分钟,满分100分)PDF版(非扫描)下载:2009年9月计算机二级C语言真题一、选择题((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)可封装B)自顶向下C)模块化D)逐步求精(7)软件详细设计产生的图如下:该图是()。124nA)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(){intcase;floatprintF;printf("请输入2个数:");scanf("%d%f",&case,&printF);printf("%d%fn",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)有以下程序#includemain(){inta=l,b=0;printf("%d,",b=a+b);printf("%dn",a=2*b);}程序运行后的输出结果是()。A)0,0B)1,0C)3,2D)1,2124n(17)设有定义:inta=l,b=2,c=3;,以下语句中执行效果与其它三个不同的是()。A)if(a>b)c=a,a=b,b=c;B)if(a>b){c=a,a=b,b=c;}C)if(a>b)c=a;a-b;b=c;D)if(a>b){c=a;a-b;b=c;}(18)有以下程序#includemain(){intc=0,k,for(k=1;k<3;k++)switch(k){default:c+=k;case2:c++;break;case4:c+=2;break;}printf("%dn",c);}程序运行后的输出结果是()。A)3B)5C)7D)9(19)以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是()。A)if((a>b)&&(b>c))k=l;B)if((a>b)||(b>c))k=l;elsek=0;elsek=0;C)if(a<=b)k=0;D)if(a>b)k=l;elseif(b<=c)k=1;elseif(b>c)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("%dn",n);}程序运行后的输出结果是()。A)0B)2C)3D)5(21)有以下程序#includemain(){intn=2,k=0;while(k++&&n++>2);printf("%d%dn",k,n);}程序运行后的输出结果是()。A)02B)13C)57D)l2(22)有以下定义语句,编译时会出现编译错误的是()。A)chara='a';B)chara='n';C)chara='aa';D)chara='x2d';124n(23)有以下程序#includemain(){charc1,c2;c1='A'+'8'-'4';c2='A'+'8'-'5';printf("%c,%dn",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("%dn",a);}程序运行后的输出结果是()。A)32B)12C)21D)22(25)以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能。#defineMIN-2147483647intfindmax(intx[],intn){inti,max;for(i=0;imain(){intm=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;printf("%d,%d,%d,%dn",m,n,*p,*q);}程序运行后的输出结果是()。A)1,2,1,2B)1,2,2,1C)2,1,2,1D)2,1,1,2124n(27)若有定义语句:inta[4][10],*p,*q[4];且0≤i<4,则错误的赋值是()。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("%sn",p);}程序运行后的输出结果是()。A)9,One*WorldB)9,One*Dream!C)10,One*Dream!D)10,One*World(29)有以下程序#includemain(){inta[]={2,3,5,4},i;for(i=0;i<4;i++)switch(i%2){case0:switch(a[i]%2){case0:a[i]++;break;case1:a[i]--;}break;case1:a[i]=0;}for(i=0;i<4;i++)printf("%d",a[i]);printf("n");}程序运行后的输出结果是()。A)3344B)2050C)3040D)0304(30)有以下程序#include#includemain(){chara[10]="abcd";printf("%d,%dn",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)!=''){a++;b++;}}124nA)将a所指字符串赋给b所指空间B)使指针b指向a所指字符串C)将a所指字符串和b所指字符串进行比较D)检查a和b所指字符串中是否有''(33)设有以下函数:voidfun(intn,char*s){……}则下面对函数指针的定义和赋值均正确的是()。A)void(*pf)();pf=fun;B)void*pf();pf=fun;C)void*pr();*pf=fun;D)void(*pf)(int,char);pf=&fun;(34)有以下程序#includeintf(intn);main(){inta=3,s;s=f(a);s=s+f(a);printf("%dn",s);}intf(intn){staticinta=1;n+=a++;returnn;}程序运行后的输出结果是()。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,%dn",s,t);}程序运行后的输出结果是()。A)10,64B)10,10C)64,10D)64,64(36)下面结构体的定义语句中,错误的是()。A)structord{intx;inty;intz;};structorda;B)structord{intx;inty;intz;}structorda;C)structord{intx;inty;intz;}a;D)struct{intx;inty;intz;}a;(37)设有定义:char*c;,以下选项中能够使字符型指针c正确指向一个字符串的是()。A)charstr[]="string";c=str;B)scanf("%s",c);C)c=getchar();D)*c=*string";(38)有以下程序#include#include124nStructA{inta;charb[10];doublec;};structAf(structAt);main(){structAa={1001,"ZhangDa",1098.0};a=f(a);printf("%d,%s,%6.1fn",a.a,a.b,a.c);}structAf(StructAt){t.a=1002;strcpy(t.b,"ChangRong");t.c=1202.0;returnt;}程序运行后的输出结果是()。A)1001,ZhangDa,1098.0B)1002,ZhangDa,1202.0C)1001,ChangRong,1098.0D)1002,ChangRong,1202.0(39)若有以下程序段intr=8;printf("%dn",r>>1);输出结果是()。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;inty;,当执行y=(int)(x/5)%2;之后y的值为【7】。(8)以下程序运行后的输出结果是【8】。#includemain(){intx=20;printf("%d",0main(){inta=1,b=7;do{124nb=b/2;a+=b;}while(b>1);printf("%dn",a);}(10)有以下程序#includemain(){intf,fl,f2,i;f1=0;f2=1;printf("%d%d",fl,f2);for(i=3;i<=5;i++){f=fl+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("%dn",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%sn",a,b);}程序运行时从键盘输入:Howareyou?<回车>则输出结果为【13】。(14)有以下程序#includetypedefstruct124n{intnum;doubles;}REC;voidfunl(RECx){x.num=23;x.s=88.5;}main(){RECa={16,90.0};funl(a);printf("%dn",a.num);}程序运行后的输出结果是【14】。(15)有以下程序#includefun(intx){if(x/2>0)fun(x/2);printf("%d",x);}main(){fun(6);printf("n");}程序运行后的输出结果是【15】。一、选择题(1)C)(2)B)(3)D)(4)A)(5)B)(6)A)(7)C)(8)B)(9)C)(10)D)(11)D)(12)C)(13)A)(14)B)(15)B)(16)D)(17)C)(18)A)(19)A)(20)A)(21)D)(22)C)(23)A)(24)C)(25)D)(26)B)(27)A)(28)C)(29)C)(30)B)(31)D)(32)B)(33)D)(34)C)(35)A)(36)B)(37)A)(38)D)(39)C)(40)C)二、填空题(1)14(2)逻辑判断(3)需求分析(4)多对多(5)身份证号(6)5(7)1(8)10(9)5(10)01123(11)3025(12)p.ID(13)Howareyou?How(14)16(15)036124n2010年3月全国计算机等级考试二级笔试试卷C语言程序设计及参考答案(考试时间90分钟,满分100分)PDF版(非扫描)下载:2010年3月计算机二级C语言真题一、选择题((1)—(10)、(21)—(40)每题2分,(11)—(20)每题1分。共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡上,答在试卷上不得分。(1)下列叙述中正确的是A)对长度为n的有序链表进行查找,最坏情况下需要的比较次数为nB)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(n/2)C)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(log2n)D)对长度为n的有序链表进行对分查找,最坏情况下需要的比较次数为(nlog2n)(2)算法的时间复杂度是指A)算法的执行时间B)算法所处理的数据量C)算法程序中的语句或指令条数D)算法在执行过程中所需要的基本运算次数(3)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是A)编辑软件B)操作系统C)教务管理系统D)浏览器(4)软件(程序)调试的任务是A)诊断和改正程序中的错误B)尽可能多地发现程序中的错误C)发现并改正程序中的所有错误D)确定程序中错误的性质(5)数据流程图(DFD图)是A)软件概要设计的工具B)软件详细设计的工具C)结构化方法的需求分析工具D)面向对象方法的需求分析工具(6)软件生命周期可分为定义阶段,开发阶段和维护阶段。详细设计属于A)定义阶段B)开发阶段C)维护阶段D)上述三个阶段(7)数据库管理系统中负责数据模式定义的语言是A)数据定义语言B)数据管理语言C)数据操纵语言D)数据控制语言(8)在学生管理的关系数据库中,存取一个学生信息的数据单位是A)文件B)数据库C)字段D)记录(9)数据库设计中,用E-R图来描述信息结构但不涉及信息在计算机中的表示,它属于数据库设计的A)需求分析阶段B)逻辑设计阶段C)概念设计阶段D)物理设计阶段(10)有两个关系R和T如下:则由关系R得到关系T的操作是选择B)投影C)交D)并(11)以下叙述正确的是A)C语言程序是由过程和函数组成的124nB)C语言函数可以嵌套调用,例如:fun(fun(x))C)C语言函数不可以单独编译D)C语言中除了main函数,其他函数不可以作为单独文件形式存在(12)以下关于C语言的叙述中正确的是A)C语言中的注释不可以夹在变量名或关键字的中间B)C语言中的变量可以再使用之前的任何位置进行定义C)在C语言算术的书写中,运算符两侧的运算数类型必须一致D)C语言的数值常量中夹带空格不影响常量值的正确表示(13)以下C语言用户标示符中,不合法的是A)_1B)AaBcC)a_bD)a--b(14)若有定义:doublea=22;inti=0,k=18;则不符合C语言规定的赋值语句是A)a=a++,i++B)i=(a+k)<=(i+k)C)i=a%11D)i=!a(15)#includemain(){chara,b,c,d;scanf("%c%c",&a,&b);c=getchar();d=getchar();printf("%c%c%c%cn",a,b,c,d);}当执行程序时,按下列方式输入数据(从第一列开始,代表回车,注意:回车是一个字符)1234则输出结果是:A、1234B、12C、12D、1233416、以下关于C语言数据类型使用的叙述中错误的是:A、若要准确无误的表示自然数,应使用整数类型。B、若要保存带有多位小数的数据,应使用双精度类型。C、若要处理如"人员信息"等含有不同类型的相关数据,应自定义结构体类型。D、若只处理"真"和"假"两种逻辑值,应使用逻辑类型。17、若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是:A、1B、0C、2D、不知道a的值,不能确定18、以下选项中与if(a==1)a=b;elsea++;语句功能不同的switch语句是:A、switch(a)B、switch(a==1){case1:a=b;break;{case0:a=b;break;default:a++;case1:a++;}}C、switch(a)D、switch(a==1){default:a++;break;{case1:a=b;break;case1:a=b;case0:a++;}}124n19、有如下嵌套的if语句if(amain(){inti,j,m=1;for(i=1;i<3;i++){for(j=3;j>0;j--){if(i*j>3)break;m*=i*j;}}printf("m=%dn",m)}程序运行后的输出结果是(A)m=6(B)m=2(C)m=4(D)m=5(21)有以下程序#includesmain(){inta=1,b=2;for(;a<8;a++){b+=a;a+=2;}printf("%d,%dn",a,b);}程序运行后的输出结果是(A)9,18(B)8,11(C)7,11(D)10,14(22)有以下程序,其中k的初值为八进制数#includemain(){intk=011;printf("%dn",k++);}程序运行后的输出结果是(A)12(B)11(C)10(D)9(23)下列语句中,正确的是124nA)char*s;s="Olympic";B)chars[7];s="Olympic";C)char*s;s={"Olympic"};D)chars[7];s={"Olympic"};(24)以下关于return语句的叙述中正确的是A)一个自定义函数中必须有一条return语句B)一个自定义函数中可以根据不同情况设置多条return语句C)定义成viod类型的函数中可以有带返回值的return语句D)没有return语句的自定义函数在执行结束时不能返回到调用处(25)下列选项中,能够正确定义数组的语句是A)intnum[0..2008];B)intnum[];C)intN=2008;D)#defineN2008intnum[N];intnum[N](26)有以下程序#includevoidfun(char*c,intd){*c=*c+1;d=d+1;printf("%c,%c,",*c,d);}main(){charb=’a’,a=’A’;fun(&b,a);printf("%c,%cn",b,a);}程序运行后的输出结果是A)b,B,b,AB)b,B,B,AC)a,B,B,aD)a,B,a,B(27)若有定义int(*pt)[3];,则下列说法正确的是A)定义了基类型为int的三个指针变量B)定义了基类型为int的具有三个元素的指针数组pt。C)定义了一个名为*pt、具有三个元素的整型数组D)定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组(28)设有定义doublea[10],*s=a;,一下能够代表数组元素a[3]的是A)(*s)[3]B)*(s+3)C)*s[3]D)*s+3(29)有以下程序#includemain(){inta[5]={1,2,3,4,5},b[5]={0,2,1,3,0},is=0for(i=0;i<5;i++)s=s+a[b[i]];printf("%dn",s);}程序运行后的输出结果是A)6B)10C)11D)1530)有以下程序#includemain(){intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;for(i=0;i<3;i++)124nFor(j=i;j<=i;j++)t+=b[i][b[j][i]];Printf("%dn",t);}程序运行后的输出结果是A)1B)3C)4D)9(31)若有以下定义和语句charsl[10]="abcd!",*s2="n123\";printf("%d%dn",strlen(s1),strlen(s2));则输出结果是A)55B)105C)107D)58(32)有以下程序#include#defineN8voidfun(int*x,inti){*x=*(x+i);}main(){inta[N]={1,2,3,4,5,6,7,8},i;fun(a,2);for(i=0;iintf(intt[],intn);main(){inta[4]={1,2,3,4},s;s=f{a,4};printf("%dn",s);}intf(intt[],intn){if(n>0)returnt[n-1]+f(t,n-1);elsereturn0;}程序运行后的输出结果是A)4B)10C)14D)6(34)有以下程序#includeintfun(){staticintx=1;x*=2;returnx;}main()124n{intI,s=1;for(i=1;i<=2;i++)s=fun();printf("%dn",s);}程序运行后的输出结果是A)0B)1C)4D)8(35)以下程序#include#defineSUB(a)(a)-(a)main(){inta=2,b=3,c=5,d;d=SUB(a+b)*c;printf("%dn",d);}程序运行后的结果是A)0B)-12C)-20D)10(36)没有定义structcomplex{intreal,unreal;}datal={1,8},data2;则以下赋值语句中的错误的是A)data2=data1;B)data2=(2,6);C)data2.real1=data1.real;D)data2.real=data1.unreal;(37)有以下程序#include#includestructA{inta;charb[10];doublec;};voidf(structAt);main(){structAa={1001,"ZhangDa",1098.0};f(a);pringt("%d,%s,%6.1fn",a.a,a.b,a.c);}voidf(structAt){t.a=1002;strcpy(t.b,"ChangRong");t.c=1202.0;}程序运行后的输出结果是A)1001,ZhangDa,1098.0B)1002,ChangRong,1202.0C)1001,ChangRong,1098.0D)1002,ZhangDa,1202.0(38)有以下定义和语句structworkers{intnum;charname[20];charc;srruct{intday;intmonth;intyear;}s;};structworkersw,*pw;124npw=&w能给w中year成员赋1980的语句是A)*pw.year=1980;B)w.year=1980;C)pw->year=1980;D)w.s.year=1980;(39)有以下程序#includemain(){inta=2,b=2,c=2;printf("%dn",a/b&c);}程序运行后的结果是A)0B)1C)2D)3(40)以下程序#includemain(){FILE*fp;charstr[10];fp=fopen("myfile.dat","w");fputs("abc",fp);fclose(fp);fp=fopen("myfile.dat","a+");rewind(fp,"gd",28);rewind(fp);fscanf(fp,"gs",str);puts(str);fclose(fp);}程序运行后的输出结果是A)abcB)28cC)abc28D)因类型不一致而出错二、填空题(每空2分,共30分)请将每空的正确答案写在答题卡【1】至【15】序号的横线上,答在试卷上不得分。(1)一个队列的初始状态为空,先将元素A,CB,C,D,E,F,5,4,3,2,1依次入队,然后再依次退队,则元素退队的顺序为___【1】__。(2)设某循环列队的容量为50,如果头指针front=45(指向队头元素的前一位置),尾指针rear=10(指向队尾元素),则该循环队列中共有___【2】__个元素。(3)设二叉数如下:对该二叉树进行后序遍历的结果为【3】(4)软件是【4】、数据和文档的集合。(5)有一个学生选课的关系,其中学生的关系模式为:学生(学号,姓名,班级,年龄),课程的关系模式为:课程(课号,课程名,学时),其中两个关系模式的键分别是学好和课号,则关系模式选课可以定义为:选课(学号,【5】,成绩)。(6)设x为int型变量,请写出一个关系表达式【6】,用以判断x同时为3和7的倍124n数时,关系表达式的值为真。(7)有以下程序#includemain(){inta=1,b=2,c=3,d=0;if(a==1)if(b!=2)if(c!=3)d=1;elsed=2;elseif(c!=3)d=3;elsed=4;elsed=5;printf("%dn",d);}程序运行后的输出结果是:【7】。(8)有以下程序#includemain(){intm,n;scanf("%d%d",&m,&n);while(m!=n){while(m>n)m=m-n;while(m时,输出结果是【8】(9)有以下程序#includemain(){intI,j,a[][3]={1,2,3,4,5,6,7,8,9};for(i=1;i<3;i++)for(j=I;j<3;j++)printtf("%d",a[i][j]);printf("n");}程序运行后的输出结果是【9】(10)有以下程序#includemain(){int[]={1,2,3,4,5,6},*k[3],i=0;while(i<3){k[i]=&a[2*i];124nprintf("%d",*k[i]);i++;}}程序运行后的输出结果是__________(11)有以下程序#includemain(){inta[3][3]={{1,2,3},{4,5,6},{7,8,9}};intb[3]={0},i;for(i=0;i<3;i++)b[i]=a[i][2]+a[2][i];for(i=0;i<3;i++)printf("%d",b[i]);printf("n");}程序运行后的结果是____________(12)有以下程序#include#includevoidfun(char*str){chartemp;intn,i;n=strlen(str);temp=str[n-1];for(i=n-1;i>0;i--)str[i]=str[i-1];str[0]=temp;}main(){chars[50];scanf("%s",s);fun(s);printf("%sn",s);}程序运行后输入:abcdef<回车>,则输出结果是____________13、以下程序的功能是:将值为三位正整数的变量x中的数值按照个位、十位、百位的顺序拆分并输出。请填空。#includemain(){intx=256;printf("%d-%d-%dn",,x/10%10,x/100);}14、以下程序用以删除字符串中的所有的空格,请填空。#include124nmain(){chars[100]={"our.tercherteachclanguage!"};inti,j;for(i=j=0;s[i]!=‘’;i++)if(s[i]!=‘’){s[j]=s[i];j++;}s[j]=;printf("%sn",s);}(15)以下程序功能是:借助指针变量找出数组元素中的最大值及其元素的下标值。请填空。#includemain(){inta[10],*p,*s;for(p=a;p-a<10;p++)scanf("%d",p);for(p=a,s=a;p-a<10;p++)if(*p>*s)s=_______________;printf("index=%dn",s-a);}一、选择题:01~05ADBAC06~10BADCA11~15BADCC16~20DABCA21~25DDABD26~30ADBCC31~35ACBCC36~37BADAC二、填空题:1、A、B、C、D、E、F、5、4、3、2、12、153、EDBGHFCA4、程序5、课号6、x%3==0&&x%7==07、48、79、12356910、13511、10141812、fabcde13、x%1014、‘'或者填写015、p2010年9月全国计算机二级C语言笔试试题PDF版(非扫描)下载:2010年9月计算机二级C语言真题124n一、选择题(每小题2分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。(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)一组对象所具有的相似性质B)一个对象具有另一个对象的性质C)各对象之间的共同性质D)类之间共享属性和操作的机制(7)层次型、网状型和关系型数据库划分原则是A)记录长度B)文件的大小C)联系的复杂程度D)数据之间的联系方式(8)一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员、与实体计算机之间的联系是A)一对一B)一对多C)多对多124nD)多对一(9)数据库设计中反映用户对数据要求的模式是A)内模式B)概念模式C)外模式D)设计模式(10)有三个关系R、S和T如下:则由关系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)有以下定义:inta;longb;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)字符串:"07"(16)表达式a+=a-=a=9的值是A)9B)_9C)18D)0124n(17)若变量已正确定义,在if(W)printf(“%dn,k”);中,以下不可替代W的是A)a<>b+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;doublex;则下列选项中没有错误的是A)switch(x%2)B)switch((int)x/2.0{case0:a++;break;{case0:a++;break;case1:b++;break;case1:b++;break;default:a++;b++;default:a++;b++;}}C)switch((int)x%2)D)switch((int)(x)%2){case0:a++;break;{case0.0:a++;break;case1:b++;break;case1.0:b++;break;default:a++;b++;default:a++;b++;}}(20)有以下程序#includemain(){inta=1,b=2;while(a<6){b+=a;a+=2;b%二10;}printf(”%d,%d\n”,a,b);}程序运行后的输出结果是A)5,11B)7,1C)7,11D)6,1(21)有以下程序#include<stdio.h>124nmain(){inty=10;while(y--);printf(”Y=%d\n”,Y);}程序执行后的输出结果是A)y=0B)y=-1C)y=1D)while构成无限循环(22)有以下程序#include<stdio.h>main(){chars[」=”rstuv";printf(”%c\n”,*s+2);}程序运行后的输出结果是A)tuvB)字符t的ASCII码值C)tD)出错(23)有以下程序#include<stdio.h>#include<string.h>main(){charx[]=”STRING”;x[0」=0;x[1]=’\0’;x[2」=’0’;printf(”%d%dn”,sizeof(x),strlen(x));}程序运行后的输出结果是A)61B)70C)63D)71(24)有以下程序#include<stdio.h>Intf(intx);main(){intn=1,m;m=f(f(f(n)));printf(”%d\n”,m);}intf(intx){returnx*2;}程序运行后的输出结果是124nA)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)有以下程序#include<stdio.h>voidf(int*p);main(){inta[5]={1,2,3,4,5},*r=a;f(r);printf(”%dn”;*r);}voidf(int*p){p=p+3;printf(”%d,”,*p);}程序运行后的输出结果是A)1,4B)4,4C)3,1D)4,1(30)有以下程序(函数fun只对下标为偶数的元素进行操作)#include<stdio.h>voidfun(int*a;intn){inti、j、k、t;for(i=0;i<n一1;1+=2){k=i;‘for(j=i;ja〔k])k=j;124nt=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,i<7;i++)printf(”%d,”,aa[i]));printf(”\n”);}程序运行后的输出结果是A)7,2,5,4,3,6,1B)1,6,3,4,5,2,7C)7,6,5,4,3,2,1D)1,7,3,5,6;2,1(31)下列选项中,能够满足“若字符串s1等于字符串s2,则执行ST"要求的是A)if(strcmp(s2,s1)==0)ST;B)if(sl==s2)ST;C)if(strcpy(sl,s2)==1)ST;D)if(sl-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函数用以连接两个字符串)#include<stdio.h>#include<string.h>main(){chara[20]=”ABCD\OEFG\0”,b[]=”IJK”;strcat(a,b);printf(”%sn”,a);}程序运行后的输出结果是A)ABCDEOFGOIJKB)ABCDIJKC)IJKD)EFGIJK(34)有以下程序,程序中库函数islower(ch)用以判断ch中的字母是否为小写字母#include<stdio.h>#include<ctype.h>voidfun(char*p){inti=0;while(p[i]){if(p[i]==’’&&islower(p「i-1」))p[i-1]=p[i-1]-‘a’+‘A’;124ni++;}}main(){chars1[100]=”abcdEFG!”;fun(s1);printf(”%sn”,s1);}程序运行后的输出结果是A)abcdEFG!B)AbCdEFg!C)aBcDEFG!D)abcdEFg!(35)有以下程序#include<stdio.h>voidfun(intx){if(x/2>1)fun(x/2);printf(”%d”,x);}main(){fun(7);printf(”n”);}程序运行后的输出结果是A)137B)731C)73D)37(36)有以下程序#include<stdio.h>intfun(){staticintx=1;x+=1;returnx;}main(){inti;s=1;for(i=1;i<=5;i++)s+=fun();printf(”%d\n”,s);}程序运行后的输出结果是A)11B)21C)6D)120(37)有以下程序#inctude<stdio.h>#include<stdlib.h>124nMain(){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)有以下程序#include<stdio.h>main(){ints,t,A=10;doubleB=6;s=sizeof(A);t=sizeof(B);printf(“%d,%d\n”,s,t);}在VC6平台上编译运行,程序运行后的输出结果是A)2,4B)4,4C)4,8D)10,6(39)若有以下语句TypedefstructS{intg;charh;}T;以下叙述中正确的是A)可用S定义结构体变量B)可用T定义结构体变量C)S是struct类型的变量D)T是structS类型的变量(40)有以下程序#include<stdio.h>main(){shortc=124;c=c_______;printf(“%d\n”、C);}若要使程序的运行结果为248,应在下划线处填入的是A)>>2B)|248C)&0248D)<main(){inta=200,b=010;printf(”%d%dn”,a,b);}(7)有以下程序#include<stdio.h>main(){intx,Y;scanf(”%2d%ld”,&x,&y);printf(”%d\n”,x+y);}程序运行时输入:1234567程序的运行结果是【7】。(8)在C语言中,当表达式值为0时表示逻辑值“假”,当表达式值为【8】时表示逻辑值“真”。(9)有以下程序#include<stdio.h>main(){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;iint*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已定义)124nintfun(inta[N][M)){inti,j,row=0,col=0;for(i=0;imain(){intn[2],i,j;for(i=0;i<2;i++)n[i]=0;for(i=0;i<2;i++)for(j=0;j<2;j++)n[j]=n「i」+1;printf(”%dn”,n[1]);}程序运行后的输出结果是【13】(14)以下程序的功能是:借助指针变量找出数组元素中最大值所在的位置并输出该最大值。请在输出语句中填写代表最大值的输出项。#include<stdio.h>main(){inta〔10],*p,*s;for(p=a;p-a<10;p++)scanf(”%d”,p);for(p=a,s=a;p-a<10;p++)if(*p>*s)S=P;printf("max=%dn”,【14】);}(15)以下程序打开新文件f.txt,并调用字符输出函数将a数组中的字符写入其中,请填空。#include<stdio.h>main(){【15】*fp;chara[5]={’1’,’2’,’3’,’4’,’5’},i;fp=fopen(”f.txt”,”w”);for(i=0;i<5;i++)fputc(a[i],fp);fclose(fp);}2011年3月计算机等级考试二级C语言笔试PDF版(非扫描)下载:2011年3月计算机二级C语言真题一、选择题124n(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)'123'124nC)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];intnum;scanf("name=%snum=%d",name;&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("%dn",++x);}程序运行后的输出结果是A)12B)11C)10D)9(19)有以下程序#includemain(){ints;scanf("%d",&s);while(s>0){switch(s){case1:printf("%d",s+5);case2:printf("%d",s+4);break;case3:printf("%d",s+3);default:printf("%d",s+1);break;}scanf("%d",&s);}}运行时,若输入123450<回车>,则输出结果是A)6566456B)66656C)66666D)6666656124n(20)有以下程序段inti,n;for(i=0;i<8;i++){n=rand()%5;switch(n){case1:case3:printf("%dn",n);break;case2:case4:printf("%dn",n);continue;case0:exit(0);}printf("%dn",n);}以下关于程序段执行情况的叙述,正确的是A)for循环语句固定执行8次B)当产生的随机数n为4时结束循环操作C)当产生的随机数n为1和2时不做任何操作D)当产生的随机数n为0时结束程序运行(21)有以下程序#includemain(){chars[]="012xy8s34f4w2";inti,n=0;for(i=0;s[i]!=0;i++)if(s[i]>='0'&&s[i]<='9')n++;printf("%dn",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;inti;b='a';c='A';for(i=0;i<6;i++){if(i%2)putchar(i+b);elseputchar(i+c);124n}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("%dn",y);}124n程序运行后的输出结果是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("%sn%sn",a,b);}程序运行时若输入:howareyou?Iamfine<回车>则输出结果是A)howareyou?B)howIamfineareyou?IamfineC)howareyou?IamfineD)rowareyou?(32)设有如下函数定义intfun(intk)124n{if(k<1)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("%dn",fun(2*a,fun(b,c)));}程序运行后的输出结果是A)3B)6C)8D)12(34)有以下程序#includeintfun(){staticintx=1;x*=2;returnx;}main(){inti,s=1;for(i=1;i<=3;i++)s*=fun();printf("%dn",s);}程序运行后的输出结果是A)0B)10C)30D)64(35)有以下程序#include#defineS(x)4*(x)*x+1main(){intk=5,j=2;printf("%dn",S(k+j));}程序运行后的输出结果是A)197B)143C)33D)28(36)设有定义:struct{charmark[12];intnum1;doublenum2;}t1,t2;,若变量均已正确赋初值,则以下语句中错误的是A)t1=t2;B)t2.num1=t1.num1;124nC)t2.mark=t1.mark;D)t2.num2=t1.num2;(37)有以下程序#includestructord{intx,y;}dt[2]={1,2,3,4};main(){structord*p=dt;printf("%d,",++(p->x));printf("%dn",++(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("%dn",++(p.a));}程序运行后的输出结果是A)10B)11C)20D)21(39)有以下程序#includemain(){unsignedchara=8,c;c=a>>3;printf("%dn",c);}程序运行后的输出结果是A)32B)16C)1D)0(40)设fp已定义,执行语句fp=fopen("file","w");后,以下针对文本文件file操作叙述的选项中正确的是A)写操作结束后可以从头开始读B)只能写不能读C)可以在原有内容后追加写D)可以随意读和写二、填空题(1)有序线性表能进行二分查找的前提是该线性表必须是【1】顺序存储的。(2)一棵二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF,则后序遍历结果为【2】DEBFCA。(3)对软件设计的最小单位(模块或程序单元)进行的测试通常称为【3】单元测试。(4)实体完整性约束要求关系数据库中元组的【4】主键属性值不能为空。(5)在关系A(S,SN,D)和关系B(D,CN,NM)中,A的主关键字是S,B的主关键字是D,则称【5】D是关系A的外码。(6)以下程序运行后的输出结果是【6】3。124n#includemain(){inta;a=(int)((double)(3/2)+0.5+(int)1.99*2);printf("%dn",a);}(7)有以下程序#includemain(){intx;scanf("%d",&x);if(x>15)printf("%d",x-5);if(x>10)printf("%d",x);if(x>5)printf("%dn",x+5);}若程序运行时从键盘输入12<回车>,则输出结果为【7】1217。(8)有以下程序(说明:字符0的ASCII码值为48)#includemain(){charc1,c2;scanf("%d",&c1);c2=c1+9;printf("%c%cn",c1,c2);}若程序运行时从键盘输入48<回车>,则输出结果为【8】09。(9)有以下函数voidprt(charch,intn){inti;for(i=1;i<=n;i++)printf(i%6!=0?"%c":"%cn",ch);}执行调用语句prt('*',24);后,函数共输出了【9】4行*号。(10)以下程序运行后的输出结果是【10】200。#includemain(){intx=10,y=20,t=0;if(x==y)t=x;x=y;y=t;printf("%d%dn",x,y);}(11)己知a所指的数组中有N个元素。函数fun的功能是,将下标k(k>0)开始的后续元素全部向前移动一个位置。请填空。voidfun(inta[N],intk){inti;for(i=k;i填入i-1124n}(12)有以下程序,请在【12】处填写正确语句,使程序可正常编译运行。#include【12】Doubleave(doublea,doubleb);main(){doublex,y,(*p)();scanf("%lf%lf",&x,&y);p=avg;printf("%fn",(*p)(x,y));}doubleavg(doublea,doubleb){return((a+b)/2);}(13)以下程序运行后的输出结果是【13】13715。#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】emoclew。#include#include#includemain(){char*p;inti;p=(char*)malloc(sizeof(char)*20);strcpy(p,"welcome");for(i=6;i>=0;i--)putchar(*(p+i));printf("n-");free(p);}(15)以下程序运行后的输出结果是【15】123456。#includemain(){FILE*fp;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;i<6;i++)printf("%d",x[i]);printf("n");fclose(fp);}124

查看更多

相关文章

您可能关注的文档