全国计算机等级考试二级C语言程序设计

全国计算机等级考试二级C语言程序设计

ID:82484450

大小:301.00 KB

页数:173页

时间:2022-10-25

上传者:胜利的果实
全国计算机等级考试二级C语言程序设计_第1页
全国计算机等级考试二级C语言程序设计_第2页
全国计算机等级考试二级C语言程序设计_第3页
全国计算机等级考试二级C语言程序设计_第4页
全国计算机等级考试二级C语言程序设计_第5页
全国计算机等级考试二级C语言程序设计_第6页
全国计算机等级考试二级C语言程序设计_第7页
全国计算机等级考试二级C语言程序设计_第8页
全国计算机等级考试二级C语言程序设计_第9页
全国计算机等级考试二级C语言程序设计_第10页
资源描述:

《全国计算机等级考试二级C语言程序设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

全国计算机等级考试二级C语言程序设计

1资料仅供参考全国计算机等级考试二级C语言程序设计考前测试题(1)一、选择题:(1)栈和队列的共同特点是  A)都是先进先出  B)都是先进后出   C)只允许在端点处插入和删除元素D)没有共同点(2)已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是   A)acbed  B)decab   C)deabc   D)c(3)链表不具有的特点是   A)不必事先估计存储空间   B)可随机访问任一元素   C)插入删除不需要移动元素   D)所需空间与线性表长度成正比(4)结构化程序设计的3种结构是   A)顺序结构、选择结构、转移结构  B)分支结构、等价结构、循环结构   C)多分支结构、赋值结构、等价结构   D)顺序结构、选择结构、循环结构(5)为了提高测试的效率,应该   A)随机选取测试数据   B)取一切可能的输入数据作为测试数据   C)在完成编码以后制定软件的测试计划   D)集中对付那些错误群集的程序(6)算法的时间复杂度是指   A)执行算法程序所需要的时间   B)

2资料仅供参考算法程序的长度   C)算法执行过程中所需要的基本运算次数   D)算法程序中的指令条数(7)软件生命周期中所花费用最多的阶段是   A)详细设计   B)软件编码   C)软件测试  D)软件维护(8)数据库管理系统DBMS中用来定义模式、内模式和外模式的语言为   A)C   B)Basic   C)DDL   D)DML(9)下列有关数据库的描述,正确的是   A)数据库是一个DBF文件   B)数据库是一个关系   C)数据库是一个结构化的数据集合   D)数据库是一组文件(10)下列有关数据库的描述,正确的是   A)数据处理是将信息转化为数据的过程   B)数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变   C)关系中的每一列称为元组,一个元组就是一个字段   D)如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字(11)以下叙述中正确的是   A)C语言比其它语言高级   B)C语言能够不用编译就能被计算机识别执行   C)C语言以接近英语国家的自然语言和数学语言作为语言的表示形式   D)C语言出现的最晚,具有其它语言的一切优点(12)C语言中用于结构化程序设计的3种基本结构是

3资料仅供参考   A)顺序结构、选择结构、循环结构   B)if,switch,break   C)for,while,do-while   D)if,for,continue(13)C语言中最简单的数据类型包括   A)整型、实型、逻辑型   B)整型、实型、字符型   C)整型、字符型、逻辑型   D)字符型、实型、逻辑型(14)若变量已正确定义并赋值,以下符合C语言语法的表示式是   A)a:=b+1   B)a=b=c+2   C)int18.5%3   D)a=a+7=c+b(15)下列可用于C语言用户标识符的一组是   A)void,define,WORD   B)a3_b3,_123,Car   C)For,-abc,IFCase   D)2a,DO,sizeof(16)C语言中运算对象必须是整型的运算符是   A)%=   B)/   C)=   D)<=(17)若变量a,i已正确定义,且i已正确赋值,合法的语句是   A)a==1   B)++i;   C)a=a++=5;   D)a=int(i);(18)已知   intt=0;   while(t=1)   {...}   则以下叙述正确的是   A)循环控制表示式的值为0   B)循环控制表示式的值为1   C)循环控制表示式不合法   D)

4资料仅供参考以上说法都不对(19)若变量已正确说明为float型,要经过语句scanf("%f%f%f",&a,&b,&c);给a赋予10.0,b赋予22.0,c赋予33.0,下列不正确的输入形式是   A)10<回车>22<回车>33<回车>   B)10.0,22.0,33.0<回车>   C)10.0<回车>22.033.0<回车>   D)10 22<回车>33<回车>(20)有如下程序:   main()   {   intx=1,a=0,b=0;   switch(x)   {   case0:b++;   case1:a++;   case2:a++;b++;   }   printf("a=%d,b=%d\n",a,b);}   该程序的输出结果是   A)a=2,b=1   B)a=1,b=1   C)a=1,b=0   D)a=2,b=2(21)有以下程序   main()   {inti=1,j=1,k=2;   if((j++||k++)&&i++)   printf("%d,%d,%d\n",i,j,k)

5资料仅供参考;   }   执行后输出结果是   A)1,1,2   B)2,2,1   C)2,2,2   D)2,2,3(22)有如下程序   main()   {floatx=2.0,y;   if(x<0.0)y=0.0;   elseif(x<10.0)y=1.0/x;   elsey=1.0;   printf("%f\n",y);}   该程序的输出结果是   A)0.000000   B)0.250000  C)0.500000   D)1.000000   (23)有如下程序:   main()   {intn=9;   while(n>6){n--;printf("%d",n);}   }   该程序的输出结果是   A)987   B)876  C)8765   D)9876(24)在下列选项中,没有构成死循环的是   A)inti=100;   while(1)   {i=i0+1;   if(i>100)break

6资料仅供参考;   }   B)for(;;);   C)intk=10000;   do{k++;}while(k>10000);   D)ints=36;   while(s)--s;(25)设intx=1,y=1;表示式(!x||y--)的值是   A)0   B)1   C)2   D)-1(26)若已定义的函数有返回值,则以下关于该函数调用的叙述中错误的是  A)函数调用能够作为独立的语句存在   B)函数调用能够作为一个函数的实参   C)函数调用能够出现在表示式中   D)函数调用能够作为一个函数的形参(27)有以下程序   floatfun(intx,inty)   {return(x+y);}   main()   {inta=2,b=5,c=8;   printf("%3.0f\n",fun((int)fun(a+c,b),a-c));   }   程序运行后的输出结果是   A)编译出错   B)9   C)21   D)9.0(28)若有以下调用语句,则不正确的fun函数的首部是   main()   {

7资料仅供参考…   inta[50],n;   …   fun(n,&a[9]);   …   }   A)voidfun(intm,intx[])   B)voidfun(ints,inth[41])   C)voidfun(intp,int*s)   D)voidfun(intn,inta)(29)fseek函数的正确调用形式是   A)fseek(文件指针,起始点,位移量)   B)fseek(文件指针,位移量,起始点)   C)fseek(位移量,起始点,文件指针)   D)fseek(起始点,位移量,文件指针)(30)若fp是指向某文件的指针,且已读到文件末尾,则函数feof(fp)的返回值是   A)EOF   B)-1   C)1   D)NULL(31)若有说明语句:charc='\72';则变量c   A)包含1个字符   B)包含2个字符   C)包含3个字符   D)说明不合法,c的值不确定(32)若有说明inta[3][4];则a数组元素的非法引用是   A)a[0][2*1]   B)a[1][3]   C)a[4-2][0 ]   D)a[0][4](33)设有以下说明语句   structstu   {inta;   float

8资料仅供参考b;   }stutype;   则下面的叙述不正确的是   A)struct是结构体类型的关键字   B)structstu是用户定义的结构体类型   C)stutype是用户定义的结构体类型名   D)a和b都是结构体成员名(34)在C语言中,引用数组元素时,其数组下标的数据类型允许是   A)整型常量   B)整型表示式   C)整型常量或整型表示式   D)任何类型的表示式(35)若运行时给变量x输入12,则以下程序的运行结果是   main()   {intx,y;   scanf("%d",&x);   y=x>12?x+10:x-12;   printf("%d\n",y);   }   A)0   B)22   C)12   D)10(36)以下说法正确的是   A)C语言程序总是从第一个的函数开始执行   B)在C语言程序中,要调用函数必须在main()函数中定义   C)C语言程序总是从main()函数开始执行   D)C语言程序中的main()函数必须放在程序的开始部分(37)表示式0x13^0x17的值是   A)0x04   B)0x13   C)0xE8   D)0x17

9资料仅供参考(38)有以下程序#defineF(X,Y)(X)*(Y)   main()   {inta=3,b=4;   printf("%d\n",F(a++,b++));   }   程序运行后的输出结果是   A)12   B)15   C)16   D)20(39)下列程序执行后的输出结果是   voidfunc(int*a,intb[])   {b[0]=*a+6;}   main()   {inta,b[5];   a=0;b[0]=3;   func(&a,b);printf("%d\n",b[0]);   }   A)6   B)7   C)8   D)9(40)若有下面的程序段:   chars[]="china";char*p;p=s;   则下列叙述正确的是   A)s和p完全相同   B)数组s中的内容和指针变量p中的内容相等   C)s数组长度和p所指向的字符串长度相等   D)*p与s[0]相等(41)

10资料仅供参考以下程序中函数sort的功能是对a数组中的数据进行由大到小的排序   voidsort(inta[],intn)   {inti,j,t;   for(i=0;i

11资料仅供参考   A)a,point,*&a   B)&*a,&a,*point   C)*&point,*point,&a   D)&a,&*point,point(44)在调用函数时,如果实参是简单的变量,它与对应形参之间的数据传递方式是   A)地址传递   B)单向值传递   C)由实参传形参,再由形参传实参   D)传递方式由用户指定(45)已定义以下函数   fun(char*p2,char*p1)   {   while((*p2=*p1)!='\0'){p1++;p2++;}   }   函数的功能是   A)将p1所指字符串复制到p2所指内存空间   B)将p1所指字符串的地址赋给指针p2   C)对p1和p2两个指针所指字符串进行比较   D)检查p1和p2两个指针所指字符串中是否有'\0'(46)若执行下述程序时,若从键盘输入6和8时,结果为   main()   {inta,b,s;   scanf("%d%d",&a,&b);   s=a;   if(a

12资料仅供参考   A)36       B)64          C)48            D)以上都不对 (47)fscanf函数的正确调用形式是                    A)fscanf(fp,格式字符串,输出表列);      B)fscanf(格式字符串,输出表列,fp);       C)fscanf(格式字符串,文件指针,输出表列);      D)fscanf(文件指针,格式字符串,输入表列);  (48)下列关于C语言数据文件的叙述中正确的是                    A)文件由ASCII码字符序列组成,C语言只能读写文本文件   B)文件由二进制数据序列组成,C语言只能读写二进制文件   C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件   D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件(49)有以下程序    voidss(char*s,chart)    {while(*s)    {if(*s==t)*s=t-'a'+'A';     s++;    }   }    main()   {charstr1[100]="abcddfefdbd",c='d';      ss(str1,c);printf("%s\n",str1);      

13资料仅供参考}       程序运行后的输出结果是                  A)ABCDDEFEDBD         B)abcDDfefDbD        C)abcAAfefAbA                 D)Abcddfefdbd  (50)若以下定义:    structlink      {intdata;        structlink*next;     }a,b,c,*p,*q;         且变量a和b之间已有如下图所示的链表结构:                                           adatanext5+bdatanext9\0pcdatanext7q                                            指针p指向变量a,q指向变量c。则能够把c插入到a和b之间并形成新的链表的语句组是:   A)a.next=c;c.next=b;    B)p.next=q;q.next=p.next;  C)p->next=&c;q->next=p->next;     D)(*p).next=q;(*q).next=&b;     二、填空题(1)算法的基本特征是可行性、确定性、【1】和拥有足够的情报。(2)在长度为n的有序线性表中进行二分查找。最坏的情况下,需要的比较次数为【2】。(3)在面向对象的程序设计中,类描述的是具有相似性质的一组【3】。(4)一般,将软件产品从提出、实现、使用维护到停止使用退役的过程称为【4】。(5)数据库管理系统常见的数据模型有层次模型、网状模型和【5】3种。(6)设y是int型,请写出y为奇数的关系表示式【6】。

14资料仅供参考(7)设inta=5,b=6,表示式(++a==b--)?++a:--b的值是【7】。(8)下列程序的输出结果是【8】。maim(){charb[]="Helloyou";b[5]=0;printf("%s\n",b);}(9)当调用函数时,实参是一个数组名,则向函数传递的是【9】。(10)以下程序的输出结果是【10】。inta=1234;printf("%2d

15",a);(11)用高级语言编写的程序称为【11】程序,它能够经过解释程序翻译一句执行一句的方式执行,也能够经过编译程序一次翻译产生目标程序,然后执行。(12)以下程序的输出结果是【12】。main(){inta=0;a+=(a=8);printf("%d

16",a);} (13)函数voidfun(float*sn,intn)的功能是:根据以下公式计算S,计算结果经过形参指针sn传回;n经过形参传入,n的值大于等于0。请填空。 voidfun(float*sn,intn){floats=0.0,w,f=-1.0;inti=0;for(i=0;i<=n;i++){f=【13】*f;w=f/(2*i+1);s+=w;}【14】=s;}(14)函数fun的功能是:根据以下公式求p的值,结果由函数值返回。m与n为两个正数且要求m>n。 例如:m=12,n=8时,运行结果应该是495.000000。请在题目的空白处填写适当的程序语句,将该程序补充完整。#include"string.h"#include"stdio.h"floatfun(intm,intn){inti;doublep=1.0;for(i=1;i<=m;i++)【15】;for(i=1;i<=n;i++)【16】;for(i=1;i<=m-n;i++)p=p/i;returnp;}main(){clrscr();printf("p=%f

17",fun(12,8));}(15)该程序运行的结果是【17】。#include"string.h"#include"stdio.h"#defineM100voidfun(intm,int*a,int*n){inti,j=0;for(i=1;i<=m;i++)

18资料仅供参考if(i%7==0||i==0)a[j++]=i;*n=j;}main(){intaa[M],n,k;clrscr();fun(10,aa,&n);for(k=0;k

19");elseprintf("M",aa[k]);printf("

20");}(16)下列程序的功能是:求出ss所指字符串中指定字符的个数,并返回此值。例如,若输入字符串,输入字符1,则输出3,请填空。#include"string.h"#include"stdio.h"#defineM81intfun(char*ss,charc){inti=0;for(;【18】;ss++)if(*ss==c)i++;returni;}main(){chara[M],ch;clrscr();printf("\nPleaseenterastring:");gets(a);printf("\nPleaseenterachar:");ch=getchar();printf("\nThenumberofthecharis:%d\n",fun(a,ch));}(17)下面程序把从终端读入的文本(用@作为文本结束标志)输出到一个名为bi.dat的新文件中,请填空。#include"stdio.h"FILE*fp;{charch;if((fp=fopen(【19】))==NULL)exit(0);while((ch=getchar())!=‘@')fputc(ch,fp);fclose(fp);}(18)设有如下宏定义#defineMYSWAP(z,x,y){z=x;x=y;y=z;}以下程序段经过宏调用实现变量a,b内容交换,请填空。floata=5,b=16,c;MYSWAP(【20】,a,b);

21资料仅供参考

22资料仅供参考全国计算机等级考试二级C语言程序设计考前测试题(2)一、选择题(1)已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历为  A)GEDHFBCA  B)DGEBHFCA  C)ABCDEFGH  D)ACBFEDHG(2)树是结点的集合,它的根结点数目是  A)有且只有1  B)1或多于1  C)0或1  D)至少2(3)如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是  A)e3,e1,e4,e2  B)e2,e4,e3,e1  C)e3,e4,e1,e2  D)任意顺序(4)在设计程序时,应采纳的原则之一是

23资料仅供参考A)不限制goto语句的使用  B)减少或取消注解行  C)程序越短越好  D)程序结构应有助于读者理解(5)程序设计语言的基本成分是数据成分、运算成分、控制成分和  A)对象成分B)变量成分  C)语句成分  D)传输成分(6)下列叙述中,不属于软件需求规格说明书的作用的是  A)便于用户、开发人员进行理解和交流  B)反映出用户问题的结构,能够作为软件开发工作的基础和依据  C)作为确认测试和验收的依据  D)便于开发人员进行需求分析(7)下列不属于软件工程的3个要素的是  A)工具  B)过程  C)方法  D)环境(8)单个用户使用的数据视图的描述称为  A)外模式  B)概念模式  C)内模式  D)存储模式(9)将E-R图转换到关系模式时,实体与联系都能够表示成  A)属性  B)关系  C)键  D)域(10)SQL语言又称为  A)结构化定义语言 B)结构化控制语言 C)结构化查询语言 D)结构化操纵语言(11)下列叙述中正确的是  A)C语言编译时不检查语法  

24资料仅供参考B)C语言的子程序有过程和函数两种  C)C语言的函数能够嵌套定义  D)C语言的函数能够嵌套调用(12)在C语言中,退格符是  A)\n  B)\t  C)\f  D)\b(13)以下叙述中正确的是  A)构成C程序的基本单位是函数  B)能够在一个函数中定义另一个函数  C)main()函数必须放在其它函数之前  D)所有被调用的函数一定要在调用之前进行定义(14)在C程序中,判断逻辑值时,用“非0”表示逻辑值“真”,又用“0”表示逻辑值“假”。在求逻辑值时,用表示逻辑表示式值为“真”,又用表示逻辑表示式值为“假”。  A)1  0  B)0 1  C)非0 非0  D)1 1(15)在C语言中,运算对象必须是整型数的运算符是  A)%  B)\  C)%和\  D)**(16)字符型数据在机器中是用ASCII码表示的,字符“5”和“7”在机器中表示为  A)10100011和01110111  B)01000101和01100011  C)00110101和00110111  D)01100101和01100111(17)若已定义:inta=25,b=14,c=19;以下三目运算符(?:)所构成语句:a<=25&&b--<=2&&c?printf("***a=%d,b=%d,c=%d\n",a,b,c):printf("###a=%d,b=%d,c=%d\n",a,b,c);

25资料仅供参考程序输出的结果是  A)***a=25,b=13,c=19  B)***a=26,b=14,c=19  C)###a=25,b=13,c=19  D)###a=26,b=14,c=19(18)若有定义:inta=7;floatx=2.5,y=4.7;则表示式x+a%3*(int)(x+y)%2/4的值是  A)2.500000  B)2.750000  C)3.500000  D)0.000000(19)下列程序段的输出结果是:  inta=1234;  floatb=123.456;  doublec=12345.54321;  printf("%2d,%2.1f,%2.1f",a,b,c);  A)无输出  B)12,123.5,12345.5  C)1234,123.5,12345.5  D)1234,123.4,1234.5(20)若运行以下程序时,从键盘输入ADescriptor(表示回车),则下面程序的运行结果是#include“stdio.h”  main()  {charc;  intv0=1,v1=0,v2=0;  do{switch(c=getchar())  {case′a′:case′A′:  case′e′:case′E′:  case′i′:case′I′:  case′o′:case′O′:  case′u′:case′U′:v1+=1;  default:v0+=1;v2+=1; } 

26资料仅供参考  }while(c!=′\n′);  printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);}  A)v0=7,v1=4,v2=7 B)v0=8,v1=4,v2=8 C)v0=11,v1=4,v2=11 D)v0=13,v1=4,v2=12(21)设有以下程序段  intx=0,s=0;  while(!x!=0)s+=++x;  printf("%d",s);  则  A)运行程序段后输出0  B)运行程序段后输出1  C)程序段中的控制表示式是非法的  D)程序段执行无限次(22)有如下程序  main()  {floatx=2.0,y;  if(x<0.0)y=0.0;  elseif(x>10.0)y=1.0/x;  elsey=1.0;  printf("%f\n",y);}  该程序的输出结果是  A)0.000000  B)0.250000  C)0.500000  D)1.000000(23)执行下面的程序段后,变量k中的值为  intk=3,s[2];  s[0]=k;k=s[1]*10;  A)不定值  B)33  C)30 

27资料仅供参考 D)10(24)以下程序段的描述,正确的是  x=-1;  do  {x=x*x;}  while(!x);  A)是死循环  B)循环执行两次  C)循环执行一次 D)有语法错误(25)以下选项错误的是  A)main()  {intx,y,z;  x=0;y=x-1;  z=x+y;}  B)main()  {intx,y,z;  x=0,y=x+1;  z=x+y;}  C)main()  {intx;int  inty;  x=0,y=x+1;  z=x+y;}  D)main()  {intx,y,z;  x=0;y=x+1;  z=x+y,}(26)有如下程序段  int

28资料仅供参考a=14,b=15,x;  charc=′A′;  x=(a&&b)&&(c<′B′);  执行该程序段后,x的值为  A)ture  B)false  C)0  D)1(27)下列程序执行后的输出结果是  voidfunc1(inti);  voidfunc2(inti);  charst[]="hello,friend!";  voidfunc1(inti)  {printf("%c",st[i]);  if(i<3){i+=2;func2(i);}}  voidfunc2(inti)  {printf("%c",st[i]);  if(i<3){i+=2;func1(i);}}  main()  {inti=0;func1(i);printf("\n");}  A)hello  B)hel  C)hlo  D)hlm(28)以下函数返回a所指数组中最大值所在的下标值  fun(int*a,intn)  {inti,j=0,p;  p=j;  for(i=j;ia[p])_______;  return(p);}  在下划线处应填入的内容是

29资料仅供参考  A)i=p  B)a[p]=a[i]  C)p=j  D)p=i(29)下面说明不正确的是  A)chara[10]="china";  B)chara[10],*p=a;p="china"  C)char*a;a="china";  D)chara[10],*p;p=a="china"(30)以下程序的输出结果是  voidprt(int*x,int *y,int *z)  {printf("%d,%d,%d\n",++*x,++*y,*(z++));}  main()  {inta=10,b=40,c=20;  prt(&a,&b,&c);  prt(&a,&b,&c);}  A)11,42,31B)11,41,20C)11,21,40D)11,41,21    12,22,4112,42,2011,21,2112,42,22(31)若有函数内部说明:inta[3][4];则数组a中各元素  A)可在程序的运行阶段得到初值0  B)可在程序的编译阶段得到初值0  C)不能得到确定的初值  D)可在程序的编译或运行阶段得到初值0(34)定义如下变量和数组:  intk;  inta[3][3]={9,8,7,6,5,4,3,2,1};  则下面语句的输出结果是

30资料仅供参考  for(k=0;k<3;k++)printf("%d",a[k][k]);  A)753  B)951  C)963  D)741(35)下列程序执行后的输出结果是  main()  {chararr[2][4];  strcpy(arr,"you");strcpy(arr[1],"me");  arr[0][3]=′&′;  printf("%s\n",arr);}  A)you&me  B)you  C)me  D)err  (36)有以下函数  charfun(char*p)  {returnp;}  该函数的返回值是  A)无确切的值 B)形参p中存放的地址值 C)一个临时存储单元的地址 D)形参p自身的地址值(37)以下正确的说法是  A)定义函数时,形参的类型说明能够放在函数体内  B)return后边的值不能为表示式  C)如果函数值的类型与返回值类型不一致,以函数值类型为准  D)如果形参与实参类型不一致,以实参类型为准(38)有以下程序  intf(intn)  {if(n==1)return1;  elsereturnf(n-1)

31资料仅供参考+1;}  main()  {inti,j=0;  for(i=1;i<3;i++)j+=f(i);  printf("%d\n",j);}  程序运行后的输出结果是  A)4  B)3  C)2  D)1(39)设有如下定义:  strucksk  {inta;  floatb;  }data;  int*p;  若要使P指向data中的a域,正确的赋值语句是  A)p=&a;  B)p=data.a;  C)p=&data.a;  D)*p=data.a;‘(40)以下对结构体类型变量的定义中,不正确的是  A)typedefstructaa  {intn;  floatm;  }AA;  AAtdl;  B)#defineAAstructaa  AA{intn;  floatm;  }

32资料仅供参考tdl;  C)struct  {intn;  floatm;  }aa;  structaatdl;  D)struct  {intn;  floatm;  }tdl;(41)若说明int*p,n;则经过语句scanf能够正确读入数据的程序段是  A)p=&n;scanf("%d",&p);  B)p=&n;scanf("%d",*p);  C)scanf("%d",n);  D)p=&n;scanf("%d",p);(42)在下述程序中,判断i>j共执行的次数是  main()  {inti=0,j=10,k=2,s=0;  for(;;)  {i+=k;  if(i>j)  {printf("%d",s);  break;  }s+=i;  }  }  A)4  B)7 C)5

33资料仅供参考 D)6(43)以下4个选项中,不能看做一条语句的是  A);  B)a=5,b=2.5,c=3.6; C)if(a<5);  D)if(b!=5)x=2;y=6;(44)在C语言中,变量的隐含存储类别是  A)auto  B)static  C)extern  D)无存储类别(45)若有以下程序  #include“stdio.h”  voidf(intn);  main()  {voidf(intn);  f(5);  }  voidf(intn)  {printf("%d\n",n);}  则以下叙述中不正确的是  A)若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数f  B)若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都能够正确调用函数f  C)对于以上程序,编译时系统会提示出错信息:提示对f函数重复说明  D)函数f无返回值,因此可用void将其类型定义为无返回值型(46)若有下面的说明和定义  structtest  {intml;charm2;float

34资料仅供参考m3;  unionuu{charul[5];intu2[2];}ua;  }myaa;  则sizeof(structtest)的值是  A)12  B)16  C)14  D)9(47)以下程序的输出是  structst  {intx;int*y;}*p;  intdt[4]={10,20,30,40};  structstaa[4]={50,&dt[0],60,&dt[0],60,&dt[0],60,&dt[0]};  main()  {p=aa;  printf("%d\n",++(p->x));  }  A)10  B)11  C)51  D)60(48)若有运算符<<,sizeof,^,&=,则它们按优先级由高至低的正确排列次序是  A)sizeof,&=,<<,^  B)sizeof,<<,^,&=  C)^,<<,sizeof,&=  D)<<,^,&=,sizeof(49)函数fseek(pf,OL,SEEK_END)中的SEEK_END代表的起始点是

35资料仅供参考  A)文件开始 B)文件末尾 C)文件当前位置 D)以上都不对(50)有以下程序  main()  {FILE*fp;inti=20,j=30,k,n;  fp=fopen("d1.dat","w");  fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);  fclose(fp);  fp=fopen("d1.dat","r");  fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);  fclose(fp);  }  程序运行后的输出结果是  A)2030  B)2050  C)3050  D)3020二、填空题(1)数据结构分为逻辑结构与存储结构,线性链表属于【1】。(2)在面向对象方法中,类之间共享属性和操作的机制称为【2】。(3)耦合和内聚是评价模块独立性的两个主要标准,其中【3】反映了模块内各成分之间的联系。(4)一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体"项目主管"与实体"项目"的联系属于【4】的联系。(5)数据库设计分为以下6个设计阶段:需求分析阶段、【5】、逻辑设计阶段、物理设计阶段、实施阶段、运行和维护阶段。(6)以下程序的运行结果是【6】。#defineMAX

36资料仅供参考(a,b)(a>b?a:b)+1main(){inti=6,j=8,k;printf("%d\n",MAX(i,j));}(7)以下程序的功能是从健盘输入若干学生的成绩,并输出最高成绩和最低成绩,当输入负数时结束。请填空。main(){floatx,amax,amin;scanf("%f",&x);amax=x;amin=x;while(【7】){if(x>amax)amax=x;elseif【8】amin=x; elsescanf("%f",&x);}printf("\namax=%f\namin=%f\n",amax,amin);}(8)在对文件操作的过程中,若要求文件的位置指针回到文件的开始处,应当调用的函数是【9】。(9)在计算机中,字符的比较是对它们的【10】进行比较。

37资料仅供参考(10)在内存中,存储字符′x′要占用1个字节,存储字符串″X″要占用【11】个字节。(11)下列程序的输出结果是16.00,请填空。main(){inta=9,b=2;floatx=【12】,y=1.1,z;z=a/2+b*x/y+1/2;printf("%5.2f\n",z);}(12)设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出fun函数的首部【13】。要求形参名为b。main(){doubles[10][22];intn;┆fun(s);┆}(13)下列程序的功能是输入一个整数,判断是否是素数,若为素数输出1,否则输出0,请填空。main(){inti,x,y=1;scanf("%d",&x);for(i=2;i<=x/2;i++)if【14】{y=0;break;}printf("%d\n",

38资料仅供参考y);}(14)下面程序的功能是将一个字符串str的内容颠倒过来,请填空。main(){inti,j,【15】;charstr[]={"1234567"};for(i=0,j=strlen(str)【16】;i=0;--i){d=c[i];printf("%c",b【18】);}printf("\n");}(16)若给fun函数的形参s传送字符串:“]]6354abcc”(其中]表示空格字符),则函数的返回值是【19】。#include”stdio.h”longfun(chars[]){longn;int

39资料仅供参考sign;for(;isspace(*s);s++);sign=(*s==′-′)?-1:1;if(*s==′+′||*s==′-′)s++;for(n=0;isdigit(*s);s++)n=10*n+(*s-′0′);returnsign*n;}(17)设有定义“struct{inta;floatb;charc;}abc,*p_abc=&abc;”,则对结构体成员a的引用方法能够是abc.a和p_abc【20】a。

40资料仅供参考

41资料仅供参考全国计算机等级考试二级C语言程序设计考前测试题(3)一、选择题(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)集成测试  

42资料仅供参考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)顺序、选择、循环 

43资料仅供参考 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=0+0; B)a=4000*10;  C)a=30000+10000;  D)a=4000L*10L(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 

44资料仅供参考 D)52(20)下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,请选择填空。  #include“stdio.h”  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“stdio.h”  main()  {inty=10;  do{y--;}while(--y);  printf("%d\n",y--);  }  A)-1  B)1  C)8  D)0(23)下面程序的输出结果是  main()  {int

45资料仅供参考a[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)  {

46资料仅供参考b+=*a;return(b);}  main()  {inta=2,res=2;  res+=func(&a);  printf("%d

47",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},

48资料仅供参考*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”stdio.h”  inta[]={2,4,6,8};  main()  {inti;  int*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 

49资料仅供参考 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”stdio.h”  unionpw  {int

50资料仅供参考i;  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”stdio.h”  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[],int

51资料仅供参考n)  {inti,t;  for(i=0;i<=n;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\n",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[])  {

52资料仅供参考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)函数rewind的作用是  A)使文件位置指针重新返回文件的开始位置  B)将文件位置指针指向文件中所要求的特定位置  C)使文件位置指针指向文件的末尾  D)使文件位置指针自动移至下一个字符位置(47)设有以下说明语句  struct

53资料仅供参考ex  {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”stdio.h”  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("cannotopen

54资料仅供参考infile\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);  }  A)程序完成将磁盘文件的信息在屏幕上显示的功能  B)程序完成将两个磁盘文件合二为一的功能  C)程序完成将一个磁盘文件复制到另一个磁盘文件中  D)程序完成将两个磁盘文件合并并在屏幕上输出(50)C语言中,能识别处理的文件为  A)文本文件和数据块文件  B)文本文件和二进制文件C)流文件和文本文件  D)数据文件和二进制文件二、填空题(1)数据的逻辑结构有线性结构和【1】两大类。(2)顺序存储方法是把逻辑上相邻的结点存储在物理位置【2】的存储单元中。(3)一个类能够从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的【3】。(4)软件工程研究的内容主要包括:【4】技术和软件工程管理。

55资料仅供参考(5)关系操作的特点是【5】操作。(6)下面程序是指从终端读入的20个字符放入字符数组中,然后利用指针变量输出上述字符串,请填空。#include”stdio.h”main(){inti;chars[21],*p;for(i=0;i<20;i++)s[i]=getchar();s[i]=【6】;p=【7】while(*p)putchar(【8】);}(7)以下程序将数组a的4个元素和数组b的6个元素写到名为lett.dat的二进制文件中,请填空。#include”stdio.h”main(){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);}(8)在C语言中(以16位PC机为例),一个float型数据在内存中所占的字节数为4;一个double型数据在内存中所占的字节数为【11】。

56资料仅供参考(9)以下程序输出的结果是【12】。main(){inta=5,b=4,c=3,d;d=(a>b>c);printf("%d\n",d);}(10)以下函数的功能是求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数经过形参n返回。例如,若x中的值为30,则有4个数符合要求,它们是1,3,5,15。请按题意,完成填空。试题程序:#include”string.h”#include“stdio.h”voidfun(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);for(i=0;i<1000;i++)printf("%d",aa

57资料仅供参考[i]);printf("\n");}(11)将以下程序填写完整#include”string.h”#include“stdio.h”intfun(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]);}(12)mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。intmystrlen(char*str){inti;for(i=0;【17】!=′\0′;i++);return(i);}

58资料仅供参考(13)以下程序的输出结果为【18】。#defineJFT(x)x*xmain(){inta,k=3;a=++JFT(k+1);printf("%d",a);}(14)以下定义的结构体类型拟包含两个成员,其中成员变量info用来存入整形数据;成员变量link是指向自身结构体的指针,请将定义补充完整。structnode{intinfo;【19】link;};(15)设有以下结构体类型:structst{charname[8];intnum;floats[4];}student[50];而且结构体数组student中的元素都已有值,若要将这些元素写到硬盘文件fp中,请将以下fwrite语句补充完整:fwrite(student,【20】,1,fp);

59资料仅供参考

60资料仅供参考全国计算机等级考试二级C语言程序设计考前测试题(4)一、选择题(1)在深度为5的满二叉树中,叶子结点的个数为   A)32    B)31    C)16    D)15(2)若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是

61资料仅供参考    A)bdgcefha    B)gdbecfha    C)bdgaechf    D)gdbehfca(3)一些重要的程序语言(如C语言和Pascal语言)允许过程的递归调用。而实现递归调用中的存储分配一般见    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)外模式    D)概念模式(9)下述关于数据库系统的叙述中正确的是    A)数据库系统减少了数据冗余    B)数据库系统避免了一切冗余    C)数据库系统中数据的一致性是指数据类型一致    

62资料仅供参考D)数据库系统比文件系统能管理更多的数据(10)数据库系统的核心是    A)数据库    B)数据库管理系统    C)模拟模型    D)软件工程(11)C语言规定,在一个源程序中,main函数的位置    A)必须在最开始    B)必须在系统调用的库函数的后面    C)能够任意    D)必须在最后(12)下列数据中,不合法的C语言实型数据的是    A)0.123    B)123e3    C)2.1e3.5    D)789.0(13)下面四个选项中,均是不合法的用户标识符的选项是    A)A P_0  do   B)float la0  _A    C)b-a  goto  int    D)_123 temp int(14)设变量a是int型,f是float型,i是double型,则表示式10+′a′+i*f值的数据类型为    A)int    B)float    C)double    D)不确定(15)能正确表示逻辑关系:“a≥10或a≤0”的C语言表示式是    A)a>=10ora<=0    B)a>=0|a<=10    C)a>=10&&a<=0    D)a>=10‖a<=0(16)设以下变量均为int类型,表示式的值不为7的是    A)(x=y=6,x+y,x+1)    B)(x=y=6,x+y,y+1)    C)(x=6,x+1,y=6,x+y)    D)(y=6,y+1,x=y,x+1)(17)若有说明:int*p,m=5,n;以下正确的程序段是    A)p=&n;scanf("%d",&p);    B)p=&n;scanf("%d",*p) C)scanf("%d",&n);*p=n;  D)p=&n;*p=m;(18)以下程序段的输出结果是

63资料仅供参考    inta=1234;    printf("-\n",a);    A)12    B)34    C)1234    D)提示出错、无结果(19)若变量a是int类型,并执行了语句:a=′A′+1.6;,则正确的叙述是    A)a的值是字符C    B)a的值是浮点型    C)不允许字符型和浮点型相加    D)a的值是字符′A′的ASCII值加上1(20)有如下程序    main()    {inta=2,b=-1,c=2;    if(a

64资料仅供参考D)陷入死循环(22)执行语句for(i=1;i++<4;);后变量i的值是    A)3    B)4    C)5   D)不定(23)有一堆零件(100到200之间),如果分成4个零件一组的若干组,则多2个零件;若分成7个零件一组,则多3个零件;若分成9个零件一组,则多5个零件。下面程序是求这堆零件总数,请选择填空。    #include”stdio.h”    main()    {inti;    for(i=100;i<200;i++)    if((i-2)%4==0)    if(!((i-3)%7))    if(_______)    printf("%d",i);    }    A)i%9=5    B)i%9!=5    C)(i-5)%9!=0    D)(i-5)%9==0(24)已有定义inta=-2;和输出语句printf("%8lx",a);以下正确的叙述是    A)整型变量的输出形式只有%d一种    B)%x是格式符的一种,它能够适用于任何一种类型的数据    C)%x是格式符的一种,其变量的值按十六进制输出,但%8lx是错的    

65资料仅供参考D)%8lx不是错误的格式符,其中数字8规定了输出字段的宽度(25)若变量c为char类型,能正确判断出c为小写字母的表示式是    A)′a′<=c<=′zB)(c>=′a′)||(c<=′z′) C)(′a′<=c)and(′z′>=c)D)(c>=′a′)&&(c<=′z′)(26)以下正确的说法是   A)用户若需调用标准库函数,调用前必须重新定义    B)用户能够重新定义标准库函数,若如此,该函数将失去原有含义    C)系统根本不允许用户重新定义标准库函数    D)用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动调用(27)以下正确的函数头定义形式是    A)doublefun(intx,inty)    B)doublefun(intx;inty) C)doublefun(intx,inty);    D)doublefun(intx,y);(28)下面程序段的运行结果是    chara[]="lanuage",*p;    p=a;    while(*p!=′u′){printf("%c",*p-32);p++;}    A)LANGUAGE    B)language    C)LAN   D)langUAGE(29)下面程序段的运行结果是    charstr[]="ABC",*p=str;    printf("%d\n",*(p+3));    A)67    B)0    C)字符′C′的地址    

66资料仅供参考D)字符′C′(30)若fp是指向某文件的指针,且已读到文件末尾,则库函数feof(fp)的返回值是    A)EOF    B)-1    C)1    D)NULL(31)在C语言中,char型数据在内存中的存储形式是    A)补码    B)反码    C)原码    D)ASCII码(32)若有说明:inta[][3]={1,2,3,4,5,6,7};则a数组第一维的大小是    A)2    B)3   C)4    D)无确定值(33)以下不正确的定义语句是    A)doublex[5]={2.0,4.0,6.0,8.0,10.0};    B)inty[5.3]={0,1,3,5,7,9};    C)charc1[]={′1′,′2′,′3′,′4′,′5′};    D)charc2[]={′\x10′,′\xa′,′\x8′};(34)有以下语句,则对a数组元素的引用不正确的是(0≤i≤9)    inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;    A)a[p-a]    B)*(&a[i])    C)p[i]    D)*(*(a+i))(35)当说明一个结构体变量时系统分配给它的内存是    A)各成员所需内存量的总和    B)结构中第一个成员所需内存量    C)成员中占内存量最大者所需的容量    D)结构中最后一个成员所需内存量(36)有以下程序     fun(intx,inty,intz)    {z=x*y;}    main()    {int

67资料仅供参考a=4,b=2,c=6;    fun(a,b,c);    printf("%d",c);    }    程序运行后的输出结果是    A)16    B)6    C)8    D)12(37)函数fun的返回值是    fun(char*a,char*b)    {intnum=0,n=0;    while(*(a+num)!=′\0′)num++;    while(b[n]){*(a+num)=b[n];num++;n++;}    returnnum;    }    A)字符串a的长度    B)字符串b的长度C)字符串a和b的长度之差    D)字符串a和b的长度之和(38)以下叙述中不正确的是    A)预处理命令行都必须以#号开始    B)在程序中凡是以#号开始的语句行都是预处理命令行    C)宏替换不占用运行时间,只占编译时间    D)在以下定义是正确的: #definePI 3.1415926;(39)调用gets和puts函数时,必须包含的头文件是    A)stdio.h    B)stdlib.h    C)define    D)以上都不对(40)利用fseek函数能够实现的操作是    A)改变文件的位置指针    B)文件的顺序读写 

68资料仅供参考C)文件的随机读写    D)以上答案均正确(41)下列程序的输出结果是    main()    {inta[5]={2,4,6,8,10},*p,**k;    p=a;    k=&p;    printf("%d",*(p++));    printf("%d\n",**k);    }    A)4    B)22    C)24    D)46(42)若有以下结构体,则正确的定义或引用的是    structTest    {intx;    inty;    }vl;    A)Test.x=10;    B)Testv2;v2.x=10;    C)structv2;v2.x=10;    D)structTestv2={10};(43)下面程序段的运行结果是    char*p="abcdefgh";    p+=3;    printf("%d\n",strlen(strcpy(p,"ABCD")));    A)8    B)12    C)4    D)7(44)下面判断正确的是    A)char*a="china";等价于char*a;*a="china";    B)charstr[5]={"china"};等价于charstr[]={"china"};    C)char*s="china";等价于char

69资料仅供参考*s;s="china";    D)charc[4]="abc",d[4]="abc";等价于charc[4]=d[4]="abc";    (45)下列函数的运行结果是    main()    {inti=2,p;    intj,k;    j=i;    k=++i;    p=f(j,k);    printf("%d",p);    }    intf(inta,intb)    {intc;    if(a>b)c=1;    elseif(a==b)c=0;    elsec=-1;    return(c);    }    A)-1    B)1    C)2    D)编译出错,无法运行(46)在位运算中,操作数左移一位,其结果相当于    A)操作数乘以  B)操作数除以2    C)操作数除以4   D)操作数乘以4(47)若调用fputc函数输出字符成功,则其返回值是    A)EOF    B)1    C)0    

70资料仅供参考D)输出的字符(48)已知函数的调用形式:fread(buf,size,count,fp),参数buf的含义是    A)一个整型变量,代表要读入的数据项总数    B)一个文件指针,指向要读的文件    C)一个指针,指向要读入数据的存放地址    D)一个存储区,存放要读的数据项(49)有如下程序:    #define  N    2    #define  M    N+1    #define  NUM 2*M+1    main()    {    inti;    for(i=1;i<=NUM;i++)printf("%d\n",i);    }    该程序中的for循环执行的次数是    A)5    B)6    C)7    D)8(50)以下定义中,标识符prtint(*prt)[3]    A)定义不合法    B)是一个指针数组名,每个元素都是一个指向整数变量的指针    C)是一个指针,它指向一个具有三个元素的一维数组    D)是一个指向整型变量的指针二、填空题(1)在树形结构中,树根结点没有【1】。(2)Jackson结构化程序设计方法是英国的M.Jackson提出的,它是一种面向【2】的设计方法。(3)面向对象的模型中,最基本的概念是对象和【3】。

71资料仅供参考(4)软件设计模块化的目的是【4】。(5)数据模型按不同应用层次分成3种类型,它们是概念数据模型、【5】和物理数据模型。(6)以下程序段的输出结果是【6】。main(){inta=2,b=3,c=4;a*=16+(b++)-(++c);printf("%d",a);}(7)若变量n中的值为24,则print()函数共输出【7】行,最后一行有【8】个数。voidprint(intn,intaa[]){inti;for(i=1;i<1;i++){printf("m",aa[i]);if(!(i%5))printf("\n");}printf("\n");}(8)调用C语标准库函数时要求用【9】命令。(9)stract函数的作用是【10】。(10)C语言程序的注释能够出现在程序中的任何地方,一个注释以【11】作为开始和结束。(11)设二进制数A是00101101,若想经过异或运算A^B使A的高4位取反,低4位不变,则二进制数B应是【12】。(12)若已知a=10,b=20,则表示式!a||!b=【13】

72资料仅供参考(13)设i,j,k均为int型变量,则执行完下面的for语句后,k的值为【14】。for(i=0,j=10;i<=j;i++,j--)k=i+j;(14)下面函数的功能是:找出一维数组元素中最大的值和它所在的下标,最大值的和它所在的下标经过形参传回。数组元素中的值已在主函数中赋予。主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。请填空。#include”stdio.h”#include”string.h”voidfun(inta[],intn,int*max,int*d){inti;*max=a[0];*d=0;for(i=0;【15】;i++)if(*max<【16】){*max=a[i];*d=i;}}main(){inti,x[20],max, index,n=10;randomize();for(i=0;i

73资料仅供参考printf("M",x[i]);}printf("\n");fun(x,n,&max,&index);printf("Max=],Index=M\n",max,index);}(15)以下程序的输出结果是【17】。voidfun(){staticinta=0;a+=2;printf("%d",a);}main(){intcc;for(cc=1;cc<4;cc++)fun();printf("\n");}(16)以下程序的输出结果是【18】。#defineMAX(x,y)(x)>(y)?(x):(y)main(){inta=5,b=2,c=3,d=3,t;t=MAX(a+b,c+d)*10;printf("%d\n",t);}(17)用以下语句调用库函数malloc,使字符指针st指向具有11个字节的动态存储空间,请填空。st=(char*)【19】; (18)以下程序段打开文件后,先利用fseek函数将文件位置指针定位在文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。FILE*myf;longf1;myf=【20】("test.t","rb");fseek(myf,0,SEEK_END);

74资料仅供参考f1=ftell(myf);fclose(myf);printf("%d\n",f1);

75资料仅供参考全国计算机等级考试二级C语言程序设计考前测试题(5)一、选择题(1)假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为  A)log2n  B)n2  C)O(n1.5)  D)n(n-1)/2(2)算法分析的目的是  A)找出数据结构的合理性  B)找出算法中输入和输出之间的关系  C)分析算法的易懂性和可靠性 D)分析算法的效率以求改进(3)线性表L=(a1,a2,a3,…ai,…an),下列说法正确的是  A)每个元素都有一个直接前件和直接后件  B)线性表中至少要有一个元素  C)表中诸元素的排列顺序必须是由小到大或由大到小  D)除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件(4)在单链表中,增加头结点的目的是  A)方便运算的实现  B)使单链表至少有一个结点  C)标识表结点中首结点的位置  D)说明单链表是线性表的链式存储实现(5)软件工程的出现是由于

76资料仅供参考  A)程序设计方法学的影响  B)软件产业化的需要  C)软件危机的出现  D)计算机的发展(6)软件开发离不开系统环境资源的支持,其中必要的测试数据属于  A)硬件资源  B)通信资源  C)支持软件  D)辅助资源(7)在数据流图(DFD)中,带有名字的箭头表示  A)模块之间的调用关系  B)程序的组成成分  C)控制程序的执行顺序  D)数据的流向(8)分布式数据库系统不具有的特点是  A)数据分布性和逻辑整体性  B)位置透明性和复制透明性  C)分布性  D)数据冗余(9)关系表中的每一横行称为一个  A)元组  B)字段  C)属性  D)码(10)下列数据模型中,具有坚实理论基础的是  A)层次模型  B)网状模型  C)关系模型  D)以上3个都是(11)以下叙述不正确的是  A)一个C源程序可由一个或多个函数组成  B)一个C源程序必须包含一个main函数  C)C程序的基本组成单位是函数  D)在C程序中,注释说明只能位于一条语句的后面(12)在C语言中,int,char和short三种类型数据在内存中所占用的字节数  A)由用户自己定义  B)均为2个字节  C)是任意的  D)由所用机器的机器字长决定(13)以下叙述正确的是

77资料仅供参考  A)在C程序中,每行中只能写一条语句  B)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数  C)在C程序中,无论是整数还是实数,都能被准确无误地表示  D)在C程序中,%是只能用于整数运算的运算符(14)C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符  A)必须为字母  B)必须为下划线  C)必须为字母或下划线  D)能够是字母,数字和下划线中任一字符(15)已知各变量的类型说明如下:intk,a,b;  unsignedlongw=5;  doublex=1.42;  则以下不符合C语言语法的表示式是  A)x%(-3) B)w+=-2  C)k=(a=2,b=3,a+b)  D)a+=a-=(b=4)*(a=3)(16)x,y,z被定义为int型变量,若从键盘给x,y,z输入数据,正确的输入语句是  A)INPUTx、y、z;  B)scanf("%d%d%d",&x,&y,&z);  C)scanf("%d%d%d",x,y,z);  D)read("%d%d%d",&x,&y,&z);(17)设x、y均为整型变量,且x=10y=3,则以下语句的输出结果是

78资料仅供参考  printf("%d,%d\n",x--,--y);  A)10,3  B)9,3  C)9,2  D)10,2(18)以下程序的输出结果是  main()  {inta=4,b=5,c=0,d;  d=!a&&!b||!c;  printf("%d\n",d);}  A)1  B)0  C)非0的数  D)-1(19)执行下列程序时输入:123<空格>456<空格>789<回车>输出结果是  main()  {chars[100];intc,i;  scanf("%c",&c);scanf("%d",&i);scanf("%s",s);  printf("%c,%d,%s\n",c,i,s);}  A)123,456,789  B)1,456,789  C)1,23,456,789  D)1,23,456(20)下面有关for循环的正确描述是  A)for循环只能用于循环次数已经确定的情况  B)for循环是先执行循环体语句,后判断表示式  C)在for循环中,不能用break语句跳出循环体  D)for循环的循环体语句中,能够包含多条语句,但必须用花括号括起来(21)以下程序的输出结果是  main()  {int

79资料仅供参考i,j,x=0;  for(i=0;i<2;i++)  {x++;  for(j=0;j<3;j++)  {if(j%2)continue;  x++;  }  x++;  }  printf("x=%d\n",x);  }  A)x=4  B)x=8  C)x=6  D)x=12(22)设有以下程序段  intx=0,s=0;  while(!x!=0)s+=++x;  printf("%d",s);  则  A)运行程序段后输出0  B)运行程序段后输出1  C)程序段中的控制表示式是非法的  D)程序段执行无限次(23)对下Ⅰ,Ⅱ两个语句描述正确的是  Ⅰ.while(1)Ⅱ.for(;;)  A)都是无限循环  B)Ⅰ是无限循环,Ⅱ错误  C)Ⅰ循环一次,Ⅱ错误  D)以上答案都错(24)若有以下定义,则能使值为3的表示式是  intk=7,x=12; 

80资料仅供参考A)x%=(k%=5)B)x%=(k-k%5) C)x%=k-k%5D)(x%=k)-(k%=5)(25)设有:  inta=1,b=2,c=3,d=4,m=2,n=2;  执行(m=a>b)&&(n=c>d)后n的值是  A)1  B)2  C)3  D)4(26)以下描述中正确的是  A)由于do-while循环中循环体语句只能是一条可执行语句,因此循环体内不能使用复合语句  B)do-while循环由do开始,用while结束,在while(表示式)后面不能写分号  C)在do-while循环体中,是先执行一次循环,再进行判断  D)do-while循环中,根据情况能够省略while(27)以下函数返回a所指数组中最小的值所在的下标值  fun(int*a,intn)  {inti,j=0,p;  p=j;  for(i=j;i

81资料仅供参考  A)函数能够嵌套定义但不能嵌套调用  B)函数既能够嵌套调用也能够嵌套定义  C)函数既不能够嵌套定义也不能够嵌套调用  D)函数能够嵌套调用但不能够嵌套定义(29)若有说明语句  chara[]="Itismine";  char*p="Itismine";  则以下不正确的叙述是  A)a+1表示的是字符t的地址  B)p指向另外的字符串时,字符串的长度不受限制  C)p变量中存放的地址值能够改变  D)a中只能存放10个字符(30)以下程序的运行结果是  sub(intx,inty,int*z)  {*z=y-x;}  main()  {inta,b,c;  sub(10,5,&a);  sub(7,a,&b);  sub(a,b,&c);  printf("M,M,M\n",a,b,c);}  A)5,2,3  B)-5,-12,-7  C)-5,-12,-17  D)5,-2,-7(31)若二维数组a有m列,则计算任一元素a[i][j]在数组中相对位置的公式为(假设a[0][0]位于数组的第一个位置上)  A)i*m+j  B)j*m+i  C)i*m+j-1  D)i*m+j+1(32)下列说法正确的是  inti,x;  for(i=0,x=0;i<=9

82资料仅供参考&&x!=876;i++)scanf("%d",x);  A)最多的执行10次  B)最多执行9次  C)是无限循环  D)循环体一次也不执行(33)若有下面的程序片段:  int[12]={0},*p[3],**pp,i;  for(i=0;i<3;i)  p[i]=&a[i*4];  pp=p;  则对数组元素的错误引用是  A)pp[0][1] B)a[10]  C)p[3][1]  D)*(*(p+2)+2)(34)若有说明:inta[3][4]={0};则下面正确的叙述是  A)只有元素a[0][0]可得到初值0  B)此说明语句不正确  C)数组a中各元素都可得到初值,但其值不一定为0  D)数组a中每个元素均可得到初值0(35)对下面程序描述正确的一项是(每行程序前面的数字表示行号)  1 main()  2  {  3  floata[3]={0.0};  4  inti;  5  for(i=0;i<3;i++)scanf("%d",&a[i]);  6  for(i=1;i<3;i++)a[0]=a[0]+a[i];  7  printf("%f\n",a[0]);  8  }  A)没有错误  B)第3行有错误  C)第5行有错误  D)第7行有错误(36)以下不正确的说法是

83资料仅供参考  C语言规定:  A)实参能够是常量,变量或表示式  B)形参能够是常量,变量或表示式  C)实参能够为任何类型  D)形参应与其对应的实参类型一致(37)已有如下数组定义和f函数调用语句,则在f函数的说明中,对形参数组array的正确定义方式为  inta[3][4];  f(a);  A)f(array[3][4])  B)f(intarray[3][])  C)f(intarray[][4])  D)f(intarray[][])(38)下面程序的输出结果为  main()  {inta,b;b=(a=3*5,a*4,a*5);  printf("%d",b);}  A)60  B)75  C)65  D)无确定值(39)在位运算中,操作数右移一位,其结果相当于  A)操作数乘以2 B)操作数除以2  C)操作数乘以4  D)操作数除以4(40)有以下结构体说明和变量的定义,且指针p指向变量a,指针q指向变量b。则不能把结点b连接到结点a之后的语句是  structnode  {chardata;  structnode*next;  }a,b,*p=&a,*q=&b;  A)a.next=q;  B)p.next=&b;

84资料仅供参考C)p->next=&b;  D)(*p).next=q;(41)下面程序的输出结果是  structst  {intx;  int*y;  }*p;  intdt[4]={10,20,30,40};  structstaa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,&dt[3]};  main()  {p=aa;  printf("%d\n",++p->x);  printf("%d\n",(++p)->x);  printf("%d\n",++(*p->y));}  A)10 B)50C)51D)60   20606070   20  212131(42)下面程序的输出结果是  #include”string.h”  #include”stdio.h”  main()  {char*p1="abc",*p2="ABC",str[50]=

85资料仅供参考"xyz";  strcpy(str+2,strcat(p1,p2));  printf("%s\n",str);}  A)xyzabcABC B)zabcABC C)xyabcABC D)yzabcABC(43)以下程序的输出结果是  longfun(intn)  {longs;  if(n==1||n==2)s=2;  elses=n-fun(n-1);  returns;}  main()  {printf("%ld\n",fun(3));}  A)1  B)2  C)3  D)4(44)以下所列的各函数首部中,正确的是  A)voidplay(var:Integer,varb:Integer)  B)voidplay(inta,b)  C)voidplay(inta,intb)  D)Subplay(aasinteger,basinteger)(45)不合法的main函数命令行参数表示形式是   A)main(inta,char*c[])  B)main(intarc,char**arv)  C)main(intargc,char*argv)  D)main(intargv,char*argc[])(46)有如下程序  main()  {charch[2][5]={"6937","8254"},*p[2];  int

86资料仅供参考i,j,s=0;  for(i=0;i<2;i++)p[i]=ch[i];  for(i=0;i<2;i++)  for(j=0;p[i][j]>′\0′;j+=2)  s=10*s+p[i][j]-′0′;  printf("%d\n",s);}  该程序的输出结果是  A)69825  B)63825  C)6385  D)693825(47)以下程序的输出结果是  unionmyun  {struct  {intx,y,z;}u;  intk;}a;  main()  {a.u.x=4;a.u.y=5;a.u.z=6;  a.k=0;  printf("%d\n",a.u.x);}  A)4  B)5  C)6  D)0(48)以下程序的输出结果是  main()  {charx=040;  printf("%o\n",x<<1);}  A)100  B)80  C)64  D)32(49)C语言中,系统的标准输入文件是指  A)键盘  B)显示器  C)软盘  D)硬盘(50)下面的程序执行后,文件test中的内容是  #include”stdio.h”  voidfun(char*fname,char*st)  {FILE*myf;inti;  myf=fopen(fname,"w"

87资料仅供参考);  for(i=0;i  fclose(myf);}  main()  {fun("test","newworld");fun("test","hello,");}  A)hello, B)newworldhello, C)newworld D)hello,rld二、填空题(1)在算法正确的前提下,评价一个算法的两个标准是【1】。(2)将代数式Z=x2+y2a+b转换成程序设计中的表示式为【2】。(3)软件危机出现于60年代末,为了解决软件危机,人们提出了【3】的原理来设计软件,这就是软件工程诞生的基础。(4)【4】是数据库设计的核心。(5)在关系模型中,把数据看成一个二维表,每一个二维表称为一个【5】。(6)以下程序段的输出结果是【6】。intx=17,y=26;printf("%d",y/=(x%=6));(7)设inta=5,b=6,表示式(++a==b--)?++a:--b的值是【7】。(8)若有如下定义,doublea[100];则a数组元素的下标上限是【8】。(9)下面程序的输出结果【9】。main(){enumteam{y1=4,y2,y3};printf("%d",y3);}(11)若有以下程序段:int

88资料仅供参考c1=1,c2=2,c3;c3=1.0/c2*c1;则执行后,c3中的值是【11】。(12)若有以下定义:chara;intb;floatc;doubled;则表示式a*b+d-c值的类型为【12】。(13)设有代码“staticinta[3][4]={{1},{2},{3}};”,则a[1][1]和a[2][1]的值为【13】。(14)以下函数用来在w数组中插入x。n所指向的存储单元中存放w数组中字符个数。数组w中的字符已按从小到大的顺序排列,插入后数组w中的字符仍有序。请填空。voidfun(char*w,charx,int*n){ inti,p;p=0;w[*n]=x;while(x>w[p])p++;for(i=*n;i>p;i--)w[i]=【14】;w[p]=x;++*n;}(15)设inta,b=10;执行a=b<<2+1;后a的值是【15】。(16)以下程序的输出结果是【16】。main(){intx=100,a=10,b=20,ok1=5,ok2=0;if(a);else

89资料仅供参考if(ok2)x=10;elsex=-1;printf("%d\n",x);}(17)以下程序的输出结果是【17】。main(){inty=9;for(;y>0;y--)if(y%3==0){printf("%d",--y);continue;}}(18)以下函数的功能是【18】。floatav(a,n)floata[];intn;{inti;floats;for(i=0,s=0;ireturns/n;}(19)以下程序的输出结果是【19】。#define PR(ar)printf("%d,",ar)main(){intj,a[]={1,3,5,7,9,11,15},*p=a+5;for(j=3;j;j--)switch(j){case1:case2:PR(*p++);break;case3:PR(*(--p));}printf("\n");}

90资料仅供参考(20)以下程序的功能是:处理由学号和成绩组成的学生记录,N名学生的数据已在主函数中放入结构体数组s中,它的功能是:把分数最高的学生数据放在h所指的数组中注意:分数高的学生可能不只一个,函数返回分数最高学生的人数。请填空。#include“string.h”#define N 16typedef struct{charnum[10];ints;}STREC;int fun(STREC*a,STREC*b){inti,j=0,max=a[0].s;for(i=0;i

91资料仅供参考"GA005",85},{"GA003",76},{"GA002",69},{"GA004",85},{"GA001",91},{"GA007",72},{"GA008",64},{"GA006",87}, {"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},{"GA011",66},{"GA017",64},{"GA018",64},{"GA016",72}};STRECh[N];inti,n;FILE*out;n=fun(s,h);printf("The%dhighestscore:\n",n);for(i=0;iprintf("%sM\n",h[i].num,h[i].s);printf("\n");out=fopen("out15.dat","w");fprintf(out,"%d\n",n);for(i=0;ifprintf(out,"M\n",h[i].s);fclose(out);}

92资料仅供参考全国计算机等级考试二级C语言程序设计考前测试题(6)一、选择题(1)循环链表的主要优点是

93资料仅供参考  A)不再需要头指针了  B)从表中任一结点出发都能访问到整个链表  C)在进行插入、删除运算时,能更好的保证链表不断开  D)已知某个结点的位置后,能够容易的找到它的直接前件(2)栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素能够出栈,则出栈序列可能是  A)ABCED   B)DCBEA  C)DBCEA    D)CDABE(3)n个顶点的强连通图的边数至少有  A)n-1    B)n(n-1)C)n    D)n+1(4)在结构化程序设计思想提出之前,在程序设计中曾强调程序的效率,现在,与程序的效率相比,人们更重视程序的  A)安全性    B)一致性  C)可理解性    D)合理性(5)模块独立性是软件模块化所提出的要求,衡量模块独立性的度量标准则是模块的  A)抽象和信息隐蔽   B)局部化和封装化  C)内聚性和耦合性   D)激活机制和控制方法(6)软件开发的结构化生命周期方法将软件生命周期划分成  A)定义、开发、运行维护  B)设计阶段、编程阶段、测试阶段  C)总体设计、详细设计、编程调试  D)需求分析、功能定义、系统设计(7)在软件工程中,白箱测试法可用于测试程序的内部结构。此方法将程序看做是  A)路径的集合   B)循环的集合  C)目标的集合   D)地址的集合(8)在数据管理技术发展过程中,文件系统与数据库系统的主要区别是数据库系统具有

94资料仅供参考  A)特定的数据模型   B)数据无冗余  C)数据可共享  D)专门的数据管理软件(9)数据库设计包括两个方面的设计内容,它们是  A)概念设计和逻辑设计  B)模式设计和内模式设计  C)内模式设计和物理设计  D)结构特性设计和行为特性设计(10)实体是信息世界中广泛使用的一个术语,它用于表示  A)有生命的事物   B)无生命的事物  C)实际存在的事物   D)一切事物(11)以下说法错误的是  A)一个算法应包含有限个步骤  B)在计算机上实现的算法是用来处理数据对象的  C)算法中指定的操作,不能经过已经实现的基本运算执行有限次后实现  D)算法的目的是为了求解(12)下列选项中不是结构化程序基本结构的是  A)顺序结构  B)跳转分支结构 C)选择结构 D)循环结构(13)已知intk,m=1;执行语句k=-m++;后,k的值是  A)-1  B)0  C)1  D)2(14)已知intm;floatk;正确的语句是  A)(intk)%m B)int(k)%m C)int(k%m) D)(int)k%m(15)下面各选项中,均是C语言标识符的选项组是  A)33  we  auto B)_23 me  

95资料仅供参考_3ew C)_43 3e_  else D)ER  -DF 32(16)已知intk;floatm=-3;执行语句k=m%2;后,变量k的值是  A)-1  B)0  C)1  D)语句有错误(17)不能进行++和--运算的数据类型为  A)指针  B)整型  C)长整型  D)常量(18)已知intk=10,m=3,n;则下列语句输出结果是  printf("%d\n",n=(k%m,k/m));  A)2  B)3  C)4  D)5(19)已知inta;floatb;所用的scanf调用语句格式为:  scanf("a//%d,b=%f",&a,&b);  为了将数据3和25.08分别赋给x和y,正确的输入应当是  A)3,25.08 B)a=3,b=25.08 C)a//3,b=25.08 D)a//3b=25.08(20)当k的值不为0时,在下列选项中能够将k的值赋给变量m,n的是  A)m=k=n  B)(m=k)&&(n=k) C)(m=k)||(n=k) D)(k=m)&&(n=k)(21)下列程序的运行结果是  #include"stdio.h"  main()  {int

96资料仅供参考x=-9,y=5,z=8;  if(x2;m--)  {k=0;  for(n=m;n>1;n--)  k=k+m*n;  

97资料仅供参考}  printf("%f\n",k);  }  A)5.000000  B)15.000000  C)25.000000  D)35.000000(25)下列程序的输出结果是  #include"stdio.h"  main()  {inti,a=0,b=0;  for(i=1;i<10;i++)  {if(i%2==0)  {a++;  continue;}  b++;}  printf("a=%d,b=%d",a,b);}  A)a=4,b=4  B)a=4,b=5  C)a=5,b=4  D)a=5,b=5(26)下列选项能够正确表示字符型常量的是  A)′\r′  B)"a"  C)"\897"  D)296(27)下面对C语言的描述中,正确的是  A)函数一定有返回值,否则无法使用函数  B)C语言函数既能够嵌套定义又能够递归调用  C)在C语言中,调用函数时,只能将实参的值传递给形参  D)C语言程序中有调用关系的所有函数都必须放在同一源程序文件中(28)阅读下面程序段,则执行后的结果为  #include

98资料仅供参考"stdio.h"  main()  {intm=4,n=2,k;  k=fun(m,n);  printf("%d\n",k);}  fun(intm,intn)  {return(m*m*m-n*n*n);}  A)64  B)8  C)56  D)0(29)阅读下面程序段,则执行后输出的结果是  #include"stdio.h"  main()  {charfun(char,int);  chara=′A′;  intb=13;  a=fun(a,b);  putchar(a);}  charfun(chara,intb)  {chark;  k=a+b;  returnk;}  A)A  B)M  C)N  D)L(30)编写求两个双精度数之和的函数,选项中正确的是  A)doubleadd(doublea,doubleb)  {doubles;  s=a+b;  returns;}  B)doubleadd(double

99资料仅供参考a,b)  {doubles;  s=a+b;  return(s);}  C)doubleadd(doubleadoubleb)  {doubles;  s=a+b;  returns;}  D)doubleadd(a,b)   {doublea,b,s;  s=a+b;  return(s);}(31)已知inta;则下面的说明指针变量p的语句正确的是  A)intp=&a  B)int*p=a  C)int*p=&a  D)int*p=*a(32)已知char**t;则变量t是  A)指向char变量的指针 B)指向指针的char变量  C)指向指针的指针  D)以上说法都不对(33)阅读下面程序,执行后的结果为  #include"stdio.h"  voidfun(int*a,int*b)  {intk;  k=5;  *a=k;  *b=*a+k;}  main()  {int

100资料仅供参考*a,*b,x=10,y=15;  a=&x;  b=&y;  fun(a,b);  printf("%d,%d\n",*a,*b);}  A)10,15  B)5,15  C)5,10  D)15,10(34)阅读下面程序,在程序执行后的结果为  #include"stdio.h"  int*fun(int*a,int*b)  {intm;  m=*a;  m+=*b-3;  return(&m);}  main()  {intx=21,y=35,*a=&x,*b=&y;  int*k;  k=fun(a,b);  printf("%d\n",*k);}  A)53  B)21  C)35  D)14(35)已知inta[10];则对a数组元素的正确引用是  A)a[10] B)a  C)a+5  D)a[10-10](36)在C语言中,一维数组的定义方法为  类型说明符数组名  A)[常量表示式] B)[整型常量] C)[整型变量] D)[整型常量]或[整型表示式](37)阅读下列程序,则运行结果为

101资料仅供参考  #include"stdio.h"  fun()  {static intx=5;  x++;  returnx;}  main()  { inti,x;  for(i=0;i<3;i++)  x=fun();  printf("%d\n",x);}  A)5  B)6  C)7  D)8(38)下列程序的输出结果是  #include"stdio.h"  #defineM(x,y)x%y  main()  { inta,m=12,n=100;  a=M(n,m);  printf("%d\n",a--);}  A)2  B)3  C)4  D)5(39)阅读下面程序,则程序段的功能是  #include"stdio.h"  main()  { intc[]={23,1,56,234,7,0,34},i,j,t;  for(i=1;i<7;i++)  { 

102资料仅供参考t=c[i];j=i-1;  while(j>=0&&t>c[j])  {c[j+1]=c[j];j--;}  c[j+1]=t;}  for(i=0;i<7;i++)  printf("%d",c[i]);  putchar(′\n′);}  A)对数组元素的升序排列  B)对数组元素的降序排列  C)对数组元素的倒序排列  D)对数组元素的随机排列(40)阅读下列程序,则执行后的结果为  #include"stdio.h"  main()  {intc[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56};  printf("%x,%x\n",c[2][2],*(*(c+1)+1));}  A)3e,6  B)62,5  C)56,5  D)3E,6(41)下列选项中错误的说明语句是  A)chara[]={′t′,′o′,′y′,′o′,′u′,′\0′};  B)chara[]={"toyou\0"};  C)chara[]="toyou\0";  D)chara[]=′toyou\0′;(42)下述对C语言字符数组的描述中错误的是

103资料仅供参考  A)字符数组的下标从0开始  B)字符数组中的字符串能够进行整体输入/输出  C)能够在赋值语句中经过赋值运算符“=”对字符数组整体赋值  D)字符数组能够存放字符串(43)阅读下列程序,则在执行后,程序的运行结果为  #include"stdio.h"  #include"string.h"  main()  {chara[30]="nicetomeetyou!";  strcpy(a+strlen(a)/2,"you");  printf("%s\n",a);}  A)nicetomeetyouyou B)niceto  C)meetyouyou D)nicetoyou(44)阅读下面程序,则执行后的结果是  #include"stdio.h"  main()  {charstr[]="tomeetme",*p;  for(p=str;*p!=e;p++)printf(“%f”,*p);  printf("\n");}  A)tomeetme  B)tmem  C)oete  D)tome(45)下面程序的文件名为t.exe,在DOS下输入的命令行参数如下:ttomeetme<回车>则程序输出的结果是  #include"stdio.h"  main(argc,argv)  intargc;char*argv[];  {inti;  printf("%d\n",argc);}  A)3  B)4  C)2 

104资料仅供参考 D)以上答案都不正确(46)阅读下面程序,则执行后的结果为  #include"stdio.h"  longfun(intn)  {if(n>2)  return(fun(n-1)+fun(n-2));  elsereturn(2);}  main()  {printf("%ld\n",fun(5));}  A)10  B)15  C)20  D)以上3个答案都不正确(47)已知如下定义,则sizeof(a)的值是  struct{inti;  charc;  doublea;}a;  A)8  B)9  C)10 D)11(48)已知函数的原形如下,其中结构体a为已经定义过的结构,且有下列变量定义:  structa*f(intt1,int*t2,strcutat3,structa*t4)  structap,*p1;inti;  则正确的函数调用语句为  A)&p=f(10,&i,p,p1);  B)p1=f(i++,(int*)p1,p,&p);  C)p=f(i+1,&(i+2),*p,p);  D)f(i+1,&i,p,p);(49)下面程序段的输出为  #include

105资料仅供参考"stdio.h"  main()  {printf("%d\n",12<<2);}  A)0  B)47  C)48  D)24(50)假定当前盘符下有两个文本文件,如下:  文件名 a1.txt  a2.txt  内容   123#   321#  则下面程序段执行后的结果为  #include"stdio.h"  voidfc(FILE*p)  { charc;  while((c=fgetc(p))!=′#′)putchar(c);}  main()  { FILE*fp;  fp=fopen("a1.txt","r");  fc(fp);  fclose(fp);  fp=fopen("a2.txt","r");  fc(fp);  fclose(fp);  putchar(′\n′);}  A)123321  B)123  C)321  D)以上答案都不正确二、填空题(1)常见的黑箱测试有等价分类法、【1】、因果图法和错误推测法4种。

106资料仅供参考(2)测试的目的是暴露错误,评价程序的可靠性;而【2】的目的是发现错误的位置并改正错误。(3)软件维护活动包括以下几类:改正性维护、适应性维护、【3】维护和预防性维护。(4)在面向对象的设计中,用来请求对象执行某一处理或回答某些信息的要求称为【4】。(5)关键字ASC和DESC分别表示【5】的含义。(6)定义inta=5,b;,则执行表示式b=++a*--a之后,变量b的值为【6】。(7)以下程序的输出结果是【7】。#include"stdio.h"main(){inta=065;printf("%d\n",--a);}(8)阅读下面程序,则执行后的输出结果是【8】。#include"stdio.h"main(){intx,y,z;x=1;y=2;z=3;if(x>y)if(x>z)printf("%d",x);elseprintf("%d",y);printf("%d\n",z);}(9)如下语句printf("%c\n",′B′+40);在执行后的输出结果是【9】。(10)阅读下面程序,则程序的执行结果为【10】。#include"stdio.h"main(){int

107资料仅供参考a=30,b=20,z;z=fun(a+b,a-b);printf("%d\n",z);}fun(inta,intb){intz;z=a/b;returnz;}(11)下面的程序实现的是指针p所指向的地址的n个数中,求出最大的和最小的数据,请填空。fun(int*p,intn){int*q; intmax,min; max=min=*p; for(q=p;【11】;q++) if(【12】)max=*q; elseif(【13】)min=*q;}(12)下面的函数fun的功能是将形参x的值转换成二进制数,所得二进制数的每一位放在一维数组中返回,二进制的最低位放在下标为0的元素中,其它依次类推,请填空。 fun(intx,intb[]){int

108资料仅供参考k=0,r;do{ r=x%【14】; b[【15】]=r; x/=【16】;}while(x);}(13)下面函数的功能是将一个字符串的内容颠倒过来,请填空。voidfun(charstr[]){inti,j,【17】; for(i=0,j=【18】;i

109资料仅供参考fun(6,&x);  printf("%d\n",x);}(15)阅读下列程序,则程序的输出结果为【20】。#include"stdio.h"structty{intdata; charc;};main(){ structtya={30,′x′}; fun(a); printf("%d%c",a.data,a.c);}fun(structtyb){b.data=20;b.c=′y′;}

110资料仅供参考全国计算机等级考试二级C语言程序设计考前测试题(7)(1)最简单的交换排序方法是  A)快速排序          B)选择排序  C)堆排序           D)冒泡排序(2)栈一般采用的两种存储结构是  A)线性存储结构和链表存储结构 B)散列方式和索引方式  C)链表存储结构和数组  D)线性存储结构和非线性存储结构 (3)线性表的顺序存储结构和线性表的链式存储结构分别是  A)顺序存取的存储结构、顺序存取的存储结构  B)随机存取的存储结构、顺序存取的存储结构  C)随机存取的存储结构、随机存取的存储结构  D)任意存取的存储结构、任意存取的存储结构(4)完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例的测试方法是  A)黑箱测试法    B)白箱测试法 C)错误推测法    D)安装测试法(5)在结构化设计方法中,生成的结构图(SC)中,带有箭头的连线表示  A)模块之间的调用关系   B)程序的组成成分  C)控制程序的执行顺序D)数据的流向

111资料仅供参考(6)下列选项中,不属于模块间耦合的是  A)数据耦合    B)同构耦合  C)异构耦合   D)公用耦合(7)一个关系中属性个数为1时,称此关系为  A)对应关系    B)单一关系  C)一元关系    D)二元关系(8)为用户与数据库系统提供接口的语言是  A)高级语言 B)数据描述语言(DDL) C)数据操纵语言(DML)    D)汇编语言(9)相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和  A)可重用性差    B)安全性差  C)非持久性       D)冗余性 (10)需求分析阶段的任务是确定  A)软件开发方法    B)软件开发工具 C)软件开发费用    D)软件系统功能(11)下列关于C语言的说法不正确的是  A)C语言既具有高级语言的一切功能,也具有低级语言的一些功能  B)C语言中的每一条执行语句都必须用分号结束,分号不是C语言的一部分,是语句之间的分隔符号  C)注释能够出现在程序中任意合适的地方  D)命令行后面不能加分号,命令行不是C语言的语句(12)下列关于标识符的说法中错误的是  A)合法的标识符是由字母、数字和下划线组成  B)C语言的标识符中,大写字母和小写字母被认为是两个不同的字符

112资料仅供参考  C)C语言的标识符能够分为三类,即关键字、预定义标识符和用户标识符  D)用户标识符与关键字不同时,程序在执行时将给出出错信息(13)下列合法的整型常量的表示是  A)098  B)oXde  C)32767  D)0xDG(14)现在有以下定义,int a;double b;float c;char k;则下面的表示式a/b+c-k值的类型为:  A)int  B)double  C)float  D)char(15)假设整型变量a,b,c的值均为5,则表示式a+++b+++c++的值为  A)17  B)16  C)15  D)14(16)下列关于复合语句和空语句的说法错误的是  A)复合语句是由“{”开头,由“}”结尾的  B)复合语句在语法上视为一条语句  C)复合语句内,能够有执行语句,不能够有定义语句部分  D)C程序中的所有语句都必须由一个分号作为结束(17)关于printf()函数的返回值叙述正确的是  A)一般是本次调用中输出字符的个数 B)一般是输出的第一个数值  C)一般返回布尔值真D)一般返回非零值(18)现有格式化输入语句,scanf("x=%dц,sumцy=%d,

113资料仅供参考lineцz=%dL",&x,&y,&z);,现在已知在输入数据后,x,y,z的值分别是12,34,45,则下列数据是正确的输入格式的是  A)12,34,45  B)x=12,y=34,z=45  C)x=12C,sumy=34,z=45 D)x=12],sum]y=34,line]z=45    [注]:“ц”表示空格, 表示回车(19)设x,y,z,t均为整型变量,现有如下语句x=y=z=1;t=++x||++y&&++z;则执行这个语句后t的值为  A)2  B)1  C)0  D)不定值(20)现有如下程序段,此程序段编译有错误,则程序段的错误出在  #include”stdio.h”  main()  {  int a=30,b=40,c=50,d;   d=a>30?b:c;  switch(d){case a:printf("%d,",a);  case b:printf("%d,",b);  case c:printf("%d,",c);  default:printf("#");}}  A)default:printf("#");这个语句   B)d=a>30?b:c;这个语句  C)case a:printf("%d,",a); case b:printf("%d,",b); case c:printf("%d,",c);这三个语句  D)switch(d)这个语句(21)下列语句中,错误的是(x,y,a,b假设已经定义好)

114资料仅供参考  A)while(x=y)5; B)do x++ while(x==10); C)while(0); D)do 2;while(a==b);(22)若i,j已经定义为整型,则以下程序段中,内循环体的执行次数是  for(i=6;i;i--)   for(j=0;j<5;j++){……}  A)40  B)35  C)30  D)25(23)下列说法中错误的是  A)只能在循环体内使用break语句  B)在循环体内使用break语句能够使流程跳出本层循环体,从而提前结束本层循环  C)在while和do…while循环中,continue语句并没有使整个循环终止  D)continue的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环判断(24)阅读如下程序段  #include "stdio.h"  main()  { int x,a,b;  scanf("%d",&x);  a=b=x;  for(;x!=0;)  { if(x)if(x>a)a=x;  scanf("%d",&x);}  printf("a=%d,b=%d\n",a,b);}  现输入如下。[注] :′ц′表示空格

115资料仅供参考  34ц56ц23ц45ц5ц56ц7ц12ц365ц49ц48ц57ц87ц7ц6ц7569ц789ц0  输入后输出结果是  A)a=7569,b=789  B)a=5,b=365 C)a=7,b=789  D)a=7569,b=5(25)下面关于字符常量的说法错误的是  A)一个字符常量代表ASCII字符集中的一个字符  B)单引号中的大写字母和小写字母代表不同的字符常量  C)字符常量只能包含一个字符  D)字符常量能够用单引号或双引号括起来(26)现有如下程序  #include"stdio.h"  intfun(intx)  {printf("x=%d\n",++x);}  main()  {fun(12+5);}  则程序的输出结果是  A)12  B)13  C)17  D)18(27)现有如下程序段  #include"stdio.h"  intaa(intx,inty);  main()  {inta=24,b=16,c;  c=aa(a,b);  printf("%d\n",c);}

116资料仅供参考  intaa(intx,inty)  {intw;  while(y)  {w=x%y;  x=y;  y=w;}  returnx;}  则程序段的输出结果是  A)8  B)7  C)6  D)5(28)下列说法错误的是  A)函数调用时,函数名必须与所调用的函数名字完全相同  B)实参的个数必须与形式参数的个数一致  C)实参能够是表示式,在类型上必须与形参一一对应匹配  D)C语言规定,函数必须先定义,后调用(函数的返回值类型为int或char时除外)(29)函数的值经过return语句返回,下面关于return语句的形式描述错误的是  A)return表示式;B)return(表示式);  C)一个return语句能够返回多个函数值D)一个return语句只能返回一个函数值(30)现有如下定义:inta,b,*p,*q;,则下列赋值语句错误的是  A)p=&a;  B)q=&b;  C)p=q; 

117资料仅供参考D)p=a;(31)现有如下程序段  #include"stdio.h"  int*fun(int*a,int*b)  {intc;  c=*a%*b;  return&c;}  main()  {inta=5,b=19,*c;  c=fun(&a,&b);  printf("%d\n",++*c);}  则程序段执行后的结果为  A)8  B)7  C)6  D)5(32)现有inta,*b;,b=&a;,则下列运算错误的是  A)*&a  B)&*a  C)*&b D)&*b(33)现有如下程序段  #include"stdio.h"  main()  {intk[30]={12,324,45,6,768,98,21,34,453,456};  intcount=0,i=0;  while(k[i])  {if(k[i]%2==0‖k[i]%5==0)count++;  i++;}  printf("%d,%d\n",count,i);}  则程序段的输出结果为  A)7,8  B)8,8  C)7,10 

118资料仅供参考 D)8,10(34)现有如下定义语句  int*p,s[20],i;  p=s;  表示数组元素s[i]的表示式不正确的是  A)*(s+i)  B)*(p+i)  C)*(s=s+i)  D)*(p=p+i)(35)阅读如下程序段,这个程序在编译的时候会有一个警告,下列关于这个警告叙述正确的是 #include"stdio.h"  #defineN10  int*fun(inta[N],intn)  {inti,b[N];  for(i=0;i

119资料仅供参考D)数组赋值的时候没有把数组全部都赋初值,因此在这里会有警告(36)有如下定义语句:intaa[][3]={12,23,34,4,5,6,78,89,45};,则45在数组aa中的行列坐标各为  A)3,2  B)3,1 C)2,2 D)2,1  (37)现有如下程序段  #include"stdio.h"  main()  {inta[5][6]={23,3,65,21,6,78,28,5,67,25,435,76,8,22,45,7,8,34,6,78,32,4,5,67,4,21,1};  inti=0,j=5;  printf("%d\n",*(&a[0][0]+2*i+j-2));}  则程序的输出结果为  A)21  B)78  C)23  D)28(38)下列程序的输出结果是  #include"stdio.h"  #defineN3  #defineM3  voidfun(inta[M][N])  {printf("%d\n",*(a[1]+2));}  main()  {inta[M][N];  inti,j;  for(i=0;i

120资料仅供参考  A)3  B)4  C)5  D)6(39)下列关于字符串的说法中错误的是  A)在C语言中,字符串是借助于字符型一维数组来存放的,并规定以字符′\0′作为字符串结束标志  B)′\0′作为标志占用存储空间,计入串的实际长度  C)在表示字符串常量的时候不需要人为在其末尾加入′\0′  D)在C语言中,字符串常量隐含处理成以′\0′结尾(40)有下面程序段  #include"stdio.h"  #include"string.h"  main()  {chara[3][20]={{"china"},{"isa"},{"bigcountry!"}};  chark[100]={0},*p=k;  inti;  for(i=0;i<3;i++)  {p=strcat(p,a[i]);}  i=strlen(p);  printf("%d\n",i);}  则程序段的输出结果是  A)18  B)19  C)20  D)21(41)现有如下程序段  #include"stdio.h"  #include

121资料仅供参考"string.h"  main()  {chara[]="acfijk";/*这里是有序的字符序列*/  charb[]="befijklqswz";/*这里是有序的字符序列*/  charc[80],*p;  inti=0,j=0,k=0;  while(a[i]!=′\0′&&b[j]!=′\0′)  {if(a[i]b[j])c[k++]=b[j++];  else{c[k++]=b[j++];  i++;}}  while(a[i]==′\0′&&b[j]!=′\0′)  c[k++]=b[j++];  while(a[i]!=′\0′&&b[j]==′\0′)  c[k++]=a[i++];  c[k]=′\0′;  puts(c);}  则输出结果是  A)acfijkbefijklqswz  B)abceffiijjkklqswz C)befijklqswzacfijk  D)abcefijklqswz(42)现在有如下程序  #include"stdio.h"  main()  {chars[80];  int

122资料仅供参考i,j;  gets(s);  for(i=j=0;s[i]!=′\0′;i++)  if(s[i]!=′H′______)  s[j]=′\0′;  puts(s);}  这个程序段的功能是删除输入的字符串中字符′H′,则空线上应当添入的是  A)s[j++]=s[i];j++; B)s[j]=s[i++];j++;C)s[j++]=s[i];D)s[j]=s[i];(43)下列说法中错误的是  A)静态局部变量的初值是在编译时赋予的,在程序执行期间不再赋予初值  B)若全局变量和某一函数中的局部变量同名,则在该函数中,此全局变量被屏蔽  C)静态全局变量能够被其它的编辑单位所引用  D)所有自动类局部变量的存储单元都是在进入这些局部变量所在的函数体(或复合语句)时生成,退出其所在的函数体(或复合语句)时消失(44)阅读下列程序段,则程序的输出结果为  #include"stdio.h"  #defineM(X,Y)(X)*(Y)  #defineN(X,Y)(X)/(Y)  main()  {inta=5,b=6,c=8,k;  k=N(M(a,b),c);  printf("%d\n",k);}  A)3  B)5  C)6  D)8(45)若有以下定义和语句  structa  {int

123资料仅供参考n,m;};  structast[3]={{1,20},{2,19},{3,21}};  structa*p=st;  则以下错误的引用是  A)(p++)->n;  B)st[0].n; C)(*p).n;  D)p=&st.m;(46)假设有如下定义:structa{intn;floatk;}data,*p;若要使p指向data中的成员n,正确的赋值语句是  A)p=&data.n;  B)*p=data.n; C)p=(structa*)&data.n; D)p=(structa*)data.n;(47)下面函数的功能是将指针t2所指向的线性链表,链接到t1所指向的链表的末端。假定t1所指向的链表非空  structnode{floatx;structnode*next;};  connect(structnode*t1,structnode*t2)  {if(t1->next==NULL)t1->next=t2;  elseconnect(______,t2);}  要实现此功能则应该添入的选项是  A)t1.next B)++t1.next  C)t1->nextD)++t1->next(48)C语言结构体类型变量在程序运行期间  A)TC环境在内存中仅仅开辟一个存放结构体变量地址的单元  B)所有的成员一直驻留在内存中  C)只有最开始的成员驻留在内存中  D)部分成员驻留在内存中(49)有下列运算符:~,&,<<,>>,|,^,则运算的优先顺序是  A)~,&,|,<<,>>,^  B)~,<<,>>,&,|,^  C)~,<<,>>,^,&,|  D)~,<<,>>,&,^,

124资料仅供参考|(50)最简单的交换排序方法是  A)快速排序    B)选择排序 C)堆排序      D)冒泡排序二、填空题(1)栈和队列一般采用的存储结构是【1】。(2)在程序设计阶段应该采取【2】和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,进而用某种程序设计语言写成程序。(3)软件结构是以【3】为基础而组成的一种控制层次结构。(4)数据库系统阶段的数据具有较高独立性,数据独立性包括物理独立性和【4】两个含义。(5)数据库保护分为:安全性控制、【5】、并发性控制和数据的恢复。(6)语句printf("%f\n",13.0*(1/5));的输出结果为【6】。(7)阅读下面语句,则程序的执行结果是【7】。#include"stdio.h"main(){ inta=-1,b=1,k; if((++a<0)&&!(b--<=0))printf("%d,%d\n",a,b); elseprintf("%d,%d\n",b,a);}(8)阅读下面语句,则执行后的输出结果为【8】 #include"stdio.h"main(){char

125资料仅供参考a,b; for(a=′0′,b=′9′;a

126资料仅供参考n;scanf("%ld",&n);do{c[i]=nºse;i++;n=【14】;}while(n!=0);for(--i;i>=0;--i) {d=【15】;printf("%c",b[d]);}printf("H\n");}(14)现有如下程序段,则程序段的输出结果为【16】。#include"stdio.h"intfun(){staticintk;returnk;}main(){intm;m=fun();printf("%d\n",m);}(15)现有如下定义:structaa{inta;floatb;charc;}*p;现需用malloc函数动态的申请一个structaa类型大小的空间(由p指向),则定义的语句为:【17】。(16)有如图所示的双链表结构,请根据图示完成结构体的定义: {intdata;【18】}node;(17)当调函数frend从磁盘文件中读取数据时,若函数数的返回时为5,则表明【19】;若函数的返回值为0,则表明【20】。

127资料仅供参考全国计算机等级考试二级C语言程序设计考前测试题(8)一、选择题(1)下列数据结构中,按先进后出原则组织数据的是  A)线性链表   B)栈  C)循环链表    D)顺序表(2)具有3个结点的二叉树有  A)2种形态    B)4种形态  C)7种形态    D)5种形态(3)栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素能够出栈,则出栈序列可能是  A)ABCED B)DCBEA C)DBCEA D)CDABE (4)结构化程序设计主要强调的是  A)程序的规模   B)程序的效率  C)程序设计语言的先进性  D)程序易读性(5)程序的3种基本控制结构是  A)过程、子过程和分程序  B)顺序、选择和重复 C)递归、堆栈和队列  D)调用、返回和转移(6)下列叙述中,不属于测试的特征的是  A)测试的挑剔性   B)完全测试的不可能性 C)测试的可靠性   D)测试的经济性(7)需求分析中开发人员要从用户那里了解

128资料仅供参考  A)软件做什么   B)用户使用界面  C)输入的信息   D)软件的规模(8)下列关系模型中,能使经运算后得到的新关系中属性个数多于原来关系中属性个数的是  A)选择    B)连接  C)投影    D)并(9)下列叙述中,正确的是  A)用E-R图能够表示实体集间一对一的联系、一对多的联系和多对多的联系  B)用E-R图只能表示实体集之间一对一的联系  C)用E-R图只能表示实体集之间一对多的联系  D)用E-R图表示的概念数据模型只能转换为关系数据模型(10)“年龄在18~25之间”这种约束是属于数据库当中的  A)原子性措施  B)一致性措施 C)完整性措施  D)安全性措施(11)以下说法错误的是  A)高级语言都是用接近人们习惯的自然语言和数学语言作为语言的表示形式 B)计算机只能处理由0和1的代码构成的二进制指令或数据  C)C语言源程序经过C语言编译程序编译之后生成一个后缀为.EXE的二进制文件  D)每一种高级语言都有它对应的编译程序(12)算法是指为解决某个特定问题而采取的确定且有限的步骤,下面不属于算法的五个特性的是  A)有零个输入或多个输入  B)高效性

129资料仅供参考C)有穷性 D)确定性(13)已知inta=6;则执行a+=a-=a*a;语句后,a的值为  A)36  B)0  C)-24  D)-60(14)下面各选项中,均是C语言标识符的选项组是  A)forchinato  B)long_123short56_do C)voidunion_342D)text.txt_023_3ew(15)下列表示式中,结果为5的是  A)6*5%6  B)5*-2+15  C)5+75/5  D)6+-2/3(16)下列常量中,为不合法的实型常量表示的是  A).0032  B)0.0  C)0.3242E8  D).E3(17)关于C语言的主函数描述正确的是  A)C程序能够有多个main函数  B)C程序必有一个而且只能有一个main函数  C)C程序能够没有main函数  D)C程序的执行不一定在main函数开始执行(18)已知inta=1,b=-1;则语句printf("%d\n",(a--,++b));的输出结果是  A)-1  B)0  C)1 D)语句错误(19)已知inta,b;doublec;则以下语句中错误的函数调用是  A)scanf("%d,%x,%lf",&a,&b,&c);  B)scanf("%d,%d,%le",&a,&b,&c);  C)scanf("%o,%x,%o",&a,&b);

130资料仅供参考  D)scanf("%d,%o,%e",&a,&b,&c);(20)已知x,y,z均为整型变量,且值均为1,则执行语句++x||++y&&++z;后,表示式x+y的值为  A)1  B)2  C)3  D)4(21)若intk=8;则执行下列程序后,变量k的正确结果是  main()  {intk=8;  switch(k)  {case9:k+=1;  case10:k+=1;  case11:k+=1;break;  default:k+=1;}  printf("%d\n",k);}  A)12  B)11  C)10  D)9(22)若inti,j;,则for(i=j=0;i<10&&j<8;i++,j+=3)控制的循环体执行的次数是  A)9  B)8  C)3  D)2(23)下列程序的输出结果是  #include"stdio.h"  main()  {inti=6;  while(i--)  printf("%d",--i);  printf("\n");}  A)531  B)420  C)654321 

131资料仅供参考 D)死循环(24)阅读下列程序,则执行结果是  #include"stdio.h"  main()  {inta=0,b=0,c=0,i;  for(i=0;i<4;i++)  switch(i)  {case0:a=i++;  case1:b=i++;  case2:c=i++;  case3:i++;}  printf("%d,%d,%d,%d\n",a,b,c,i);}  A)0,1,3,4  B)1,2,3,4  C)0,1,2,5  D)0,2,3,4(25)下面程序的运行结果是  #include"stdio.h"  main()  {intj,i,k=0;  for(j=50;j<=60;j++)  {if(!(k++))printf("\n");  for(i=2;i=j-1){printf("%d",j);  k++;}}}  A)5359  B)5953  C)3595  D)9535(26)已知charch=′C′;则以下表示式的值是  ch=(ch>=′A′&&

132资料仅供参考ch<=′Z′)?(ch+32):ch;  A)A  B)a  C)Z  D)c(27)以下描述错误的是  A)C程序中,函数能够直接或间接的调用自己  B)函数调用时,函数名必须与所调用的函数名字完全一致  C)函数说明语句中的类型必须与函数返回值的类型一致  D)实参数能够与形参个数不一致(28)阅读下面程序,则执行后的结果为  #include"stdio.h"  main()  {fun3(fun1(),fun2());}  fun1()  {intk=20;  returnk;}  fun2()  {inta=15;  returna;}  fun3(inta,intb)  {intk;  k=(a-b)*(a+b);  printf("%d\n",k);}  A)0  B)184  C)175  D)编译不经过(29)阅读下面程序,则执行后的输出结果为  #include"stdio.h"  fun(inta,int

133资料仅供参考b)  {ints;  s=a*b/2;  printf("%d\n",s);}  main()  {inta=10,b=16;  fun(a,b);}  A)10  B)16  C)160  D)80(30)阅读下面程序,则程序执行后的结果为  #include"stdio.h"  main()  {inta=4,b=6,c=7;  doubled,fun(int,int,int);  d=fun(a,b,c);  printf("%lf\n",d);}  doublefun(inta,intb,intc)  {doubles;  s=a%b*c;  returns;}  A)27  B)27.000000 C)28  D)28.000000(31)下列不合法的指针变量的定义是  A)int*_k; B)char*_245; C)int*p;  D)double*5_is(32)下列关于指针变量赋空值的说法错误的是

134资料仅供参考  A)当赋空值的时候,变量指向地址为0的存储单元  B)赋值语句能够表示为变量名=′\0′;  C)赋值语句能够表示为变量名=0;  D)一个指针变量能够被赋空值(33)阅读下面程序,则执行后输出的结果为  #include"stdio.h"  voidfun(int*a,int*b)  {intm;  m=(*a+*b)*(*a+*b);  m+=(*a-*b)*(*a-*b);  printf("%d\n",m);}  main()  {inta=5,b=6,*x=&a,*y=&b;  fun(x,y);}  A)120  B)121  C)122  D)123(34)阅读下面程序,则输出结果是  #include"stdio.h"  voidfun(int*a,int*b)  {intc=20,d=25;  *a=c/3;  *b=d/5;}  main()  {inta=3,b=5;  fun(&a,&b);  printf("%d,%d\n",a,b);}  A)6,5  B)5,6  C)20,25  D)3,5(35)以下对一维数组c进行正确的定义初始化的语句是  A)intc[10]=0;  B)intc[10]={0}*10; C)intc[1]={0,0,0,0,0,0,0}; D)intc[10]={0};(36)以下二维数组c的正确的定义形式是

135资料仅供参考  A)intc[3][] B)floatc[3,4]  C)doublec[3][4]  D)floatc(3)(4)(37)阅读下列程序,则执行后输出的结果是  #include"stdio.h"  intk=1;  main()  {fun(k);  printf("%d\n",k);}  fun(intk)  {k++;  k=k*6;}  A)1  B)2  C)6  D)12(38)已知#defineM2;的宏定义,执行语句k=M*5;后,k的值是  A)10  B)5  C)2  D)以上答案都不对(39)已知:intc[3][4];则对数组元素引用正确的是  A)c[1][4]  B)c[1.5][0]  C)c[1+0][0]D)以上表示都错误(40)现有如下程序段  #include"stdio.h"  voidfun(int*a,int*b,int*c)  {*c=*a+*b;}  main()  {int

136资料仅供参考a[2]={12,23},c;  fun(a,a+1,&c);  printf("%d\n",c);}  则程序的输出结果为A)23  B)12  C)0  D)35(41)若有以下语句,则正确的描述是  chara[]="toyou";  charb[]={′t′,′o′,′y′,′o′,′u′};  A)a数组和b数组的长度相同  B)a数组长度小于b数组长度  C)a数组长度大于b数组长度  D)a数组等价于b数组(42)已知:chara[15],b[15]={"Ilovechina"};则在程序中能将字符串Ilovechina赋给数组a的正确语句是  A)a="Ilovechina";  B)strcpy(b,a);  C)a=b;  D)strcpy(a,b);(44)阅读下面程序,则执行后的结果为  #include"stdio.h"  main()  {char*str="abcdefghijklmnopq";  while(*str++!=′e′);  printf("%c\n",*str);}  A)f  B)a  C)e  D)q(45)现有如下程序段  #include"stdio.h"  intfun(intk,int

137资料仅供参考*m)  {if(k%3)*m=k*k;  else*m=k/3;}  main()  {int(*p)(int,int*),m;  p=fun;  (*p)(78,&m);  printf("%d\n",m);}  则程序段的输出结果为  A)24  B)25  C)26  D)27(46)阅读下列程序,则执行后的输出结果为  #include"stdio.h"  fun(intx)  {if(x/2>0)fun(x/2);  printf("%d",x%2);}  main()  {fun(20);  putchar(′\n′);}  A)11100  B)10100  C)10101  D)10110(47)阅读如下程序段,则执行后程序的输出结果是  main()  {structa{intx;inty;}num[2]={{20,5},{6,7}};  printf("%d\n",num[0].x/num[0].y*num[1].y);}  A)0  B)28  C)20  D)5(48)阅读程序段,则执行后的输出结果为

138资料仅供参考  #include"stdio.h"  typedefunion{longx[2];  inty[4];  charz[8];}atx;  typedefstructaa{longx[2];  inty[4];  charz[8];}stx;  main()  {printf("union=%d,structaa=%d\n",sizeof(atx),sizeof(stx));}  A)union=8,structaa=8 B)union=8,structaa=24C)union=24,structaa=8 D)union=24,structaa=24(49)阅读下列程序段  #include"stdio.h"  typedefstructaa  {inta;  structaa*next;}M;  voidset(M*k,inti,int*b)  {intj,d=0;  for(j=1;j

139资料仅供参考d[5]={23,34,45,56,67};  set(k,5,d);  p=k+1;  printf("%d\n",table);}  则下面的表示式在table处,能使程序执行后,打印输出数据45的是  A)p->next->a  B)++p->a  C)(*p).a++  D)p++->a(50)阅读下面程序,程序实现的功能是(a123.txt在当前盘符下已经存在)#include"stdio.h"  voidmain()  {FILE*fp;  inta[10],*p=a;  fp=fopen("a123.txt","w");  while(strlen(gets(p))>0)  {fputs(a,fp);  fputs("\n",fp);}  fclose(fp);}  A)从键盘输入若干行字符,按行号倒序写入文本文件a123.txt中  B)从键盘输入若干行字符,取前2行写入文本文件a123.txt中  C)从键盘输入若干行字符,第一行写入文本文件a123.txt中  D)从键盘输入若干行字符,依次写入文本文件a123.txt中

140资料仅供参考二、填空题(1)排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、【1】和选择排序等。(2)当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算。这种情况称为【2】。(3)【3】是一种信息隐蔽技术,目的在于将对象的使用者和对象的设计者分开。(4)为了便于对照检查,测试用例应由输入数据和预期的【4】两部分组成。(5)【5】是从二维表列的方向进行的运算。(6)定义inta=5,b=20;若执行语句printf("%d\n",++a*--b/5);后,输出的结果为【6】。(7)执行程序时的输入为,则程序的运行结果为【7】。main(){ inta,b; scanf("-%*2d",&a,&b); printf("%d\n",a-b);}(8)阅读下面程序,则在执行时候的输出为【8】。 #include"stdio.h"main(){intx=1,y=2,z=0;if(x=2)z=x,x=y,y=z;printf("%d,%d\n",x,y);}(9)语句printf("%d\n",′H′-′0′+64);的执行结果为【9】。(10)阅读下面程序,则程序的执行结果为【10】。main(){int

141资料仅供参考a=10; fun(a); printf("%d\n",a);}fun(intx){x=50;}(11)以下程序的输出结果是【11】。intfun(intx,inty,int*p,int*q){*p=x*y; *q=x/y;}main(){inta,b,c,d;a=4;b=3;fun(a,b,&c,&d);printf("%d,%d\n",c,d);}(12)下面程序是求出数组arr的两条对角线上元素之和,请填空。main(){intarr[3][3]={2,3,4,8,3,2,7,9,8},a=0,b=0,i,j;for(i=0;i<3;i++) for(j=0;j<3;j++)if(【12】)a=a+arr[i][j];for(i=0;i<3;i++)for(【13】;j>=0;j--)if(【14】)b=b+arr[i][j];printf("%d,%d\n",a,b);}(13)下面程序的功能是:对字符串从小到大进行排序并输出,请填空。#include"string.h"#include

142资料仅供参考"stdio.h"sort(char*a[],intn){inti,j;char*p;for(j=1;j<=n-1;j++)for(i=0;【15】;i++)if(【16】>0){p=a[i];a[i]=a[i+1];a[i+1]=p;}}main(){inti;char*book[]={"itisme","itisyou","howareyou","fine","goodnight","goodbye"};sort(【17】);for(i=0;i<6;i++)printf("%s\n",book[i]);}(14)下面的函数是完成1~n的累加,完成函数。a(intk){if(k<=0)printf("error\n");if(k==1)【18】;else【19】;}(15)阅读下列程序,则程序实现的功能是【20】。#include"stdio.h"structnode{chardata; structnode*next;}

143资料仅供参考*head;fun(structnode*q){if(head==NULL){q->next=NULL;head=q;}else{q->next=head;head=q;}}main(){charch;structnode*p;head=NULL;while((ch=getchar())!=′\n′){p=(structnode*)malloc(sizeof(structnode));p->data=ch;fun(p);}p=head;while(p!=NULL){printf("%c",p->data);p=p->next;}}全国计算机等级考试二级C语言程序设计考前测试题(9)(1)根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分成A)动态结构和静态结构     B)紧凑结构和非紧凑结构  C)线性结构和非线性结构  D)内部结构和外部结构

144资料仅供参考(2)设一棵二叉树中有3个叶子结点,有8个度为1的结点,则该二叉树中总的结点数为A)12          B)13  C)14           D)15(3)在下列几种排序方法中,要求内存量最大的是 A)插入排序    B)选择排序  C)快速排序      D)归并排序(4)下列叙述中,不属于结构化程序设计方法的主要原则的是A)自顶向下 B)由底向上C)模块化  D)限制使用goto语句(5)下列不属于软件调试技术的是  A)强行排错法    B)集成测试法  C)回溯法      D)原因排除法(6)为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,一般也把这种图称为A)PAD图    B)N-S图  C)结构图    D)数据流图(7)软件复杂性度量的参数包括  A)效率        B)规模  C)完整性     D)容错性(8)下列叙述中,不属于数据库系统的是  A)数据库     B)数据库管理系统 C)数据库管理员    D)数据库应用系统(9)数据库系统的核心是  A)数据库    B)数据库管理系统 C)数据模型      D)软件工具

145资料仅供参考(10)视图设计一般有3种设计次序,下列不属于视图设计的是  A)自顶向下  B)由外向内  C)由内向外    D)自底向上(11)下列常数中不能作为C语言常量的是  A)0xabc  B)2.5e-0.2  C)32  D)0747(12)设int型的数据长度为2个字节,则unsigned int 类型数据的取值范围是  A)-127~128  B)0~255  C)0~65535  D)0~32768(13)已知int t=6,s;则执行语句s=(++t)+(t++);后,s的值是  A)12  B)13  C)14  D)15(14)已知int x=6,y=2,z;则执行表示式z=x=x>y后,变量z的值为  A)0  B)1  C)4  D)5(15)已知int i,a;执行语句i=(a=3,a++,--a,a+4,a+5,++a);后,变量i的值为  A)2  B)3  C)4  D)5(16)下列说法中正确的是  A)一个C程序是从命令行开始执行的  B)C程序中有些执行语句不用分号(;)结束  C)分号不是C语句的一部分,是C语句之间的分隔符  D)命令行必须用“#”开头,最后不能加“;”号,命令行不是C程序中的语句(17)已知int x=2;执行语句x*=x+=++x;后,x的值是

146资料仅供参考  A)16  B)26  C)36  D)46(18)已知int a=20,b=5;则执行以下语句后的输出结果是  printf("%d\n",a%=(b%=2));  A)0  B)1  C)2  D)3(19)现有以下程序段   #include”stdio.h”    main()  { int a,b,c;  scanf("a=%*d%d,b=%d%*d,c=%d",&a,&b,&c);  printf("a=%d,b=%d,c=%d\n",a,b,c); }  若输出的结果为a=20,b=30,c=40,则以下能够正确输入数据的是  A)a=10]20,b=20]30,c=40  B)20,30,40  C)a=20,b=30,c=40  D)a=10]20,b=30]20,c=40  [注]: “]”表示空格,表示回车(20)已知int x=5,y=3;则表示式(x||y)&&78的结果为  A)1  B)0  C)5  D)78(21)有如下程序段  #include"stdio.h"  main()  {inta=10,b=50,c=30;  a=a>30?1:2;  b=b>30?1:2;  c=c>30?1:2;  printf("%d,%d,%d\n",a,b,c);}  则执行结果为

147资料仅供参考  A)2,1,2  B)1,2,1  C)1,1,2  D)2,1,1(22)阅读如下程序段  #include"stdio.h"  main()  {inta=45,b=40,c=50,d;  d=a>30?b:c;  switch(d)  {case30:printf("%d,",a);  case40:printf("%d,",b);  case50:printf("%d,",c);  default:printf("#");}}  则输出的结果是  A)40,50,  B)50,#  C)40,#  D)40,50,#(23)若有定义intk=10;则下列程序的输出结果为  do{  printf("%d",k--);}while(!k);  A)9  B)10  C) D)没有输出(24)阅读下列程序段,则程序的输出结果是  #include"stdio.h"  main()  {int

148资料仅供参考a=10,b=10,k;  for(k=0;a>8;b=++k)  printf("%d,%d,",a--,--b);  printf("\n");}  A)10,10,10,0,  B)10,9,9,0,  C)10,10,9,1,  D)9,9,9,1,(25)下列程序的运行结果是  #include"stdio.h"  main()  {inta,b,m;  for(a=5;a>=1;a--)  {m=0;  for(b=a;b<=5;b++)  m=m+a*b;}  printf("%d\n",m);}  A)30  B)15  C)20  D)10(26)有字符串如下,"\n\\\407as1\"\xabc",则字符串的长度为  A)6  B)7  C)8 D)9(27)阅读下面程序段  #include"stdio.h"  main()  {charc;  c=(′z′-′a′)/2+′A′;  putchar(c);}  输出结果为  A)M  B)N  C)O  D)Q(28)下列说法中不正确的是

149资料仅供参考  A)C语言规定,不能在一个函数的内部再定义函数  B)在没有声明函数返回值类型的情况下,C默认的函数返回值类型为int型  C)函数的类型能够是整型、实型、字符型,但不能是指针型  D)函数能够没有形参,但函数名后的一对圆括号不能省略(29)现有如下程序,则程序的输出结果为  #include"stdio.h"  intf(inta,intb)  {intc;  if(a>0&&a<10)c=(a+b)/2;  elsec=a*b/2;  returnc;}  main()  {inta=8,b=20,c;  c=f(a,b);  printf("%d\n",c);}  A)随机数  B)80  C)28  D)14(30)阅读如下程序段,则程序段的执行后的输出结果为  #include"stdio.h"  main()  {charc;  inti;  charcount();  int

150资料仅供参考p(char);  for(i=0;i<30;i++)c=count();  p(c);}  charcount()  {charstr=′A′;  str+=1;  return(str);}  p(charc)  {putchar(c);  putchar(′\n′);}  A)A  B)B  C)a  D)b(31)阅读如下程序段,则执行后的结果为  #include"stdio.h"  main()  {inta,*p,*q,**w;  p=&a;  q=&a;  w=&p;  *p=5%6;  *q=5;  **w=3;  printf("%d\n",a);}  A)无确定值  B)1  C)5  D)3(32)现有定义inta=10,*p=&a;则不能使a的内容增1的语句是  A)*p++;  B)*p=*p+1;  C)++*p; 

151资料仅供参考 D)*p+=1;(33)现有下列程序段  #include"stdio.h"  voidJFT(int*a,int*b,int*c,int*d,int*e)  {inti,j,k,m;  for(i=0;i<*a;i++)  for(j=0;j<*b;j++)  for(k=0;k<*c;k++)  for(m=0;m<*d;m++)*e++;}  main()  {inta=10,b=10,c=10,d=10,e=0;  JFT(&a,&b,&c,&d,&e);  printf("%d\n",e);}  则程序段的输出结果是  A)10000  B)1000  C)10001  D)0(34)已知:intc[5][6];则对数组元素引用不正确的是  A)c[0+2][2*1] B)c[1][3]  C)c[4-2][0] D)c[5][2](35)以下能对二维数组c进行正确的初始化的语句是  A)intc[3][]={{3},{3},{4}};  B)intc[][3]={{3},{3},{4}};  C)intc[3][2]={{3},{3},{4},{5}};  D)intc[][3]={{3},{},{3}};(36)阅读下列程序段,则程序段实现的功能是  #include

152资料仅供参考"stdio.h"  main()  {intk[10];  intj;  for(j=0;j<10;j++)  scanf("%d",&k[j]);  for(j=9;j>=0;j--)  printf("%d,",k[j]);}  A)输入10个数据的顺序输入并输出  B)输入10个数据的逆序存放  C)输入10个数据的逆序输出  D)以上叙述均错误(37)阅读程序,则执行后的结果为 #include"stdio.h"  main()  {inti,m,n;  for(i=0;i<3;i++)  {m=test1();  n=test2();}  printf("%d,%d\n",m,n);}  test1()  {intx=0;  x++;  returnx;}  test2()  {staticintx=0;  x++;  returnx;}  A)1,1  B)1,3  C)3,1 

153资料仅供参考 D)3,3(38)以下关于宏替换叙述中,错误的是  A)宏替换占用编译时间  B)替换文本中能够包含已定义过的宏名  C)宏名能够由+号组成  D)宏替换只能是字符替换(39)阅读下面程序,则程序的输出结果为  #include"stdio.h"  main()  {intc[]={1,2,3,4,5,6};  int*p;  p=c;  printf("%d,",*p);  printf("%d\n",*++p);}  A)1,2  B)2,1  C)1,1  D)2,2(40)有如下定义,则函数fun的首部能够是  #defineN5  #defineM6  main()  {doublec[M][N];  fun(c);}  A)fun(doublea) B)fun(doublea[M][]) C)fun(double*a) D)fun(double(*a)[N])(41)下面关于字符串的说明中,错误的是  A)chara[15]="jft";  B)chara[]="jft";  C)char*a=:"jft";D)char

154资料仅供参考a[]={′j′,′f′,′t′};(42)已知:chara[20]="abc",b[20]="defghi";则执行下列语句后的输出结果为  printf("%d",strlen(strcpy(a,b)));  A)11  B)6  C)5  D)以上答案都不正确(43)阅读如下程序段,则程序在先后输入love和china后,输出结果是  #include“stdio.h”  #include“string.h”  main()  {chara[30],b[30];  intk;  gets(a);  gets(b);  k=strcmp(a,b);  if(k>0)puts(a);  elseif(k<0)puts(b);}  A)love  B)china  C)lovechina  D)没有输出结果(44)阅读下面程序,则执行后的结果为  #include"stdio.h"  #include"string.h"  #defineN10  #defineM10  char*find(char(*a)[M],intn)  {char*q;int

155资料仅供参考i;  q=a[0];  for(i=0;i

156资料仅供参考  A)(*t).data.x B)(*t).x  C)t->data.x  D)t.data.x(48)若有以下程序段,则选项中值为2的是  structa{intn,*next;};  intx=1,y=2,z=3;  structas[3],*p=s;  s[0].next=&x;s[1].next=&y;s[2].next=&2;  A)*(p++)->next  B)*(++p)->next  C)(*p).next  D)(p++)->next(49)下面程序段的输出为  #include"stdio.h"  main()  {inta=8,b;  b=a|1;  b>>=1;  printf("%d,%d\n",a,b);}  A)4,4  B)4,0  C)8,4  D)8,0(50)阅读下面程序,此程序的功能为  #include"stdio.h"  main(intargc,char*argv[])  {FILE*p1,*p2;  intc;  p1=fopen(argv[1],"r");  p2=fopen(argv[2],"a");  c=fseek(p2,0L,2);  

157资料仅供参考while((c=fgetc(p1))!=EOF)fputc(c,p2);  fclose(p1);  fclose(p2);}  A)实现将p1打开的文件中的内容复制到p2打开的文件  B)实现将p2打开的文件中的内容复制到p1打开的文件  C)实现将p1打开的文件中的内容追加到p2打开的文件内容之后  D)实现将p2打开的文件中的内容追加到p1打开的文件内容之后二、填空题(1)算法的工作量大小和实现算法所需的存储单元多少分别称为算法的【1】。(2)数据结构包括数据的逻辑结构、数据的【2】以及对数据的操作运算。(3)能够把具有相同属性的一些不同对象归类,称为【3】。(4)软件工程包括3个要素,分别为方法、工具和【4】。(5)由关系数据库系统支持的完整性约束是指【5】和参照完整性。(6)表示式3*7/2+7/2%5的值为【6】。(7)阅读下面的程序,当程序在执行时,如果输入的是′A′,则输出结果为【7】。#include"stdio.h"main(){chara; a=getchar(); switch(a){case65:printf("%c",′A′);case66:

158资料仅供参考printf("%c",′B′);default:printf("%s\n","other");}}(8)以下程序的输出结果是【8】。main(){chara[]="abcdefg";charb[10]="abcdefg";printf("%d,%d\n",sizeof(a),sizeof(b));}(9)阅读下面程序段,则执行后的输出结果为【9】。#include"stdio.h"main(){inta=1;for(;a<=15;)if(++a%5!=2)continue;elseprintf("%d",a);printf("\n");}(10)以下程序的输出结果是【10】。main(){intm=2,n=6;for(;n>=0;n--)m*=n;printf("%d\n",m);}(11)阅读下列程序,则执行后的结果为【11】。#include"stdio.h"fun(intx,inty){intz; z=x;x=y;y=z;}main(){int

159资料仅供参考a,b;a=100;b=640;fun(a,b);printf("%d,%d\n",a,b);}(12)阅读以下程序,使程序输出结果为30,4.000000,请填空。#include"stdio.h"main(){inta=30,b=40,c;double【12】,s;s=fun(&a,&b,&c);printf("%d,%lf\n",c,s);}doublefun(int*a,int*b,【13】){*c=*a%*b; return(4.0);}(13)下面程序段的功能是:从键盘上输入两个字符串,对两个字符串分别排序;然后将它们合并,合并后的字符串按ASCII码值从小到大排序,并删去相同的字符。请填空。#include"stdio.h"fun(char*x,char*y,char*z){chart,*p;p=z;while(*x!=′\0′&&*y!=′\0′){t=*x<*y?*x++:*y<*x?*y++:【14】;if(*p==′\0′)*p=t;else

160资料仅供参考if(t!=*p)*++p=t;}if(*x!=′\0′)while(*x!=′\0′)if(*x!=*p)*++p=*x++;elsex++;if(*y!=′\0′)while(*y!=′\0′)if(*y!=*p)*++p=*y++;elsey++;*++p=【15】;}sort(char*s){inti,j,k;chart,*p;p=s;for(k=0;*p!=′\0′;k++)p++;for(i=0;is[j]) {【16】}}main(){chars1[100],s2[100],s3[200];scanf("%s",s1);scanf("%s",s2);sort(s1);sort(s2);s3[0]=′\0′;fun(s1,s2,s3);printf("%s\n",s3);}(14)下面函数是一个求阶乘的递归调用函数。请填空。intfun(intk){if(k==1)【17】;elsereturn(【18】);}

161资料仅供参考(15)以下函数set用来建立一个带头结点的单向链表,新产生的结点总是插入在链表的末尾。单向链表的头指针作为函数值返回,请填空。structnode{chardata; structnode*next;};structnode*set(){structnode*t1,*t2,*t3;charch;t1=(structnode*)malloc(sizeof(structnode));t3=t2=t1;ch=getchar();while(ch!=′\n′){t2=【19】malloc(sizeof(structnode));t2->data=ch;t3->next=t2;t3=t2;ch=getchar();}t3->next=′\0′;【20】}

162资料仅供参考全国计算机等级考试二级C语言程序设计考前测试题(10)(1)下列叙述中正确的是  A)线性表是线性结构    B)栈与队列是非线性结构  C)线性链表是非线性结构   D)二叉树是线性结构(2)非空的循环单链表head的尾结点(由p所指向),满足  A)p->next==NULL   B)p==NULL C)p->next=head  D)p=head(3)已知数据表A中每个元素距其最终位置不远,为节省时间,应采用的算法是

163资料仅供参考  A)堆排序     B)直接插入排序  C)快速排序   D选择排序(4)对建立良好的程序设计风格,下面描述正确的是  A)程序应简单、清晰、可读性好B)符号名的命名只要符合语法  C)充分考虑程序的执行效率D)程序的注释可有可无(5)下列不属于结构化分析的常见工具的是  A)数据流图 B)数据字典C)判定树   D)PAD图(6)在软件生产过程中,需求信息的给出是  A)程序员   B)项目管理者 C)软件分析设计人员  D)软件用户(7)下列工具中为需求分析常见工具的是  A)PAD    B)PFD  C)N-S     D)DFD(8)NULL是指  A)0  B)空格C)未知的值或无任何值  D)空字符串(9)数据库的故障恢复一般是由  A)数据流图完成的   B)数据字典完成的C)DBA完成的  D)PAD图完成的(10)下列说法中,不属于数据模型所描述的内容的是  A)数据结构  B)数据操作 C)数据查询   D)数据约束(11)C语言程序的基本单位是  A)程序行  B)语句  C)函数 

164资料仅供参考 D)字符(12)下面四个选项中,均是合法整型常量的选项是  A)160 -0xffff  011B)-0xcdf  01a  0xe C)-01 986,012  0668D)-0x48a  2e5  0x(13)以下选项中合法的用户标识符是  A)long  B)_2Test  C)3Dmax  D)A.dat(14)假定x和y为double型,则表示式x=2,y=x+3/2的值是A)3.500000  B)3  C)2.000000  D)3.000000(15)以下变量x,y,z均为double类型且已正确赋值,不能正确表示数学式子x÷y÷z的C语言表示式是  A)x/y*z  B)x*(1/(y*z)) C)x/y*1/z  D)x/y/z(16)设x,y,t均为int型变量,执行语句:  x=y=3;  t=++x||++y;  完成后,y的值为  A)不确定  B)4  C)3  D)1(17)已知i,j,k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为1,j的值为2,k的值为3,以下选项中正确的输入语句是  A)scanf("-,-,-",i,j,k);B)scanf("%d%d

165资料仅供参考%d",&i,&j,&k);  C)scanf("%d,%d,%d",&i,&j,&k);D)scanf("i=%d,j=%d,k=%d",&i,&j,&k);(18)若变量已正确定义并赋值,下面符合C语言语法的表示式是  A)m∶=5  B)c=b=a=1  C)float8%5  D)x+5=y+2(19)下列程序运行的结果是  main()  {floatx;  inti;  x=3.6;  i=(int)x;  printf("x=%f,i=%d",x,i);  }  A)x=3.600000,i=3  B)x=3.6,i=3  C)x=3,i=3  D)x=3.600000,i=3.000000(20)若执行下面的程序时,从键盘上输入5和2,则输出结果是  main()  {inta,b,k;  scanf("%d,%d",&a,&b);  k=a;  if(a>b)k=a/b;  elsek=b%a;  printf("%d\n",k);  } A)5B3C)2D)0

166资料仅供参考(21)C语言中while和do-while循环的主要区别是  A)do-while的循环体至少无条件执行一次  B)while的循环控制条件比do-while的循环控制条件更严格  C)do-while允许从外部转到循环体内  D)do-while的循环体不能是复合语句(22)以下程序的输出结果是  main()  {intx=1,y=3;  printf("%d,",x++);  {intx=0;x+=y*2;  printf("%d,%d,",x,y);  }  printf("%d,%d\n",x,y);  }  A)1,6,3,1,3B)1,6,3,6,3C)1,6,3,2,3 D)1,7,3,2,3(23)下面程序输出的结果是  main()  {inti;  inta[3][3]={1,2,3,4,5,6,7,8,9};  for(i=0;i<3;i++)  printf("%d",a[2-i][i]);  }  A)159B)753C)357D)591(24)请阅读以下程序:

167资料仅供参考  main()  {inta=5,b=0,c=0;  if(a=b+c)printf("***\n");  elseprintf("$$$\n");  }  以上程序  A)有语法错不能经过编译B)能够经过编译但不能经过连接 C)输出*** D)输出$$$(25)以下程序的输出结果是  main()  {charc=′z′;  printf("%c",c-25);  }  A)a B)Z C)z-25 D)y(26)下面函数的功能是  char*fun(char*str1,char*str2)  {while((*str1)&&(*str2++=*str1++));  returnstr2;  } A)求字符串的长度B)比较两个字符串的大小 C)将字符串str1复制到字符串str2中D)将字符串str1接续到字符串str2中(27)下面函数调用语句含有实参的个数为

168资料仅供参考  func((exp1,exp2),(exp3,exp4,exp5));  A)1B)2C)4D)5(28)下面程序段的运行结果是  char*s="abcde";  s+=2;printf("%d",s);  A)cdeB)字符′c′C)字符′c′的地址D)无确定的输出结果(29)已有变量定义和函数调用语句:inta=25;print_value(&a);下面函数的正确输出结果是  voidprint_value(int*x)  {printf("%d\n",++*x);}  A)23B)24C)25D)26(30)当顺利执行了文件关闭操作时,fclose函数的返回值是  A)-1B)TRUE C)0 D)1(31)设有如下定义  char*s[2]={"abcd","ABCD"};  则下列说法错误的是  A)s数组元素的值分别是"abcd"和"ABCD"两个字符串的首地址  B)s是指针数组名,它含有两个元素分别指向字符型一维数组  C)s数组的两个元素分别存放的是含有4个字符的一维字符数组中的元素  D)s数组的两个元素中分别存放了字符′a′和′A′的地址(32)以下不能对二维数组a进行正确初始化的语句是

169资料仅供参考  A)inta[2][3]={0}; B)inta[][3]={{1,2},{0}};  C)inta[2][3]={{1,2},{3,4},{5,6}};D)inta[][3]={1,2,3,4,5,6};(33)有以下程序  structSTU  {charnum[10];floatscore[3];};  main()  {structSTUs[3]={{"1",90,95,85},  {"2",95,80,75},  {"3",100,95,90},  },*p=s;  inti;floatsum=0;  for(i=0;i<3;i++)  sum=sum+p->score[i];  printf("%6.2f\n",sum);  }  程序运行后的输出结果是  A)260.00B)270.00  C)280.00  D)285.00(34)若有说明:inta[10];则对a数组元素的正确引用是  A)a[10] B)a[3,5] C)a(5)  D)a[10-10](35)下面程序段中,输出*的个数是  char*s="\ta\018bc";  for(;*s!=′\0′;s++)printf("*");  A)9B)5  C)6 

170资料仅供参考 D)7(36)设有如下函数  fun(floatx)  {  printf("\n%d",x*x);}  则函数的类型是  A)与参数x的类型相同 B)是void C)是int型 D)无法确定(37)有如下定义  #defineD2  intx=5;floaty=3.83;  charc=′D′;  则下面选项中错误的是  A)x++;  B)y++;  C)c++;  D)D++;(38)以下程序段的执行结果为  #definePLUS(X,Y)X+Y  main()  {intx=1,y=2,z=3,sum;  sum=PLUS(x+y,z)*PLUS(y,z);  printf("SUM=%d",sum);  }  A)SUM=9  B)SUM=12  C)SUM=18  D)SUM=28(39)C语言规定,函数返回值的类型是由  A)return语句中的表示式类型所决定

171资料仅供参考B)调用该函数时的主调函数类型所决定  C)调用该函数时系统临时决定  D)在定义该函数时所指定的函数类型所决定(40)下列程序的运行结果是  voidfun(int*a,int*b)  {int*k;  k=a;a=b;b=k;  }  main()  {inta=,b=9,*x=&a,*y=&b;  fun(x,y);  printf("%d%d",a,b);  }  A)9 B)9 C)00  D)编译时出错(41)下列程序是用来判断数组中特定元素的位置所在。如果输入如下整数:  876675 896 101 301 401 980 431 451 777#include"stdio.h"#include"string.h"intfun(int*s,intt,int*k){inti,h;*k=0;for(i=0;is[*k+1]){h=s[*k];s[*k]=s[*k+1];s[*k+1]=h;*k++;}returns[*k];

172资料仅供参考}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]);   则输出结果为  A)7,431  B)6  C)980  D)9,980(42)C语言结构体类型变量在程序执行期间A)所有成员一直驻留在内存中B)只有一个成员驻留在内存中  C)部分成员驻留在内存中  D)没有成员驻留在内存中(43)下面程序应能对两个整型变量的值进行交换。以下正确的说法是  main()  {inta=10,b=20;  printf("(1)a=%d,b=%d\n",a,b);  swap(&a,&b);  printf("(2)a=%d,b=%d\n",a,b);  }  swap(intp,intq)  {int

173资料仅供参考t;  t=p;p=q;q=t;  }  A)该程序完全正确  B)该程序有错,只要将语句swap(&a,&b);中的参数改为a,b即可  C)该程序有错,只要将swap()函数中的形参p和q以及t均定义为指针(执行语句不变)即可  D)以上说法都不对(44)有以下程序  #include“string.h”  main()  {char*p,*q;  p=(char*)malloc(sizeof(char)*20);q=p;  scanf("%s %s",p,q);printf("%s%s\n",p,q);  }  若从键盘输入:abcdef<回车>,则输出结果是  A)defdef  B)abcdef C)abcd D)dd(45)以下程序的输出结果是  intf()  {staticinti=0;  ints=1;  s+=i;i++;  returns;  }  main()  {int

174资料仅供参考i,a=0;  for(i=0;i<5;i++)a+=f();  printf("%d\n",a);  }  A)20  B)24 C)25  D)15(46)已知inta=1,b=3则a^b的值为  A)3  B)1  C)2  D)4(47)如果需要打开一个已经存在的非空文件“Demo”进行修改下面正确的选项是  A)fp=fopen("Demo","r");  B)fp=fopen("Demo","ab+");  C)fp=fopen("Demo","w+"); D)fp=fopen("Demo","r+");(48)若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是  A)fopen("A:\user\abc.txt","r")  B)fopen("A:\\user\\abc.txt","rt+")  C)fopen("A:\user\abc.txt","rb")  D)fopen("A:\user\abc.txt","w")(49)有以下程序  main()  {char*p="abcde\0fghjik\0";  printf("%d\n",strlen(p));  }  程序运行后的输出结果是  A)12 B)15 C)6  D)5(50)

175资料仅供参考有以下程序  structNODE  {intnum;structNODE*next;};  main()  {structNODE*p,*q,*r;  p=(structNODE*)malloc(sizeof(structNODE));  q=(structNODE*)malloc(sizeof(structNODE));  r=(structNODE*)malloc(sizeof(structNODE));  p->num=10;q->num=20;r->num=30;  p->next=q;q->next=r;  printf("%d\n",p->num+q->next->num);  }  程序运行后的输出结果是  A)10  B)20 C)30 D)40二、填空题(1)冒泡排序算法在最好的情况下的元素交换次数为【1】。(2)在最坏情况下,堆排序需要比较的次数为【2】。(3)若串s="MathTypes",则其子串的数目是【3】。(4)软件开发环境是全面支持软件开发全过程的【4】集合。(5)关系数据库的关系演算语言是以【5】为基础的DML语言。(6)下列y的值是【6】。inty;y=sizeof(2.25*4);(7)下列x的值是【7】。intx;x=sizeof2.25*4;

176资料仅供参考(8)以下程序的输出结果是【8】。main(){inti=010,j=10;pirntf("%d,%d\n",i,j);}(9)下列程序的输出结果为【9】。main(){intx=3,y=5;printf("%d",x=(x--)*(--y));}(10)以下程序的输出结果是【10】。fun(intx,inty,intz){z=x*x+y*y;}main(){inta=31;fun(6,3,a)printf("%d",a)}(11)若有inta=1;intb=2;则a|b的值为【11】。(12)已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表示式ch=′a′+′8′-′3′的值为【12】。(13)若从键盘输入58,则以下程序输出的结果是【13】。main(){inta;scanf("%d",&a);if(a>50)printf("%d",a);if(a>40)printf("%d",a);if(a>30)printf("%d",a);}

177资料仅供参考(14)下列程序的输出的结果是【14】,【15】。main(){inti,jrow,colum,m;staticintarray[3][3]={{100,200,300},{28,72,-30}{-850,2,6}};m=array[0][0];for(i=0;i<3;i++)for(j=0;j<3;j++)if(array[i][j]<m){m=array[i][j];colum=j;row=i;}printf("%d,%d,%d\n",m,row,colum);}(15)以下程序中,select函数的功能是:在N行M列的二维数组中,选出一个最大值作为函数值返回,并经过形参传回此最大值所在的行下标。请填空。#defineN3#defineM3select(inta[N][M],int*n){inti,j,row=1,colum=1;for(i=0;ia[row][colum]){row=i;colum=j;}*n=【16】;return【17】;}main(){int

178资料仅供参考a[N][M]={9,11,23,6,1,15,9,17,20},max,n;max=select(a,&n);printf("max=%d,line=%d\n",max,n);}(16)函数my_cmp()的功能是比较字符串s和t的大小,当s等于t时返回0,否则返回s和t的第一个不同字符的ASCII码差值,即s>t时返回正值,当s

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
最近更新
更多
大家都在看
近期热门
关闭