2012年3月c语言二级试题及答案

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

文档介绍

2012年3月c语言二级试题及答案

2011年3月全国计算机等级考试二级笔试试卷C语言程序设计(考试时间90分钟,满分100分)一、选择题(1-10,21-40每题2分,11-20每题1分,共70分)  (1)下列关于栈叙述正确的是  A)栈顶元素最先能被删除  B)栈顶元素最后才能被删除  C)栈底元素永远不能被删除  D)以上三种说法都不对  (2)下列叙述中正确的是  A)有一个以上根结点的数据结构不一定是非线性结构  B)只有一个根结点的数据结构不一定是线性结构  C)循环链表是非线性结构  D)双向链表是非线性结构  (3)某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第1层)  A)3B)4C)6D)7  (4)在软件开发中,需求分析阶段产生的主要文档是  A)软件集成测试计划B)软件详细设计说明书  C)用户手册D)软件需求规格说明书  (5)结构化程序所要求的基本结构不包括  A)顺序结构B)GOTO跳转  C)选择(分支)结构D)重复(循环)结构  (6)下面描述中错误的是  A)系统总体结构图支持软件系统的详细设计  B)软件设计是将软件需求转换为软件表示的过程  C)数据结构与数据库设计是软件设计的任务之一  D)PAD图是软件详细设计的表示工具  (7)负责数据库中查询操作的数据库语言是  A)数据定义语言  B)数据管理语言  C)数据操纵语言  D)数据控制语言  (8)一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师和课程间的联系是n  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'  C)123D)"x7G"  (14)以下选项中可用作C程序合法实数的是  A).1e0B)3.0e0.2  C)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;n  scanf("name=%snum=%d",name;&num);  当执行上述程序段,并从键盘输入:name=Lilinum=1001<回车>后,name的值为  A)Lili  B)name=Lili  C)Lilinum=  D)name=Lilinum=1001  (17)if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是  A)必须是逻辑值B)必须是整数值  C)必须是正数D)可以是任意合法的数值(18)有以下程序  #include  main()  {intx=011;  printf("%dn",++x);  }  程序运行后的输出结果是  A)12B)11C)10D)9 (19)有以下程序  #include  main()  {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)6666656  (20)有以下程序段  inti,n;  for(i=0;i<8;i++)  {n=rand()%5;  switch(n)  {case1:n  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)有以下程序  #include  main()  {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)有以下程序  #include  main()  {charb,c;inti;  b='a';c='A';  for(i=0;i<6;i++)  {if(i%2)putchar(i+b);  elseputchar(i+c);  }printf("n");  }  程序运行后的输出结果是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)  #include  voidfun(char*s)  {while(*s)  {if(*s%2)printf("%c",*s);  s++;  }  }  main()  {chara[]="BYTE";  fun(a);printf("n");  }程序运行后的输出结果是ABYBBTC)YTD)YE  (26)有以下程序段  #include  main()  {…  while(getchar()!='n');  …  }  以下叙述中正确的是  A)此while语句将无限循环  B)getchar()不可以出现在while语句的条件表达式中  C)当执行此while语句时,只有按回车键程序才能继续执行  D)当执行此while语句时,按任意键程序就能继续执行(27)有以下程序  #include  main()  {intx=1,y=0;  if(!x)y++;  elseif(x==0)  if(x)y+=2;n  elsey+=3;  printf("%dn",y);  }  程序运行后的输出结果是  A)3B)2C)1D)0(28)若有定义语句:chars[3][10],(*k)[3],*p;,则以下赋值语句正确的是  A)p=s;B)p=k;C)p=s[0];D)k=s;  (29)有以下程序  #include  voidfun(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  #defineN10  voidfun(intx[N])  {inti=0;  while(i<>  }  在程序中下划线处应填入的是  A)x+iB)&x[i+1]  C)x+(i++)D)&x[++i]  (31)有以下程序  #include  main()  {chara[30],b[30];  scanf("%s",a);  gets(b);  printf("%sn%sn",a,b);  }  程序运行时若输入:n  howareyou?Iamfine<回车>  则输出结果是  A)howareyou?B)how  Iamfineareyou?Iamfine  C)howareyou?IamfineD)rowareyou?  (32)设有如下函数定义  intfun(intk)  {if(k<1)return0;  elseif(k==1)return1;  elsereturnfun(k-1)+1;  }  若执行调用语句:n=fun(3);,则函数fun总共被调用的次数是  A)2B)3C)4D)5  (33)有以下程序  #include  intfun(intx,inty)  {if(x!=y)return((x+y);2);  elsereturn(x);  }  main()  {inta=4,b=5,c=6;  printf("%dn",fun(2*a,fun(b,c)));  }  程序运行后的输出结果是  A)3B)6C)8D)12(34)有以下程序  #include  intfun()  {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)有以下程序n  #include  #defineS(x)4*(x)*x+1  main()  {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;  C)t2.mark=t1.mark;D)t2.num2=t1.num2;  (37)有以下程序  #include  structord  {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)有以下程序  #include  structS  {inta,b;}data[2]={10,100,20,200};  main()  {structSp=data[1];  printf("%dn",++(p.a));  }  程序运行后的输出结果是  A)10B)11C)20D)21  (39)有以下程序  #include  main()  {unsignedchara=8,c;  c=a>>3;  printf("%dn",c);  }n  程序运行后的输出结果是  A)32B)16C)1D)0  (40)设fp已定义,执行语句fp=fopen("file","w");后,以下针对文本文件file操作叙述的选项中正确的是  A)写操作结束后可以从头开始读B)只能写不能读  C)可以在原有内容后追加写D)可以随意读和写二、填空题(1)有序线性表能进行二分查找的前提是该线性表必须是【1】存储的。(2)一棵二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF,则后序遍历结果为【2】。(3)对软件设计的最小单位(模块或程序单元)进行的测试通常称为【3】测试。(4)实体完整性约束要求关系数据库中元组的【4】属性值不能为空。(5)在关系A(S,SN,D)和关系B(D,CN,NM)中,A的主关键字是S,B的主关键字是D,则称【5】是关系A的外码。  (6)以下程序运行后的输出结果是【6】。  #include  main()  {inta;  a=(int)((double)(3/2)+0.5+(int)1.99*2);  printf("%dn",a);  }  (7)有以下程序  #include  main()  {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】。  (8)有以下程序(说明:字符0的ASCII码值为48)  #include  main()n  {charc1,c2;  scanf("%d",&c1);  c2=c1+9;  printf("%c%cn",c1,c2);  }  若程序运行时从键盘输入48<回车>,则输出结果为【8】。  (9)有以下函数  voidprt(charch,intn)  {inti;  for(i=1;i<=n;i++)  printf(i%6!=0?"%c":"%cn",ch);  }  执行调用语句prt('*',24);后,函数共输出了【9】行*号。(10)以下程序运行后的输出结果是【10】。  #include  main()  {intx=10,y=20,t=0;  if(x==y)t=x;x=y;y=t;  printf("%d%dn",x,y);  }  (11)己知a所指的数组中有N个元素。函数fun的功能是,将下标k(k>0)开始的后续元素全部向前移动一个位置。请填空。  voidfun(inta[N],intk)  {inti;  for(i=k;i  }  (12)有以下程序,请在【12】处填写正确语句,使程序可正常编译运行。  #include  【12】;  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】。  #includen  main()  {inti,n[5]={0};  for(i=1;i<=4;i++)  {n[i]==n[i-1]*2+1;printf("%d",n[i]);}  printf("n");  }  (14)以下程序运行后的输出结果是【14】。  #include  #include  #include  main()  {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】。  #include  main()  {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);  }n2011年3月全国计算机等级考试二级笔试试卷C语言程序设计答案一.选择题1-5ABDDB6-10ACDCB11-15ADBAA16-20ADCAD21-25BDBCD26-30CDCCC31-35BBBDB36-40CDDCB二,填空题1)顺序2)DEBFCA3)单元测试4)主键5)D6)37)12178)099)410)20011)i-112)doubleavg(doublea,doubleb)13)1371514)e(E)moclew15)1234562010年9月全国计算机等级考试二级C笔试试卷答案一、选择题1~5:BCDAA6~10:DDCCA11~15:CBBAD16~20:DAACB21~25:BCBDC26~30:CBDDA31~35:ACBCD36~40:BACBD二、填空1.1DCBA23452.n-13.254.结构化5.物理设计6.20087.158.非09.14134010.i11.212.a[row][col]13.314.*s15.FILE
查看更多

相关文章

您可能关注的文档