2007年9月计算机等级考试二级C语言考前密卷及答案1

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

文档介绍

2007年9月计算机等级考试二级C语言考前密卷及答案1

2007年9月计算机等级考试二级C语言考前密卷及答案(一)一、选择题(1)算法的空间复杂度是指  A)算法程序的长度  B)算法程序中的指令条数  C)算法程序所占的存储空间  D)执行过程中所需要的存储空间(2)用链表表示线性表的优点是  A)便于随机存取  B)花费的存储空间较顺序存储少  C)便于插入和删除操作  D)数据元素的物理顺序与逻辑顺序相同(3)数据结构中,与所使用的计算机无关的是数据的  A)存储结构  B)物理结构  C)逻辑结构  D)物理和存储结构(4)结构化程序设计主要强调的是n  A)程序的规模  B)程序的效率  C)程序设计语言的先进性  D)程序易读性(5)软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指  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)在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段。其中数据独立性最高的阶段是  A)数据库系统  B)文件系统  C)人工管理  D)数据项管理(11)以下叙述中正确的是  A)构成C程序的基本单位是函数  B)可以在一个函数中定义另一个函数  C)main()函数必须放在其他函数之前  D)C函数定义的格式是K&R格式(12)结构化程序所规定的三种最基本控制结构是  A)输入、处理、输出  B)树形、网形、环形  C)顺序、选择、循环  D)主程序、子程序、函数(13)一个C语言程序是由  A)一个主程序和若干子程序组成  B)函数组成  C)若干过程组成  D)若干子程序组成(14)请选出可用作C语言用户标识符的是  A)void,define,WORD  B)a3_b3,_123,IF  C)FOR,--abc,Case  D)2a,Do,Sizeof(15)下列各数据类型不属于构造类型的是  A)枚举型  B)共用型  C)结构型  D)数组型(16)在16位C编译系统上,若定义longa;,则能给a赋40000的正确语句是  A)a=20000+20000;  B)a=4000*10;  C)a=30000+10000;  D)a=4000L*10Ln(17)以下不正确的叙述是  A)在C程序中,逗号运算符的优先级最低  B)在C程序中,APH和aph是两个不同的变量  C)若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变  D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值(18)sizeof(float)是  A)一个双精度型表达式  B)一个整型表达式  C)一种函数调用  D)一个不合法的表达式(19)若x,i,j和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为  A)4  B)16  C)32  D)52(20)下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,请选择填空。  #include  main()  {inti=0,j,k;  do{i++;k=316-13*i;}while(______);  j=k/11;   printf("316=13*%d+11*%d",i,j);  }  A)k/11  B)k  C)k/11==0  D)k==0(21)设有定义:intn=0,*p=&n,**q=&p,则下列选项中正确的赋值语句是  A)p=1;  B)*q=2;  C)q=p;  D)*p=5;(22)下面程序的运行结果是  #include  main()  {inty=10;  do{y--;}while(--y);  printf("%d\n",y--);n  }  A)-1  B)1  C)8  D)0(23)下面程序的输出结果是  main()  {inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;  printf("%d\n",*(p+2));}  A)3  B)4  C)1  D)2(24)有如下程序  inta[10]={1,2,3,4,5,6,7,8,9,10};  int*p=&a[3],b;b=p[5];  则b的值是  A)5  B)6  C)9  D)8(25)设有intx=11;则表达式(x++*1/3)的值是  A)3  B)4  C)11  D)12(26)请选出以下语句的输出结果  printf("%d\n",strlen("\t\"\065\xff\n"));  A)5  B)14  C)8  D)输出项不合法,无正常输出(27)下列程序的输出结果是  main()  {doubled=3.2;intx,y;  x=1.2;y=(x+3.8)/5.0;  printf("%d\n",d*y);  }   A)3  B)3.2  C)0  D)3.07(28)下列程序的输出结果是  intb=2;  intfunc(int*a)  {b+=*a;return(b);}  main()  {inta=2,res=2;  res+=nfunc(&a);  printf("%d\n",res);  }  A)4  B)6  C)8  D)10(29)下面能正确进行字符串赋值操作的是  A)chars[5]={"ABCDE"};  B)chars[5]={′A′,′B′,′C′,′D′,′E′};  C)char*s;s="ABCDE";  D)char*s;chara;scanf("%s",&s);(30)执行以下程序后,a,b的值分别为  main()  {inta,b,k=4,m=6,*p1=&k,*p2=&m;  a=p1==&m;  b=(*p1)/(*p2)+7;  printf("a=%d\n",a);  printf("b=%d\n",b);  }  A)-1,5  B)1,6  C)0,7  D)4,10(31)设有数组定义:chararray[]="China";则数组array所占的空间为  A)4个字节  B)5个字节  C)6个字节  D)7个字节(32)若已定义:  inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;  其中0≤i≤9,则对a数组元素不正确的引用是  A)a[p-a]  B)*(&a[i])  C)p[i]  D)a[10](33)以下不正确的定义语句是  A)doublex[5]={2.0,4.0,6.0,8.0,10.0};  B)inty[5]={0,1,3,5,7,9};  C)charc1[]={′1′,′2′,′3′,′4′,′5′};  D)charc2[]={′\x10′,′\xa′,′\x8′};(34)若有以下程序  #include   inta[]={2,4,6,8};  main()  {inti;  intn*p=a;  for(i=0;i<4;i++)a[i]=*p;  printf("%d\n",a[2]);  }  上面程序输出结果是  A)6  B)8  C)4  D)2(35)下面程序段的运行结果是  char*format="%s,a=%d,b=%d\n";  inta=11,b=10;  a+=b;  printf(format,"a+=b",a,b);  A)for,"a+=b",ab  B)format,"a+=b"  C)a+=b,a=21,b=10  D)以上结果都不对(36)C语言允许函数类型缺省定义,此时函数值隐含的类型是  A)float  B)int  C)long  D)double(37)以下程序有语法错误,有关错误原因的正确说法是  main()  {intG=5,k;  voidprt_char();  ...  k=prt_char(G);  ...  }  A)语句voidprt_char();有错,它是函数调用语句,不能用void说明  B)变量名不能使用大写字母  C)函数说明和函数调用语句之间有矛盾  D)函数名不能使用下划线(38)以下叙述中不正确的是  A)在不同的函数中可以使用相同的名字的变量  B)函数中的形式参数是局部变量  C)在一个函数内定义的变量只在本函数范围内有效  D)在一个函数内的复合语句中定义的变量在本函数范围内有效(39)有以下程序:  #include  unionpw  {intni;  charch[2];}a;  main()  {a.ch[0]=13;a.ch[1]=0;printf("%d\n",a.i);}  程序的输出结果是  A)13  B)14  C)208  D)209(40)在16位IBM-PC机上使用C语言,若有如下定义  structdata  {inti;  charch;  doublef;  }b;  则结构变量b占用内存的字节数是  A)1  B)2  C)7  D)11(41)下面程序的运行结果是  #include  main()  {inta=1,b=10;  do  {b-=a;a++;}while(b--<0);  printf("a=%d,b=%d\n",a,b);  }  A)a=3,b=11  B)a=2,b=8  C)a=1,b=-1  D)a=4,b=9(42)以下程序的输出结果是  voidreverse(inta[],intn)  {inti,t;  for(i=0;i  {t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}  }  main()  {intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;  reverse(b,8);  for(i=6;i<10;i++)s+=b[i];  printf("%d\nn",s);  }  A)22  B)10  C)34  D)30(43)有如下程序:  longfib(intn)  {if(n>2)return(fib(n-1)+fib(n-2));  elsereturn(2);  }  main()  {printf("%d\n",fib(3));}  该程序的输出结果是  A)2  B)4  C)6  D)8(44)假定以下程序经编译和连接后生成可执行文件PROG.EXE,如果在此可执行文件所在目录的DOS提示符下键入:  PROGABCDEFGHIJKL<回车>,则输出结果为  main(intargc,char*argv[])  {while(--argc>0)  printf("%s",argv[argc]);  printf("\n");  }  A)ABCDEFG  B)IJHL      C)ABCDEFGHIJKL  D)IJKLABCDEFGH(45)以下程序有错,错误原因是  main()  {int*p,i;char*q,ch;  p=&i;  q=&ch;  *p=40;  *p=*q;  ......  }  A)p和q的类型不一致,不能执行*p=*q;语句  B)*p中存放的是地址值,因此不能执行*p=40;语句  C)q没有指向具体的存储单元,所以*q没有实际意义  D)q虽然指向了具体的存储单元,但该单元中没有确定的值,所以执行*p=*q;没有意义,可能会影响后面语句的执行结果(46)函数rewindn的作用是  A)使文件位置指针重新返回文件的开始位置  B)将文件位置指针指向文件中所要求的特定位置  C)使文件位置指针指向文件的末尾  D)使文件位置指针自动移至下一个字符位置(47)设有以下说明语句  structex  {intx;floaty;charz;}example;  则下面的叙述中不正确的是  A)struct结构体类型的关键字  B)example是结构体类型名  C)x,y,z都是结构体成员名  D)structex是结构体类型名(48)设有以下语句:  charx=3,y=6,z;  z=x^y<<2;  则z的二进制值是  A)00010100  B)00011011  C)00011100  D)00011000(49)阅读以下程序及对程序功能的描述,其中正确的描述是  #include  main()  {  FILE*in,*out;  charch,infile[10],outfile[10];  printf("Entertheinfilename:\n");  scanf("%s",infile);  printf("Entertheoutfilename:\n");  scanf("%s",outfile);  if((in=fopen(infile,"r"))==NULL)  {  printf("cannotopeninfile\n");  exit(0);  }  if((out=fopen(outfile,"w"))==NULL)  {  printf("cannotopenoutfile\n");  exit(0);  }  while(!feof(in))fputc(fgetc(in),out);  fclose(in);  fclose(out);  }n  A)程序完成将磁盘文件的信息在屏幕上显示的功能  B)程序完成将两个磁盘文件合二为一的功能  C)程序完成将一个磁盘文件复制到另一个磁盘文件中  D)程序完成将两个磁盘文件合并并在屏幕上输出(50)C语言中,能识别处理的文件为  A)文本文件和数据块文件  B)文本文件和二进制文件  C)流文件和文本文件  D)数据文件和二进制文件二、填空题(1)数据的逻辑结构有线性结构和【1】两大类。解析:数据的逻辑结构有线性结构和非线性结构两大类。(2)顺序存储方法是把逻辑上相邻的结点存储在物理位置【2】的存储单元中。解析:常用的存储表示方法有4种,顺序存储、链式存储、索引存储、散列存储。其中,顺序存储方法是把逻辑上相邻的结点存储在物理位置也相邻的存储单元中。(3)一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的【3】。解析:本题考查了继承的优点:相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余,提高软件的可重用性。(4)软件工程研究的内容主要包括:【4】技术和软件工程管理。解析:基于软件工程的目标,软件工程的理论和技术性研究的内容主要包括:软件开发技术和软件工程管理。软件开发技术包括:软件开发方法学、开发过程、开发工具和软件工程环境,其主体内容是软件开发方法学。软件工程管理包括:软件管理学、软件工程经济学,以及软件心理学等内容。(5)关系操作的特点是【5】操作。解析:在关系操作中,所有操作对象与操作结果都是关系。而关系定义为元数相同的元组的集合。因此,关系操作的特点是集合操作。(6)下面程序是指从终端读入的20个字符放入字符数组中,然后利用指针变量输出上述字符串,请填空。#includemain(){inti;char s[21],*p;for(i=0;i<20;i++)s[i]=getchar();s[i]=【6】;p=【7】while(*p)putchar (【8】);}解析:本题选通过for循环从键盘读入20个字符,然后在最后赋一定值′\0′后为结束标志,再使指针P指向字符串的首地址。最后通过while循环对字符串进行扫描并输出。(7)以下程序将数组a的4个元素和数组b的6个元素写到名为lett.dat的二进制文件中,请填空。#includenmain(){FILE  *fp;chara[4]="1234",b[6]="abcedf";if((fp=fopen("【9】","wb"))=NULL)exit(0);fwrite(a,sizeof(char),4,fp);fwrite(b,【10】,1,fp);fclose(fp);}解析:本题主要考查函数fwrite(char*pt,unsignedsize,unsignedn,FILE*fp),把pt所指向的n*size个字节输出到fp所指定的文件中。(8)在C语言中(以16位PC机为例),一个float型数据在内存中所占的字节数为4;一个double型数据在内存中所占的字节数为【11】。解析:在一般系统中,一个float型数据在内存中占4个字节(32位),一个double型数据占8个字节。(9)以下程序输出的结果是【12】。main(){inta=5,b=4,c=3,d;d=(a>b>c);printf("%d\n",d);}解析:本题的关键在于对变量c的赋值运算:d=(a>b>c)d=(5>4>3)先算5>3,为真,得1,即:d=(1>3),此时1>3,为假,得0。(10)以下函数的功能是求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。例如,若x中的值为30,则有4个数符合要求,它们是1,3,5,15。请按题意,完成填空。试题程序:#include#includevoidfun(intx,intpp[],int*n){inti,j=0;【13】if(x%i==0)pp[j++]=i;【14】;}main(){int x,aa[1000],n,i;clrscr();printf("\nPleaseenteranintegernumber:\n");scanf("%d",&x);fun(x,aa,n&n);for(i=0;iprintf("%d",aa[i]);printf("\n");}解析:本题题干信息是能整除且不是偶数的所有整数之和。循环语句中i从1开始且每次增2,所以i始终是奇数,*n=j;语句是记录能够符合题意的各个整数的各数。#include#includeintfun(int*s,intt,int*k){inti;*k=0;【15】if(s[*k]return【16】;}main(){inta[10]={876,675,896,101,301,401,980,431,451,777},k;clrscr();fun(a,10,&k);printf("%d,%d\n",k,a[k]);}解析:本题中直接使用指针变量k,但在使用时要注意对k的指针运算,此外,一开始应认*k的值为数组中的某一下标值,即*k=0。(12)mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。intmystrlen(char*str){inti;for(i=0;【17】!=′\0′;i++);return(i);}解析:str是指针变量,它指向字符型数据,在循环过程中,可以用*(str+i)来访问字符串中的第i个元素,判断是否是结束标志,如果不是,i=i+1,继续取下一个元素进行判断,直到*(str+i)的值为′\0′为止,也可以用下标的方式引用字符,如*(str+i)相当于str[i]。(13)以下程序的输出结果为【18】。#defineJFT(x)x*xmain(){inta,k=3;a=++JFT(k+1);printf("%d",a);}解析:n宏替换的原则是按原样替换,本题中遇到形参x则以实参k+1替换,其他字符不变。所以JFT(k+1)经替换后为k+1*k+1,所以a=++k+1*k+1,若k+1,若k的值为3,则经过运算为a=4+1*4+1=9。(14)以下定义的结构体类型拟包含两个成员,其中成员变量info用来存入整形数据;成员变量link是指向自身结构体的指针,请将定义补充完整。structnode{intinfo;【19】link;};解析:本题中的结构类型名为structnode,所以空白处应填:structnode*。即定义一个指向自身的结构体指针。(15)设有以下结构体类型:structst{charname[8];intnum;floats[4];}student[50];并且结构体数组student中的元素都已有值,若要将这些元素写到硬盘文件fp中,请将以下fwrite语句补充完整:fwrite(student,【20】,1,fp);解析:fwrite函数的一般调用形式为:fwrite(buffer,size,count,fp),其中:buffer:是一个指针变量,是要输出数据的起始地址size:要写的字节数count:要进行写多少个size字节的数据项fp:文件型指针选择题                                                              01-05  D  C  C  D  B                       06-10  A  A  C  B  A                       11-15  A  C  B  B  A                       16-20  D  D  B  C  B                       21-25  D  D  A  C  A                       26-30  A  C  B  C  C                       31-35  C  D  B  D  C                       36-40  B  C  D  A  D                       n41-45  B  A  B  D  D                       46-50  A  B  B  C  B  
查看更多

相关文章

您可能关注的文档