• 386.50 KB
  • 2022-04-22 11:20:29 发布

《国家计算机二级c语言历年真题及答案》.doc

  • 109页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
'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)阅读以下程序 #include main() {intcase;floatprintF;  printf(“请输入2个数:”);  scanf(“%d%f”,&case,&pjrintF);  printf(“%d%fn”,case,printF); } 该程序编译时产生错误,其出错原因是 A)定义语句出错,case是关键字,不能用作用户自定义标识符 B)定义语句出错,printF不能用作用户自定义标识符 C)定义语句无错,scanf不能作为输入函数使用 D)定义语句无错,printf不能输出case的值(14)表达式:(int)((double)9/2)-(9)%2的值是 A)0 B)3 C)4 D)5(15)若有定义语句:intx=10;,则表达式x-=x+x的值为 A)-20 B)-10 C)0 D)10(16)有以下程序 #include main() {inta=1,b=0;  printf(“%d,”,b=a+b);  printf(“%dn”,a=2*b); } 程序运行后的输出结果是 A)0,0  B)1,0 C)3,2 D)1,217)设有定义:inta=1,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)有以下程序 #include main() {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)3 B)5 C)7 D)9(19)以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是 A)if((a>b)&&(b>c))k=1;elsek=0; B)if((a>b)||(b>c)k=1;elsek=0; C)if(a<=b)k=0;elseif(b<=c)k=1; D)if(a>b)k=1;elseif(b>c)k=1; elsek=0;20)有以下程序 #include  main() {chars[]={“012xy”};inti,n=0; for(i=0;s[i]!=0;i++)if(s[i]>=’a’&&s[i]<=’z’)n++; printf(“%dn”,n); } 程序运行后的输出结果是 A)0 B)2 C)3 D)5(21)有以下程序 #include main() {intn=2,k=0;  while(k++&&n++>2);  printf(“%d%dn”,k,n); } 程序运行后的输出结果是 A)02 B)13 C)57 D)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,%dn”,c1,c2);}已知字母A的ASCII码为65,程序运行后的输出结果是 A)E,68  B)D,69 C)E,D D)输出无定值(24)有以下程序 #include voidfun(intp) {intd=2;  p=d++;printf(“%d”,p);} main() {inta=1; fun(a);printf(“%dn”,a);} 程序运行后的输出结果是 A)32 B)12 C)21 D)22(25)以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能#defineMIN-2147483647 intfindmax(intx[],intn) {inti,max;  for(i=0;i  {max=MIN; if(max  returnmax; } 造成错误的原因是 A)定义语句inti,max;中max未赋初值 B)赋值语句max=MIN;中,不应给max赋MIN值 C)语句if(max D)赋值语句max=MIN;放错了位置(26)有以下程序 #include main() {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,2 B)1,2,2,1 C)2,1,2,1 D)2,1,1,2(27)若有定义语句:inta[4][10],*p,*q[4];且0≤i<4,则错误的赋值是 A)p=a B)q[i]=a[i] C)p=a[i] D)p=&a[2][1](28)有以下程序 #include #include main() {charstr[][20]={“One*World”,“One*Dream!”},*p=str[1];  printf(“%d,”,strlen(p));printf(“%sn”,p); } 程序运行后的输出结果是 A)9,One*World B)9,One*Dream C)10,One*Dream D)10,One*World(29)有以下程序 #include main() {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)3344 B)2050  C)3040 D)0304(30)有以下程序 #include#include main(){chara[10]=”abcd”; printf(“%d,%dn”,strlen(a),sizeof(a));}程序运行后的输出结果是 A)7,4 B)4,10 C)8,8 D)10,10(31)下面是有关C语言字符数组的描述,其中错误的是 A)不可以用赋值语句给字符数组名赋字符串 B)可以用输入语句把字符串整体输入给字符数组 C)字符数组中的内容不一定是字符串 D)字符数组只能存放字符串(32)下列函数的功能是 fun(char*a,char*b) {while((*b=*a)!=’’){a++,b++;}} A)将a所指字符串赋给b所指空间 B)使指针b指向a所指字符串 C)将a所指字符串和b所指字符串进行比较 D)检查a和b所指字符串中是否有’’(33)设有以下函数  voidfun(intn,char*s){……} 则下面对函数指针的定义和赋值均是正确的是 A)void(*pf)();pf=fun; B)viod*pf();pf=fun; C)void*pf();*pf=fun; D)void(*pf)(int,char);pf=&fun;(34)有以下程序 #include intf(intn); main() {inta=3,s;   s=f(a);s=s+f(a);printf(“%dn”,s); } intf(intn) {staticinta=1;  n+=a++;  returnn; } 程序运行以后的输出结果是 A)7 B)8 C)9 D)10(35)有以下程序 #include #definef(x)x*x*x main() {inta=3,s,t;  s=f(a+1);t=f((a+1));  printf(“%d,%dn’,s,t); } 程序运行后的输出结果是 A)10,64 B)10,10 C)64,10 D)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 #includestructA{inta;charb[10];doublec;};structAf(structAt);main(){structAa={1001,”ZhangDa”,1098.0};a=f(a);jprintf(“%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)1001,ZhangDa,1202.0C)1001,ChangRong,1098.0D)1001,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”,0 printf(“%dn”,0(9)以下程序运行后的输出结果是【9】。#includemain(){inta=1,b=7; do{ b=b/2;a+=b; }while(b>1); printf(“%dn”,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(“%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)有以下程序#includetypedefstruct{intnum;doubles}REC;voidfun1(RECx){x.num=23;x.s=88.5;}main(){RECa={16,90.0}; fun1(a); printf(“%dn”,a.num);}程序运行后的输出结果是【14】。 (15)有以下程序#includefun(intx){if(x/2>0)run(x/2); printf(“%d”,x);}main(){fun(6);printf(“n”);} 程序运行后的输出结果是【15】。2009年9月全国计算机等级考试二级C语言笔试参考答案一、选择题(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)B(21)D(22)C(23)A(24)C(25)D(26)B(27)A(28)C(29)C(30)B(31)D(32)A(33)A(34)C(35)A(36)B(37)A(38)D(39)C(40)C*答案仅供参考(10)01123(9)5(8)10(7)1(6)5(5)身份证号(4)多对多(3)需求分析(2)逻辑条件(1)14二、填空题 2009年3月二级C语言笔试真题及答案((1)—(10)每小题2分,(11)—(50)每题1分,共60分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。(1)下列叙述中正确的是A)栈是“先进先出”的线性表B)队列是“先进先出”的线性表C)循环队列是非线性结构D)有序性表既可以采用顺序存储结构,也可以采用链式存储结构(2)支持子程序调用的数据结构是A)栈B)树C)队列D)二叉树(3)某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是A)10B)8C)6 D)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如下:RABCa32b01c21SABa3b0c2由关系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赋初值-1D)这时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.141593(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%lf”,x,y);(17)以下是if语句的基本形式:if(表达式)语句其中“表达式”A)必须是逻辑表达式B)必须是关系表达式C)必须是逻辑表达式或关系表达式D)可以是任意合法的表达式(18)有以下程序#includemain(){intx;scanf(“%d”,&x);if(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=1;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;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,则正确的输入格式是(以下代表空格,代表回车)A)12a34bB)12a 34bC)12,a,34,bD)12a34b(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的ASCⅡ码值为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);fun(&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)有以下程序#includeviodf(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)1,2(28)以下函数按每行8个输出数组中的数据voidfun(int*w,intn){int i;for(i=0;imain(){char*a[]={“abcd”,”ef”,”gh”,”ijk”};intI;for(i=0;i<4;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)有以下程序#includeintfun{intx,inty}{if(x==y)return(x);else returen((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)+b;printf(“%d”,b);}printf(“n”);}程序运行后输出的结果是A)1012B)810C)1028D)1016(36)有以下程序#include#definePT3.5;#defineS(x) PT*x*x;mian(){inta=1,b=2;printf(“%4.1fn”,S(a+b));}程序运行后输出的结果是A)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(“%dn”,++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整除是否余1D)判断m被5和7整除是否余1(39)有以下程序#includemain(){inta=5,b=1,t;t=(a<<2|b);printf(“%dn”,t)}程序运行后的输出结果是A)21B)11C)6D)1(40)有以下程序#includemain(){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)有以下程序#includemain(){charc1,c2;scanf(“&c”,&c1);while(c1<65||c1>90)scanf(“&c”,&c1);c2=c1+32;printf(“&c, &cn”,c1,c2);}程序运行输入65回车后,能否输出结果、结束运行(请回答能或不能)【8】。(9)以下程序运行后的输出结果是【9】#includemain(){intk=1,s=0;do{if{((k&2)!=0)continue;s+=k;k++;}while(k)10);printf(“s=&d/n”,s);}(10)下列程序运行时,若输入labced12df<回车>输出结果为【10】#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)有以下程序,程序执行后,输出结果是【11】#includevoidfun(int*a){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};for(i=0;i<10;i++)printf(“&d”,a);printf(“n”);}(12)请将以下程序中的函数声明语句补充完整#includeint【12】;main(){int x,y,(*p)();p=max;printf(“&dn”,&x,&y);}Intmax(inta,intb){return(a>b/a:b);}(13)以下程序用来判断指定文件是否能正常打开,请填空#includemain(){FILE*fp;if(((fp=fopen(“test.txt”,”r”))==【13】))printf(“未能打开文件!n”);elseprintf(“文件打开成功!n”);(14)下列程序的运行结果为【14】#include#includestructA{inta;charb[10];doublec;};voidf(structA*t);main(){structAa=(1001,”ZhangDa”,1098,0);f(&a);printf(“&d,&s,&6,ifn”,a.a,a.b,a.c);}voidf(structA*t){strcpy(t->b,”ChangRong”);}(15)以下程序把三个NODETYPE型的变量链接成一个简单的链表,并在while循环中输出链表结点数据域中的数据,请填空#includestructnode{intdata;structnode*next;};typedefstructnodeNODETYPE;main(){NODETYPEa,b,c,*h,*p;a.data=10;b.data=20;c.data=30;h=&a;b.next=&b;b.next=&c;c.next=’’ ;p=h;while(p){printf(“&d”,p->data);【15】;}}答案:选择题:1~10:DACDCABABC11~20:CBDDACDBCB21~30:CDABABACBC31~40:ADBCCCBDAC填空题:(1)19(2)白盒(3)顺序结构(4)数据库管理系统(DBMS)(5)菱形(6)4(7)"x/y=%d"(8)能(9)s=0(10)1AbCeDf2dF(11)7777654321(12)max(inta,intb)(13)NULL(14)1001,ChangRong,1098.0(15)p=p—>next2008年9月二级C语言笔试真题及答案(考试时间:120分钟,满分100分)一、选择题((1)~(10)、(21)~(40)每题2分,(11)~(20)每题1分,70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。(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如下:RSTABBCABCm113m13n235由关系R和S通过运算得到关系T,则所使用的运算为()。A)笛卡尔积B)交C)并D)自然连接(11)以下叙述中正确的是()。A)C程序的基本组成单位是语句B)C程序中的每一行只能写一条语句二级C语言程序设计试卷第2页(共9页)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源程序中不能表示的数制是()。A)二进制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类型二级C语言程序设计试卷第3页(共9页)D)函数的return语句中可以没有表达式(26)以下关于宏的叙述中正确的是()。A)宏名必须用大写字母表示B)宏定义必须位于源程序中所有语句之前C)宏替换没有数据类型限制D)宏调用比函数调用耗费时间(27)有以下程序#includemain(){inti,j;for(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");}二级C语言程序设计试卷第4页(共9页)程序的运行结果是()。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));}程序的运行结果是()。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二级C语言程序设计试卷第5页(共9页){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){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;}二级C语言程序设计试卷第6页(共9页)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];};structSTUa={"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已指向如图所示的结点:headabcdatanext↑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二级C语言程序设计试卷第7页(共9页)二、填空题(每空2分,共30分)请将每一个空的正确答案写在答题卡【1】至【15】序号的横线上,答在试卷上不得分。(1)对下列二叉树进行中序遍历的结果【1】。ABCDEFXYZ(2)按照软件测试的一般步骤,集成测试应在【2】测试之后进行。(3)软件工程三要素包括方法、工具和过程,其中,【3】 支持软件开发的各个环节的控制和管理。(4)数据库设计包括概念设计、【4】和物理设计。(5)在二维表中,元组的【5】不能再分成更小的数据项。(6)设变量a和b已正确定义并赋初值。请写出与a-=a+b等价的赋值表达式【6】。(7)若整型变量a和b中的值分别为7和9,要求按以下格式输出a和b的值:a=7b=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));}}}二级C语言程序设计试卷第8页(共9页)(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);}main(){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】;二级C语言程序设计试卷第9页(共9页)main(){longn;n=func();printf("n=%ldn",n);}longfunc(){longm;for(m=0;getchar()!="@";【15】);retumm; }2008年9月笔试卷参考答案一、选择题(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)二、填空题(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++2008年4月二级C语言笔试真题及答案14、person[i].sex15、“filea.dat”,”r”一、选择题(共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)对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是A)快速排序B)冒泡排序C)直接插入排序D)堆排序(7)下列关于栈的叙述正确的是A)栈按“先进先出”组织数据B)栈按“先进后出”组织数据C)只能在栈底插入数据D)不能删除数据(8)在数据库设计中,将E-R图转换成关系数据模型的过程属于[C]A)需求分析阶段B)概念设计阶段C)逻辑设计阶段D)物理设计阶段(9)有三个关系R、S和T如下:TBCDa0k1RSBCDa0k1b1n1BCDf3h2a0k1n2x1有关系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)"xCC0"D)"72" (14)设变量已正确定义并赋值,以下正确的表达式是A)x=y*5=x+zB)int(15.8%5)C)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的ASCll十进制代码为97,则执行上述程序段后输出结果是A)因变量类型与格式描述符的类型不匹配输出无定值B)输出项与格式描述符个数不符,输出为零值或不定值C)a,97,12k=12D)a,97,k=12(17)已知字母A的ASCⅡ代码值为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++;}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,2B)8,7,5,2C)9,7,6,4D)8,5,4,2(22)以下不构成无限循环的语句或者语句组是A)n=0;B)n=0;do{++n;}while(n<=0);while(1){n++;}C)n=10;D)for(n=0,i=1;;i++)n+=i;while(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]=“Bejing”,*p;p=s;则执行p=s;语句后,以下叙述正确的是A)可以用*p表示s[0]B)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;}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,intnl,intn2){inti,j,t;i=nl;j=n2;while(i #includevoidfun(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);}程序的运行结果是A)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#includetypedefstruct{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”,’p’,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(“dl.dat”,”w”);for(i=0;i<3;i++)fprintf(fp,”%d”,a[i]);fprintf(fp,”n”);fclose(fp);fp=fopen(“dl.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)a|bC)a&bD)a<<4(39)在C语言中,只有在使用时才占用内存单元的变量,其存储类型是A)auto和registerB)extern和registerC)auto和staticD)static和register(40)设有定义语句int(*f)(int);,则以下叙述正确的是A)f是基类型为int的指针变量B)f是指向函数的指针变量,该函数具有一个int类型的形参C)f是指向int类型一维数组的指针变量D)f是函数名,该函数的返回值是基类型为int类型的地址二、填空题(每空2分,共30分)请将每一个空的正确答案些在答题卡【1】至【15】序号的横线上,答在试卷上不得分。(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];printf(“%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);whlie(!feof(fp)){putchar(ch);ch=fgetc(fp);}putchar(‘n’);fclose(fp);}参考答案:一、选择题1-10:CABBADBCDC11-20:CCBCBDBBBD21-30:DADCADDDAB31-40:CCACCABAAB二、填空题:1、输出2、163、244、关系5、数据定义语言6、07、38、##2##49、210、246811、3512、4 13、132007年9月二级C语言笔试真题及答案(考试时间:120分钟,满分100分)一、选择题((1)-(10)每题2分,(11)-(50)每题1分.共60分))下列各题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)n(n+1)/2B)nlog2nC)n(n-1)/2D)n/2(8)一棵二叉树中共有70个叶子结点与80个度为1的结点,则该二叉树中的总结点数为A)219B)221C)229 D)231(9)下列叙述中正确的是A)数据库系统是一个独立的系统,不需要操作系统的支持B)数据库技术的根本目标是要解决数据的共享问题C)数据库管理系统就是数据库系统D)以上三种说法都不对(10)下列叙述中正确的是A)为了建立一个关系,首先要构造数据的逻辑关系B)表示关系的二维表中各元组的每一个分量还可以分成若干数据项C)一个关系的属性名表称为关系模式D)一个关系可以包括多个二维表(11)C语言源程序名的后缀是A).exeB).CC).objD).cp(12)可在C程序中用做用户标识符的一组标识符是A)andB)DateC)HiD)case_2007y-m-dDr.TomBigl(13)以下选项中,合法的一组C语言数值常量是A)028B)12.C).177D)0x8A.5e-3OXa234c1.510,000-0xf4.5e0Oabc3.e5(14)以下叙述中正确的是A)C语言程序将从源程序中第一个函数开始执行B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行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;do printf("%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);}程序的运行结果是A)741B)963C)852D)875421(23)已有定义:charc;,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为大写字母的表达式是A)isupper(c)B)’A’<=c<=’Z’C)’A’<=c&&c<=’Z’D)c<=(‘2’-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("%dn",m);}程序的运行结果是A)0B)1C)2D)3(25)若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是A)函数的实参和其对应的形参共占同一存储单元B)形参只是形式上的存在,不占用具体存储单元C)同名的实参和形参占同一存储单元D)函数的形参和实参分别占用不同的存储单元(26)已知字符’A’的ASCⅡ代码值是65,字符变量c1的值是’A’,c2的值是’D’。执行语句printf("%d,%d",c1,c2-2);后,输出结果是A)A,BB)A,68C)65,66 D)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函数的功能叙述正确的是A)求字符串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;i=’0’){n=10*n+*s-’0’;s++;}return(n);}main(){chars[10]={’6’,’1’,’*’,’4’,’*’,’9’,’*’,’0’,’*’};printf("%dn",fun(s));}程序运行的结果是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],int n){chart;inti,j;for(i=0;is[j][0]{t=s[0];s[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说明来决定范围(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)有以下程序#includestructtt{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=b.score;returna;}main(){STUc={"Qian","f",95.0,92.0},d;d=f(c); printf("%s,%c,%2.0f,%2.0fn",d.name,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代表的是A)一个文件指针,指向待读取的文件B)一个整型变量,代表待读取的数据的字节数C)一个内存块的首地址,代表读入数据存放的地址D)一个内存块的字节数(50)有以下程序#includemain(){FILE*fp;inta[10]={1,2,3,0,0},i;fp=fopen("d2.dat,"wb");fwrite(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);}程序的运行结果是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]至[20]序号的横线上,答在试卷上不得分.(1) 软件需求规格说明书应具有完整性、无歧义性、正确性、可验证性、可修改性等特性,其中最重要的_[1]_______.(2)在两种基本测试方法中,_[2]_______测试的原则之一是保证所测模块中每一个独立路径至少要执行一次.(3)线性表的存储结构主要分为顺序存储结构和链式存储结构.队列是一种特殊的线性表,循环队列是队列的_[3]_______存储结构.(4)对下列二叉树进行中序遍历的结果为_[4]_______F/CE/\ADG//BHP(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=at2=cprintf("%dn",t2);}(8)以下程序的输出结果是_[9]_______.#includemain(){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]_______.#include main(){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个数互不相同)中找出最大最小数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换.请填空.#includeviodf(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]}t=x[p0];x[p0]=x[n-1];x[n-1]=t;t=x[p1];x[p1]=_[14]_______;_[15]_______=t;}main(){inta[10],u;for(u=0;u<10;u++)scanf("%d",&a);f(a,10);for(u=0;u<10;u++)printf("%d",a);printf("n");}(13)以下程序统计从终端输入的字符中大写字母的个数,num[0]中统计字母A的个数,num[1]中统计字母B的个数,其它依次类推.用#号结束输入,请填空.#include#includemain(){intnum[26]={0},i;char c;while((_[16]_______)!="#")if(isupper(c))num[c-‘A’]+=_[17]_______;for(i=0;i<26;i++)Printf("%c:%dn",i+"A",num);}(14)执行以下程序的输出结果是_[18]_______.#includemain(){inti,n[4]={1};for(i=1;i<=3;i++){n=n[i-1]*2+1;printf("%d",n);}}(15)以下程序的输出结果是_[19]_______.#include#defineM5#defineNM+Mmain(){intk;k=N*N*5;printf("%dn",k);}(16)函数main()的功能是:在带头结点的单链表中查找数据域中值最小的结点.请填空#includestructnode{intdata;structnode*next;};intmin(structnode*first)/*指针first为链表头指针*/{strctnode*p;intm;p=first->next;m=p->data;p=p->next;for(;p!=NULL;p=_[20]_______)if(p->datadata;returnm;}2007年9月全国计算机等级考试二级C语言参考答案一、选择题1-5DBCAA6-10CCABA11-15BABCC16-20DABBB21-25BCBBD26-30CCDAA31-35BACDC36-37 CDDBC42-45AABAD46-50CDDCD二、填空题1、无歧义性2、白盒测试3、顺序4、ACBDFEHGP5、实体集6、12347、a:b8、c:t19、5432110、k<=n11、k++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)阅读以下程序 #include main() {intcase;floatprintF;  printf(“请输入2个数:”);  scanf(“%d%f”,&case,&pjrintF);  printf(“%d%fn”,case,printF); } 该程序编译时产生错误,其出错原因是 A)定义语句出错,case是关键字,不能用作用户自定义标识符 B)定义语句出错,printF不能用作用户自定义标识符 C)定义语句无错,scanf不能作为输入函数使用 D)定义语句无错,printf不能输出case的值(14)表达式:(int)((double)9/2)-(9)%2的值是 A)0 B)3 C)4  D)5(15)若有定义语句:intx=10;,则表达式x-=x+x的值为 A)-20 B)-10 C)0 D)10(16)有以下程序 #include main() {inta=1,b=0;  printf(“%d,”,b=a+b);  printf(“%dn”,a=2*b); } 程序运行后的输出结果是 A)0,0 B)1,0 C)3,2 D)1,217)设有定义:inta=1,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)有以下程序 #include main() {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)3  B)5 C)7 D)9(19)以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是 A)if((a>b)&&(b>c))k=1;elsek=0; B)if((a>b)||(b>c)k=1;elsek=0; C)if(a<=b)k=0;elseif(b<=c)k=1; D)if(a>b)k=1;elseif(b>c)k=1; elsek=0;20)有以下程序 #include main() {chars[]={“012xy”};inti,n=0; for(i=0;s[i]!=0;i++)if(s[i]>=’a’&&s[i]<=’z’)n++; printf(“%dn”,n); } 程序运行后的输出结果是 A)0 B)2 C)3 D)5(21)有以下程序 #include main() {intn=2,k=0;  while(k++&&n++>2);  printf(“%d%dn”,k,n); } 程序运行后的输出结果是 A)02 B)13 C)57 D)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,%dn”,c1,c2);}已知字母A的ASCII码为65,程序运行后的输出结果是 A)E,68 B)D,69 C)E,D D)输出无定值(24)有以下程序 #include voidfun(intp) {intd=2;  p=d++;printf(“%d”,p);} main() {inta=1; fun(a);printf(“%dn”,a);} 程序运行后的输出结果是 A)32 B)12 C)21 D)22(25)以下函数findmax拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能#defineMIN-2147483647 intfindmax(intx[],intn) {inti,max;  for(i=0;i  {max=MIN;  if(max  returnmax; } 造成错误的原因是 A)定义语句inti,max;中max未赋初值 B)赋值语句max=MIN;中,不应给max赋MIN值 C)语句if(max D)赋值语句max=MIN;放错了位置(26)有以下程序 #include main() {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,2 B)1,2,2,1 C)2,1,2,1 D)2,1,1,2(27)若有定义语句:inta[4][10],*p,*q[4];且0≤i<4,则错误的赋值是 A)p=a B)q[i]=a[i] C)p=a[i] D)p=&a[2][1](28)有以下程序 #include #include main() {charstr[][20]={“One*World”,“One*Dream!”},*p=str[1];  printf(“%d,”,strlen(p));printf(“%sn”,p); } 程序运行后的输出结果是 A)9,One*World B)9,One*Dream C)10,One*Dream D)10,One*World(29)有以下程序  #include main() {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)3344 B)2050 C)3040 D)0304(30)有以下程序 #include#include main(){chara[10]=”abcd”; printf(“%d,%dn”,strlen(a),sizeof(a));}程序运行后的输出结果是 A)7,4 B)4,10 C)8,8 D)10,10(31)下面是有关C语言字符数组的描述,其中错误的是 A)不可以用赋值语句给字符数组名赋字符串 B)可以用输入语句把字符串整体输入给字符数组 C)字符数组中的内容不一定是字符串 D)字符数组只能存放字符串(32)下列函数的功能是 fun(char*a,char*b) {while((*b=*a)!=’’){a++,b++;}} A)将a所指字符串赋给b所指空间  B)使指针b指向a所指字符串 C)将a所指字符串和b所指字符串进行比较 D)检查a和b所指字符串中是否有’’(33)设有以下函数  voidfun(intn,char*s){……} 则下面对函数指针的定义和赋值均是正确的是 A)void(*pf)();pf=fun; B)viod*pf();pf=fun; C)void*pf();*pf=fun; D)void(*pf)(int,char);pf=&fun;(34)有以下程序 #include intf(intn); main() {inta=3,s;  s=f(a);s=s+f(a);printf(“%dn”,s); } intf(intn) {staticinta=1;  n+=a++;  returnn; } 程序运行以后的输出结果是 A)7 B)8 C)9 D)10(35)有以下程序 #include #definef(x)x*x*x main() {inta=3,s,t;  s=f(a+1);t=f((a+1));  printf(“%d,%dn’,s,t); } 程序运行后的输出结果是 A)10,64 B)10,10  C)64,10 D)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#includestructA{inta;charb[10];doublec;};structAf(structAt);main(){structAa={1001,”ZhangDa”,1098.0};a=f(a);jprintf(“%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)1001,ZhangDa,1202.0C)1001,ChangRong,1098.0D)1001,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”,0 printf(“%dn”,0(9)以下程序运行后的输出结果是【9】。#includemain(){inta=1,b=7; do{ b=b/2;a+=b; }while(b>1); printf(“%dn”,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(“%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)有以下程序#includetypedefstruct{intnum;doubles}REC;voidfun1(RECx){x.num=23;x.s=88.5;} main(){RECa={16,90.0}; fun1(a); printf(“%dn”,a.num);}程序运行后的输出结果是【14】。 (15)有以下程序#includefun(intx){if(x/2>0)run(x/2); printf(“%d”,x);}main(){fun(6);printf(“n”);}程序运行后的输出结果是【15】。2009年9月全国计算机等级考试二级C语言笔试参考答案一、选择题(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)B(21)D(22)C(23)A(24)C(25)D(26)B(27)A(28)C(29)C(30)B(31)D(32)A(33)A(34)C(35)A (36)B(37)A(38)D(39)C(40)C*答案仅供参考(10)01123(9)5(8)10(7)1(6)5(5)身份证号(4)多对多(3)需求分析(2)逻辑条件(1)14二、填空题2009年3月二级C语言笔试真题及答案((1)—(10)每小题2分,(11)—(50)每题1分,共60分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。(1)下列叙述中正确的是A)栈是“先进先出”的线性表B)队列是“先进先出”的线性表C)循环队列是非线性结构D)有序性表既可以采用顺序存储结构,也可以采用链式存储结构(2)支持子程序调用的数据结构是A)栈B)树C)队列D)二叉树(3)某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是A)10B)8C)6 D)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如下:RABCa32b01c21SABa3b0c2由关系R通过运算得到关系S,则所使用的运算为A)选择B)投影C)插入D)连接(10)将E-R图转换为关系模式时,实体和联系都可以表示为A)属性B)键C)关系D)域(11)以下选项中合法的标识符是A)1-1B)1—1C)-11D)1--(12)若函数中有定义语句:int k;,则A)系统将自动给k赋初值0B)这时k中值无定义C)系统将自动给k赋初值-1D)这时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.141593(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%lf”,x,y);(17)以下是if语句的基本形式:if(表达式)语句其中“表达式”A)必须是逻辑表达式B)必须是关系表达式C)必须是逻辑表达式或关系表达式D)可以是任意合法的表达式(18)有以下程序#includemain(){intx;scanf(“%d”,&x);if(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=1;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;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,则正确的输入格式是(以下代表空格,代表回车)A)12a34bB)12a34bC)12,a,34,bD)12a34b(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的ASCⅡ码值为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);fun(&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)有以下程序#includeviodf(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)1,2(28)以下函数按每行8个输出数组中的数据voidfun(int*w,intn){inti;for(i=0;imain(){char*a[]={“abcd”,”ef”,”gh”,”ijk”};int I;for(i=0;i<4;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)有以下程序#includeintfun{intx,inty}{if(x==y)return(x);elsereturen((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)+b;printf(“%d”,b);}printf(“n”);}程序运行后输出的结果是A)1012B)810C)1028D)1016(36)有以下程序#include#definePT3.5;#defineS(x)PT*x*x;mian(){inta=1,b=2;printf(“%4.1fn”,S(a+b));}程序运行后输出的结果是A)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(“%dn”,++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整除是否余1D)判断m被5和7整除是否余1(39)有以下程序#includemain(){inta=5,b=1,t;t=(a<<2|b);printf(“%dn”,t)}程序运行后的输出结果是A)21B)11C)6D)1(40)有以下程序#includemain(){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)有以下程序#includemain(){charc1,c2;scanf(“&c”,&c1);while(c1<65||c1>90)scanf(“&c”,&c1);c2=c1+32;printf(“&c,&cn”,c1,c2);}程序运行输入65回车后,能否输出结果、结束运行(请回答能或不能)【8】。(9)以下程序运行后的输出结果是【9】#includemain(){intk=1,s=0;do{if{((k&2)!=0)continue;s+=k;k++;}while(k)10);printf(“s=&d/n”,s);}(10)下列程序运行时,若输入labced12df<回车>输出结果为【10】#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)有以下程序,程序执行后,输出结果是【11】#includevoidfun(int*a){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};for(i=0;i<10;i++)printf(“&d”,a);printf(“n”);}(12)请将以下程序中的函数声明语句补充完整#includeint【12】;main(){intx,y,(*p)();p=max;printf(“&dn”,&x,&y);}Intmax(inta,intb){return(a>b/a:b);}(13)以下程序用来判断指定文件是否能正常打开,请填空#includemain(){FILE*fp;if(((fp=fopen(“test.txt”,”r”))==【13】))printf(“未能打开文件!n”);elseprintf(“文件打开成功!n”);(14)下列程序的运行结果为【14】#include#includestructA{inta;charb[10];doublec;};voidf(structA*t);main(){structAa=(1001,”ZhangDa”,1098,0);f(&a);printf(“&d,&s,&6,ifn”,a.a,a.b,a.c);}void f(structA*t){strcpy(t->b,”ChangRong”);}(15)以下程序把三个NODETYPE型的变量链接成一个简单的链表,并在while循环中输出链表结点数据域中的数据,请填空#includestructnode{intdata;structnode*next;};typedefstructnodeNODETYPE;main(){NODETYPEa,b,c,*h,*p;a.data=10;b.data=20;c.data=30;h=&a;b.next=&b;b.next=&c;c.next=’’;p=h;while(p){printf(“&d”,p->data);【15】;}}答案:选择题:1~10:DACDCABABC11~20:CBDDACDBCB21~30:CDABABACBC31~40:ADBCCCBDAC填空题:(1)19(2)白盒(3)顺序结构(4)数据库管理系统(DBMS)(5)菱形(6)4(7)"x/y=%d"(8)能(9)s=0(10)1AbCeDf2dF(11)7777654321(12)max(inta,intb)(13)NULL(14)1001,ChangRong,1098.0(15)p=p—>next2008年9月二级C语言笔试真题及答案(考试时间:120分钟,满分100分)一、选择题((1)~(10)、(21)~(40)每题2分,(11)~(20)每题1分,70分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。(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如下:RSTABBCABCm113m13n235由关系R和S通过运算得到关系T,则所使用的运算为()。A)笛卡尔积B)交C)并D)自然连接(11)以下叙述中正确的是()。A)C程序的基本组成单位是语句B)C程序中的每一行只能写一条语句二级C语言程序设计试卷第2页(共9页)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源程序中不能表示的数制是()。A)二进制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类型二级C语言程序设计试卷第3页(共9页)D)函数的return语句中可以没有表达式(26)以下关于宏的叙述中正确的是()。A)宏名必须用大写字母表示B)宏定义必须位于源程序中所有语句之前C)宏替换没有数据类型限制D)宏调用比函数调用耗费时间(27)有以下程序#includemain(){inti,j;for(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");}二级C语言程序设计试卷第4页(共9页)程序的运行结果是()。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));}程序的运行结果是()。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二级C语言程序设计试卷第5页(共9页){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){inti,t;for(i=0;i#defineN4voidfun(inta[][N],intb[]){inti;for(i=0;i intfun(int(*s)[4],intn,intk){intm,i;m=s[0][k];for(i=l;im)m=s[i][k];returnm;}二级C语言程序设计试卷第6页(共9页)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];};structSTUa={"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已指向如图所示的结点:headabcdatanext↑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二级C语言程序设计试卷第7页(共9页)二、填空题(每空2分,共30分)请将每一个空的正确答案写在答题卡【1】至【15】序号的横线上,答在试卷上不得分。(1)对下列二叉树进行中序遍历的结果【1】。ABCDEFXYZ(2)按照软件测试的一般步骤,集成测试应在【2】测试之后进行。(3)软件工程三要素包括方法、工具和过程,其中,【3】支持软件开发的各个环节的控制和管理。(4)数据库设计包括概念设计、【4】和物理设计。(5)在二维表中,元组的【5】不能再分成更小的数据项。(6)设变量a和b已正确定义并赋初值。请写出与a-=a+b等价的赋值表达式【6】。(7)若整型变量a和b中的值分别为7和9,要求按以下格式输出a和b的值:a=7b=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));}}}二级C语言程序设计试卷第8页(共9页)(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);}main(){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】;二级C语言程序设计试卷第9页(共9页)main(){longn;n=func();printf("n=%ldn",n);}longfunc(){longm;for(m=0;getchar()!="@";【15】);retumm;}2008年9月笔试卷参考答案一、选择题(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)二、填空题(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++ 2008年4月二级C语言笔试真题及答案14、person[i].sex15、“filea.dat”,”r”一、选择题(共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)对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是A)快速排序B)冒泡排序C)直接插入排序D)堆排序(7)下列关于栈的叙述正确的是A)栈按“先进先出”组织数据B)栈按“先进后出”组织数据C)只能在栈底插入数据D)不能删除数据(8)在数据库设计中,将E-R图转换成关系数据模型的过程属于[C]A)需求分析阶段B)概念设计阶段C)逻辑设计阶段D)物理设计阶段(9)有三个关系R、S和T如下:TBCDa0k1RSBCDa0k1b1n1BCDf3h2a0k1n2 x1有关系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)"xCC0"D)"72"(14)设变量已正确定义并赋值,以下正确的表达式是A)x=y*5=x+zB)int(15.8%5)C)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的ASCll十进制代码为97,则执行上述程序段后输出结果是A)因变量类型与格式描述符的类型不匹配输出无定值B)输出项与格式描述符个数不符,输出为零值或不定值C)a,97,12k=12D)a,97,k=12(17)已知字母A的ASCⅡ代码值为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++;}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,2B)8,7,5,2C)9,7,6,4D)8,5,4,2(22)以下不构成无限循环的语句或者语句组是A)n=0;B)n=0;do{++n;}while(n<=0);while(1){n++;}C)n=10;D)for(n=0,i=1;;i++)n+=i;while(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]=“Bejing”,*p;p=s;则执行p=s;语句后,以下叙述正确的是A)可以用*p表示s[0]B)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;}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,intnl,intn2){inti,j,t;i=nl;j=n2;while(i#includevoidfun(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);}程序的运行结果是 A)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#includetypedefstruct{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”,’p’,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(“dl.dat”,”w”);for(i=0;i<3;i++)fprintf(fp,”%d”,a[i]);fprintf(fp,”n”);fclose(fp);fp=fopen(“dl.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)a|bC)a&bD)a<<4(39)在C语言中,只有在使用时才占用内存单元的变量,其存储类型是A)auto和registerB)extern和registerC)auto和staticD)static和register(40)设有定义语句int(*f)(int);,则以下叙述正确的是A)f是基类型为int的指针变量B)f是指向函数的指针变量,该函数具有一个int类型的形参C)f是指向int类型一维数组的指针变量D)f是函数名,该函数的返回值是基类型为int类型的地址二、填空题(每空2分,共30分)请将每一个空的正确答案些在答题卡【1】至【15】序号的横线上,答在试卷上不得分。(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];printf(“%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);whlie(!feof(fp)){putchar(ch);ch=fgetc(fp);}putchar(‘n’);fclose(fp);}参考答案: 一、选择题1-10:CABBADBCDC11-20:CCBCBDBBBD21-30:DADCADDDAB31-40:CCACCABAAB二、填空题:1、输出2、163、244、关系5、数据定义语言6、07、38、##2##49、210、246811、3512、413、132007年9月二级C语言笔试真题及答案(考试时间:120分钟,满分100分)一、选择题((1)-(10)每题2分,(11)-(50)每题1分.共60分))下列各题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)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)DateC)HiD)case_2007y-m-dDr.TomBigl(13)以下选项中,合法的一组C语言数值常量是A)028B)12.C).177D)0x8A.5e-3OXa234c1.510,000-0xf4.5e0Oabc3.e5(14)以下叙述中正确的是A)C语言程序将从源程序中第一个函数开始执行B)可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行C)C语言规定必须用main作为主函数名,程序将从此开始执行,在此结束D)main可作为用户标识符,用以命名任意一个函数作为主函数(15)若在定义语句:int a,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);}程序的运行结果是A)741B)963C)852D)875421(23)已有定义:charc;,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为大写字母的表达式是A)isupper(c)B)’A’<=c<=’Z’C)’A’<=c&&c<=’Z’D)c<=(‘2’-32)&&(‘a’-32)<=c(24)有以下程序#includemain(){int i,j,m=55;for(i=1;i<=3;i++)for(j=3;j<=i;j++)m=m%j;printf("%dn",m);}程序的运行结果是A)0B)1C)2D)3(25)若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是A)函数的实参和其对应的形参共占同一存储单元B)形参只是形式上的存在,不占用具体存储单元C)同名的实参和形参占同一存储单元D)函数的形参和实参分别占用不同的存储单元(26)已知字符’A’的ASCⅡ代码值是65,字符变量c1的值是’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函数的功能叙述正确的是A)求字符串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;i=’0’){n=10*n+*s-’0’;s++;}return(n);}main(){chars[10]={’6’,’1’,’*’,’4’,’*’,’9’,’*’,’0’,’*’};printf("%dn",fun(s));}程序运行的结果是A)9B)61490C)61D)5(36)当用户要求输入的字符串中含有空格时,应使用的输入函数是A)scanf()B)getchar()C)gets()D)getc()(37)以下关于字符串的叙述中正确的是A)C语言中有字符串类型的常量和变量B)两个字符串中的字符个数相同时才能进行字符串大小的比较C)可以用关系运算符对字符串的大小进行比较D)空串一定比空格打头的字符串小(38)有以下程序:#include voidfun(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[0];s[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说明来决定范围(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)有以下程序#includestructtt{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=b.score;returna;}main(){STUc={"Qian","f",95.0,92.0},d;d=f(c);printf("%s,%c,%2.0f,%2.0fn",d.name,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代表的是A)一个文件指针,指向待读取的文件B)一个整型变量,代表待读取的数据的字节数C)一个内存块的首地址,代表读入数据存放的地址D)一个内存块的字节数(50)有以下程序#include main(){FILE*fp;inta[10]={1,2,3,0,0},i;fp=fopen("d2.dat,"wb");fwrite(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);}程序的运行结果是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]至[20]序号的横线上,答在试卷上不得分.(1)软件需求规格说明书应具有完整性、无歧义性、正确性、可验证性、可修改性等特性,其中最重要的_[1]_______.(2)在两种基本测试方法中,_[2]_______测试的原则之一是保证所测模块中每一个独立路径至少要执行一次.(3)线性表的存储结构主要分为顺序存储结构和链式存储结构.队列是一种特殊的线性表,循环队列是队列的_[3]_______存储结构.(4)对下列二叉树进行中序遍历的结果为_[4]_______F/CE/\ADG//BHP(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(){int a,b,c,t1,t2;scanf("%d%d%d",&a,&b,&c);t1=at2=cprintf("%dn",t2);}(8)以下程序的输出结果是_[9]_______.#includemain(){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个数互不相同)中找出最大最小数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换.请填空.#includeviodf(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]}t=x[p0];x[p0]=x[n-1];x[n-1]=t;t=x[p1];x[p1]=_[14]_______;_[15]_______=t;}main(){inta[10],u;for(u=0;u<10;u++)scanf("%d",&a);f(a,10);for(u=0;u<10;u++)printf("%d",a);printf("n");}(13)以下程序统计从终端输入的字符中大写字母的个数,num[0]中统计字母A的个数,num[1]中统计字母B的个数,其它依次类推.用#号结束输入,请填空.#include#includemain(){intnum[26]={0},i;charc;while((_[16]_______)!="#")if(isupper(c))num[c-‘A’]+=_[17]_______;for(i=0;i<26;i++)Printf("%c:%dn",i+"A",num);}(14)执行以下程序的输出结果是_[18]_______.#includemain(){inti,n[4]={1};for(i=1;i<=3;i++){n=n[i-1]*2+1;printf("%d",n);}}(15)以下程序的输出结果是_[19]_______.#include#defineM5#defineNM+Mmain(){intk;k=N*N*5;printf("%dn",k);}(16)函数main()的功能是:在带头结点的单链表中查找数据域中值最小的结点.请填空#includestructnode{intdata;structnode *next;};intmin(structnode*first)/*指针first为链表头指针*/{strctnode*p;intm;p=first->next;m=p->data;p=p->next;for(;p!=NULL;p=_[20]_______)if(p->datadata;returnm;}2007年9月全国计算机等级考试二级C语言参考答案一、选择题1-5DBCAA6-10CCABA11-15BABCC16-20DABBB21-25BCBBD26-30CCDAA31-35BACDC36-37CDDBC42-45AABAD46-50CDDCD二、填空题1、无歧义性2、白盒测试3、顺序4、ACBDFEHGP5、实体集6、12347、a:b8、c:t19、5432110、k<=n11、k++'