二级C语言笔试考试考前预测题

二级C语言笔试考试考前预测题

ID:83017055

大小:318.66 KB

页数:149页

时间:2023-09-19

上传者:灯火阑珊2019
二级C语言笔试考试考前预测题_第1页
二级C语言笔试考试考前预测题_第2页
二级C语言笔试考试考前预测题_第3页
二级C语言笔试考试考前预测题_第4页
二级C语言笔试考试考前预测题_第5页
二级C语言笔试考试考前预测题_第6页
二级C语言笔试考试考前预测题_第7页
二级C语言笔试考试考前预测题_第8页
二级C语言笔试考试考前预测题_第9页
二级C语言笔试考试考前预测题_第10页
资源描述:

《二级C语言笔试考试考前预测题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

二级C语言笔试考试考前预测题(共有10套)计算机等级考试二级C语言考前预测题(1)(1)栈和队列的共同特点是A)都是先进先出B)都是先进后出C)只允许在端点处插入和删除元素D)没有共同点(2)已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是A)acbedB)decabC)deabcD)cedba(3)链表不具有的特点是A)不必事先估计存储空间B)可随机访问任一元素C)插入删除不需要移动元素D)所需空间与线性表长度成正比(4)结构化程序设计的3种结构是A)顺序结构、选择结构、转移结构B)分支结构、等价结构、循环结构C)多分支结构、赋值结构、等价结构D)顺序结构、选择结构、循环结构(5)为了提高测试的效率,应该A)随机选取测试数据B)取一切可能的输入数据作为测试数据D)集中对付那些错误群集的程序(6)算法的时间复杂度是指A)执行算法程序所需要的时间B)算法程序的长度C)算法执行过程中所需要的基本运算次数D)算法程序中的指令条数(7)软件生命周期中所花费用最多的阶段是A)详细设计B)软件编码C)软件测试D)软件维护(8)数据库管理系统DBMS中用来定义模式、内模式和外模式的语言为A)CB)BasicC)DDLD)DML(9)卜列有关数据库的描述,正确的是A)数据库是一个DBF文件B)数据库是一个关系C)数据库是一个结构化的数据集合D)数据库是一组文件(10)下列有关数据库的描述,正确的是A)数据处理是将信息转化为数据的过程B)数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变C)关系中的每一列称为元组,一个元组就是一个字段

1C)在完成编码以后制定软件的测试计划D)如果一个关系中的属性或属性组并非该关系的关键字,但它是

2另一个关系的关键字,则称其为本关系的外关键字A)%=(11)以下叙述中正确的是B)/A)C语言比其他语言高级C)=B)C语言可以不用编译就能被计算机识别执行D)<=C)C语言以接近英语国家的白然语言和数学语言作为语言的表达(17)若变量a.i已正确定义,且i已正确赋值,合法的语句是形式A)a==1D)C语言出现的最晚,具有其他语言的一切优点B)++i;(12)C语言中用于结构化程序设计的3种基本结构是C)a=a++=5;A)顺序结构、选择结构、循环结构D)a=int(i);B)if,switch,break(18)已知C)for,while,do-whileintt=O;D)if,fbr,continuewhile(t=l)(13)C语言中最简单的数据类型包括{...(A)整型、实型、逻辑型则以下叙述正确的是B)整型、实型、字符型A)循环控制表达式的值为0C)整型、字符型、逻辑型B)循环控制表达式的值为1D)字符型、实型、逻辑型C)循环控制表达式不合法(14)若变量已正确定义并赋值,以下符合C语言语法的表达式是D)以上说法都不对A)a:=b+1(19)若变量已正确说明为float型,要通过语句scanfB)a=b=c+2("",&a,&b,&c);给a赋予10.0,b赋予22.0,c赋予33.0,C)intI8.5%3下列不正确的输入形式是D)a=a+7=c+bA)10<回车>22V回车>33〈回车〉(15)下列可用于C语言用户标识符的一组是B)10.0,22.0,33.0〈回车〉A)void,define,WORDC)10.0〈回车>22.033.0<回车〉B)a3_b3,」23,CarD)1022c回车>33〈回车〉C)For,-abc,IFCase(20)有如下程序:D)2a,DO,sizeofmain()(16)C语言中运算时象必须是整型的运算符是

3intx=l,a=O,b=O;switch(x){case0:b++;case1:a++;case2:a-H-;b++;)printf(Ma=%d,b=%d

4M,a,b);)该程序的输出结果是A)a=2,b=lB)a=1,b=1C)a=hb=0D)a=2,b=2(21)有以下程序main(){inti=lj=l,k=2;if((j++llk++)&&i++)printf("%d,%d,%d

5”,ij,k);)执行后输出结果是A)1,1,2B)2,2,1C)2,2,2D)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

6';y);)该程序的输出结果是A)0.000000B)0.250000C)0.5000()0D)1.000000(23)有如下程序:main(){intn=9;while(n>6){n-;printf("%d",n);))该程序的输出结果是A)987B)876C)8765D)9876(24)在下列选项中,没有构成死循环的是A)inti=100;while(1){i=i%100+l;if(i>100)break;}B)for(;;);C)intk=l(XX)0:do{k++;[while(lol0000);

7A)ints=36;while(s)-s;(25)设intx=l,y=l;表达式(!xlly-)的值是A)0B)1C)2D)-1(26)若已定义的函数仃返回值,则以下关于该函数调用的叙述中错误的是A)函数调用nJ•以作为独立的语句存在B)函数调用可以作为一个函数的实参C)函数调用可以出现在表达式中D)函数调用可以作为一个函数的形参(27)有以下程序floatfun(intx,inty){return(x+y);}main(){inta=2,b=5,c=8;prinif("%3.0f

8",fun((int)fun(a+c,b),a-c));)程序运行后的输出结果是A)编译出错B)9C)21D)9.0(28)若有以下调用语句,则不正确的fun函数的首部是main()inta[50],n;firn(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)若用是指向某文件的指针,且已读到文件末尾,则函数feof(fp)的返回值是A)EOFB)-1C)ID)NULL(31)若有说明语句:charc='\72';则变量cA)包含1个字符B)包含2个字符C)包含3个字符D)说明不合法,c的值不确定(32)若有说明inta[3][4];则a数组元素的非法引用是A)a[0][2*1]B)a[1][3]

9A)C语言程序总是从第一个的函数开始执行D)a[0][4](33)设有以下说明语句B)在C语言程序中,要调用函数必须在main()函数中定义structstuC)C语言程序总是从main()函数开始执行{inta;D)C语言程序中的main()函数必须放在程序的开始部分floatb;(37)表达式0x13Aox17的值是|stutype;A)0x04则下面的叙述不正确的是B)0x13A)struct是结构体类型的关键字C)0xE8B)structstu是用户定义的结构体类型D)0x17C)stutype是用户定义的结构体类型名(38)有以下程序D)a和b都是结构体成员名#defineF(X,Y)(X)*(Y)(34)在C语言中,引用数组元素时,其数组下标的数据类型允许是main()A)整型常量{inta=3,b=4;B)整型表达式printf("%d

10'\F(a-H-,b++));C)整型常量或整型表达式)D)任何类型的表达式程序运行后的输出结果是(35)若运行时给变量x输入12,则以下程序的运行结果是A)12main()B)15{intx,y;C)16scanf("%d".&x);D)20y=x>12?x+10:x-12;(39)下列程序执行后的输出结果是printf("%d

11”,y);voidfunc(int*a,intb[])}{b[0]=*a+6;)A)0main()B)22{inta,b[5];C)12a=0;b[0]=3;D)10(func(&a,b);printf("%d

12",b[0]);C)a[4-2][0(36)以卜说法正确的是

13B)10,9.8,7,6,5,4,3,2,1,A)6B)7C)8D)9(40)若有下面的程序段:chars[]="china”;char*p;p=s;则下列叙述正确的是A)s和p完全相同B)数组s中的内容和指针变量p中的内容相等C)s数组长度和p所指向的字符串长度相等D)*p与s[0]相等(41)以下程序中函数sort的功能是对a数组中的数据进行由大到小的排序voidsort(inta[],intn){intij,t;for(i=0;i

14M);1程序运行后的输出结果是A)1,2,345,678910,C)123,8,7,6,5,4,9,10,D)1,2,10,9,876,5,4,3,(42)以卜.程序的运行结果是#include''stdio.h"main(){structdate{intyear,month,day;)today;printf("%d

15n,sizeof(structdate));}A)6B)8C)10D)12(43)若有语句ini*point,a=4;和poin仁&a;卜.面均代表地址的一组选项是A)a,point,*&aB)&*a,&a,*pointC)*&point,*point,&aD)&a,&*point,point(44)在调用函数时,如果实参是简单的变量,它与对应形参之间的数据传递方式是A)地址传递B)单向值传递C)由实参传形参,再由形参传实参D)传递方式由用户指定(45)已定义以下函数fun(char*p2,char*pl)

16(48)卜列关于C语言数据文件的叙述中正确的是A)文件由ASCII码字符序列组成,C语言只能读写文本文件B)文件由二进制数据序列组成,C语言只能读写二进制文件C)文件由记录序列组成,可按数据的存放形式分为:进制文件和文本文件D)文件由数据流形式组成,可按数据的存放形式分为:进制文件和文本文件(49)有以下程序voidss(char*s,chart){while(*s){if(*s==t)*s=t-,a,+,A,;S-H-;))main(){charstrl[100]="abcddfefdbd';c=d,;ss(strl,c);printf("%s

17M,strl);}程序运行后的输出结果是A)ABCDDEFEDBDB)abcDDfefDbDC)abcAAfefAbAD)Abcddfefdbd(50)若以下定义:structlink(intdata;structlink*next;while((*p2=*pl)!='\0'){pl++;p2++;}}函数的功能是A)将pl所指字符串复制到P2所指内存空间B)将pl所指字符串的地址赋给指针p2C)对pl和p2两个指针所指字符串进行比较D)检查pl和p2两个指针所指字符串中是否有、0,(46)若执行下述程序时,若从键盘输入6和8时,结果为main(){inta,b,s;scanf("%d%d”,&a,&b);s=aif(a

18且变量a和b之间已有如卜图所示的链表结构:next解析:将属性、操作相似的时象归为类,也就是说,类是具有共同属性、共同方法的对象的集合.(4)通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为【4】.解析:软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。一般包括可行性研究与需求分析、设计、实现、测试、交付使用以及维护等活动。[3]指针p指向变量a,q指向变量Co则能够把c插入至IJa和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】和拥有足够的情报。解析:算法是指解题方案的准确而完整的描述。它有4个基本特征,分别是可行性、确定性、有穷性和拥有足够的情报。(2)在长度为n的有序线性表中进行二分杳找。最坏的情况3需要的比较次数为【2】.解析:对于长度为n的有序线性表,在最坏情况下,二分查找只需要比较log2n次,而顺序查找需要比较n次。(3)在面向对象的程序设计中,类描述的是具有相似性质的•组(5)数据库管理系统常见的数据模型有层次模型、网状模型和【5】3种。解析:数据库管理系统是位于用户与操作系统之间的•层系统管理软件,是一种系统软件,是用户与数据库之间的一个标准接口。其总是基于某种数据模型,可以分为层次模型、网状模型和关系模型。(6)设y是im型,请写出y为奇数的关系表达式【6】。答案(y%2)=l(7)设inta=5,b=6,表达式(++a==b--)?++a:—b的值是[7】。解析:此表达式为三目运算符,++a的值为6,b——的值为6,则整个表达式的值为++a的值,++a的值为7。请注意前缀++「和后缀++,-的区别。(8)卜.列程序的输出结果是[8]omaim(){charb[]="Helloyou";b[5]=0;

19解析:语句b[5]=0;相当于语句b[5]=,\0,,且,\0,为字符串结束标志,输出时遇到''0'就停止输出.(9)当调用函数时,实参是一个数组名,则向函数传递的是[9]。解析:在函数中,可以通过指针变量来引用调用函数中对■应的数组元素,此操作是通过传递数组的首地址来实现。(10)以下程序的输出结果是[10]。inta=1234;printf("%2d

20",a);解析:在%与格式符之间插入一个整形数来指这输出宽度,并不影响数据的完整性,当插入的宽度小于实际的宽度时,则实际的宽度输出。(11)用高级语言编写的程序称为[11]程序,它可以通过解释程序翻译一句执行一句的方式执行,也可以通过编译程序一次翻译产生目标程序,然后执行.解析:用高级语言编写的程序称为源程序,源程序不能在计算机h直接运行,运行源程序有两种方式:一种是通过解释程序,对源程序逐句解释执行;另一种是先让编译程序将源程序一次翻译产生目标程序(FI标程序是计算机可直接执行的机器语言程序,它是一种二进制代码程序),然后执行目标程序。(12)以下程序的输出结果是【12].main(){inta=0;a+=(a=8);printf("%d

21",a);}a=a+8,对表达式逐步进行求解:a+=(a=8)此时,a的值由于赋值为8,而不是0a+=8a=a+8a=16(13)函数1voidfun(float*sn,intn)的功能是:根据以下公式计算S,计算结果通过形参指针sn传回;n通过形参传入m的值大于等于0。请填空。voidfun(float*sn,intn){floats=0.0,w,f=-1.0;inti=0;for(i=0;i<=n;i++){f=[131*f;w=f7(2*i+l);s+=w;)[14]=s;)解析:C语言中实参变量和形参变量的数据传递是单向的“值传递”方式。指针变量作函数也要遵循这一规则。调用函数不可能改变实参指针变量的值,但可以改变实参指针变量所指变量的值。(14)函数fun的功能是:根据以下公式求p的值,结果由函数值返H=ml回。m与n为两个正数且要求m>n。(m-n)!

22解析:赋值表达式的值就是所赋值变最的值,本题中a+=8相节于

23例如:m=12,n=8时,运行结果应该是495.000000。请在题目的空白{iniaa[M],n,k:处填写适当的程序语句,将该程序补充完整。#include#includefloatfun(inim,intn){inti;doublep=1.0;for(i=l;i<=m;i++)[15]:for(i=l;i<=n;i++)[16];for(i=l;i<=m-n;i-H-)p=p/i;returnp;)main(){clrscr();printf(Hp=%f

24'\fun(12,8));}解析:本题中,欲求p的值,需要先求m,n,m・n的阶乘值,可用循环语句实现。(15)该程序运行的结果是[17]。#include#include#defineM100voidfun(intm,int*a,ini*n){inti,j=0;for(i=|;i<=m;i++)if(i%7=0lli%ll=0)a[j++]=i;*n=j;}main()clrscr();fun(10,aa,&n);for(k=0;k

25H);elseprintf("%4d'\aa[k]);printf("

26");}解析:解答本题的关键是要读懂程序,试题要找出能被7或11整除的所有整数,注意数学中的“或”和C语言中的“或”的区别,但在此处,if条件语句中用了“II”运算符,若要找能同时被7和11整除的所有整数则在if()中应用“&&”运算符。当然,如果m的值输入50,即表达式fun(10,aa.&n);为fun(50,aa,&n);时输入结果为:711142122283335424449。(16)卜列程序的功能是:求出ss所指字符串中指定字符的个数,并返回此值。例如,若输入字符串123412132,输入字符1,则输出3,请填空。#include#include#defineM81intfun(char*ss,charc){inti=0;for(;[18];ss++)if(*ss=c)i++;returni;)main(){chara[M],ch;

27clrscr();

28printf("

29Pleaseenterastring:");gets(a);printf("

30Pleaseenterachar:M);ch=getchar();printf(H

31Thenumberofthecharis:%d

32",fun(a,ch));)解析:从字符串ss中找出子字符串的方法是:从第I个字符开始,对字符串进行遍历;若SS串的当前字符等于t串的第1个字符,两字符串的指针自动加1,继续比较卜.一个字符;若比较至字符串的结尾,则跳出循环;若SS串的字符和C串的字符对应不同,继续对SS串的下一个字符进行处理。本程序是采用逐一比较的方式找出出现的次数。循环的作用是在串中从左到右逐一走动,if()的作用是进行判断是否相同,若与C相同则表示又出现一次。(17)下面程序把从终端读入的文本(用@作为文本结束标志)输出到一个名为bidal的新文件中,请填空。#includeHstdio.h"FILE*fp;{charch;if((fp=fopen([19]))=NULL)exit(0);while((ch=getchar())!='@*)fputc(ch,fp);fclose(fp);)解析:fopen函数的调用方式通常为:FILE*fpfp=fopen(文件名,使用文件方式);(18)设有如卜一宏定义#defineMYSWAP(z,x,y){z=x;x=y;y=z;|以卜.程序段通过宏调用实现变量a,b内容交换,请填空。MYSWAP([20]Ab);解析:该题考查两个知识点:(1)用一个指定的标识符(即名字)来代表一个字符串,它的傲形式为#define标识符字符串(2)在MYSWAP宏定义中,利用中间变量z来交换x和y的值,所以要实现a和b的交换,只需通过中间变量即可,所以,此处应填c。选择题01-05CDBDD06-10CDCCB11-15CABBB16-20ABBBA21-25CCSDB26-30DBDBC31-35ADCCA36-40CAAAD41-45CABBA46-50floata=5,b=16,c;

33计算机等级考试二级c语言考前预测题(2)一、选择题(1)已知一棵二叉树前序遍历和中序遍历分别为ABDEGCFH和DBGEACHF,则该二叉树的后序遍历为A)GEDHFBCAB)DGEBHFCAC)ABCDEFGHD)ACBFEDHG(2)树是结点的集合,它的根结点数目是A)有且只有1B)1或多于1C)0或1D)至少2(3)如果进栈序列为el,e2,e3,e4,则可能的出栈序列是A)e3,el,e4,e2B)e2,e4,e3,e1C)e3,e4,el,e2D)任意顺序(4)在设计程序时,应采纳的原则之一是A)不限制goto语句的使用B)减少或取消注解行C)程序越短越好D)程序结构应有助于读者理解(5)程序设计语言的基本成分是数据成分、运算成分、控制成分和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)结构化控制语言A)对象成分C)结构化查询语言

34D)结构化操纵语言(16)字符型数据在机器中是用ASCH码表示的,字符“5”和“7,在机(11)下列叙述中正确的是A)C语言编译时不检查语法B)C语言的子程序有过程和函数两种C)C语言的函数可以嵌套定义D)C语言的函数可以嵌套调用(12)在C语言中,退格符是A)

35B)\tC)\fD)\b(13)以下叙述中正确的是A)构成C程序的基本单位是函数B)可以在一个函数中定义另一个函数C)main()函数必须放在其他函数之前D)所有被调用的函数一定要在调用之前进行定义(14)在C程序中,判逻辑值时,用“非0”表示逻辑值“真”,又用“0”表示逻辑值“假”。在求逻辑值时,用()表示逻辑表达式值为“真”,又用()表示逻辑表达式值为“假”。A)10B)01C)非0非0D)11(15)在C语言中,运算对象必须是整型数的运算符是A)%B)\C)%和\D)**器中表示为A)10100011和0H10111B)010()0101和01100011C)00110101和00110111D)01100101和011(X)111(17)若已定义:inta=25,b=14,c=19;以下三目运算符(?:)所构成语句的执行后a<=25&&b-<=2&&c?printf("***a=%d,b=%d,c=%d

36",a,b,c):printf("###a=%d,b=%d,c=%d

37".a,b,c):程序输出的结果是A)***a=25,b=13,c=19B)***a=26,b=14,c=19C)###a=25,b=13,c=19D)###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.500000B)2.750000C)3.500000D)0.000000(19)下列程序段的输出结果是:

38inta=1234;floatb=123.456;doublec=12345.54321;printf(,,%2d,%2.1f,%2.1F,a,b,c);A)无输出B)12,123.5J2345.5

39C)1234,123.5,12345.5D)程序段执行无限次D)1234J23.4,1234.5(22)有如下程序(20)若运行以下程序时,从键盘输入ADescriptorvCR>(衣示main()回车),则卜面程序的运行结果是#inckide{floatx=2.0,y;main()if(x<0.0)y=0.0;{chare;elseif(x>10.0)y=1.0/x;intv0=l,vl=0,v2=0;elsey=1.0;do{switch(c=getchar())printf(M%f

40M,y);}{case'a':case'A':该程序的输出结果是case'e':case'E':A)0.000000case'i':caseT:B)0.250000case'o':case'O':C)0.500000case'u':case'U':vl+=1;D)1.000000default:vO4-=1;v2+=1;)(23)执行下面的程序段后,变量k中的值为}while(c!=r

41f);intk=3,s[2];prinlf(Mv0=%d,vl=%d,v2=%d

42\v0,vl,v2);)s[0]=k;k=s[1]*10;A)v0=7,vl=4,v2=7A)不定值B)v()=8,vi=4,v2=8B)33C)v0=ll,vl=4,v2=llC)30D)v0=13,vl=4,v2=12D)10(21)设有以下程序段(24)以下程序段的描述,正确的是intx=0,s=0;x=-l;while(!x!=0)s+=++x;doprintf(M%dM,s);{x=x*x;}则while(!x);A)运行程序段后输出0A)是死循环B)运行程序段后输出1B)循环执行两次C)程序段中的控制表达式是非法的C)循环执行一次

43(25)以下选项错误的是voidfund(inti);A)main()voidfiinc2(inti);{intx,y,z;charst[]=,,hello,friend!M;x=O;y=x-l;voidfiincl(inti)z=x+y;){printf(M%cM,st[i]);B)main()if(i<3){i+=2;func2(i);}}{intx,y,z;voidftinc2(inii)x=O,y=x+1;{printf[i]);z=x+y;}if(i<3){i+=2;funcl(i);}}C)main()main(){intx;int{inti=0;fund(i);printf(M

44");)inty;A)hellox=O,y=x+l;B)helz=x+y;)C)hloD)main()D)him{intx,y,z;(28)以下函数返回a所指数组中最大值所在的下标值x=O;y=x+l;fun(int*a,intn)z=x+y,){inti,j=O,p;(26)有如下程序段P=j;inta=14,b=15,x;for(i=j;ia[p]);x=(a&&b)&&(c

45(29)卜面说明不正确的是A)chara[10]=*'chinaH;B)chara[10],*p=a;p="china"C)char*a;a="china";D)chara[10],*p;p=a="china"(30)以下程序的输出结果是#includevoidprt(int*x,int*y,ini*z)(printf(M%d,%d»%d

46n,++*x,++*y,*(z++));)main(){inta=10,b=40,c=20;prt(&a.&b,&c);prt(&a,&b.&c);}A)11,42,3112,22,41B)11,41,2012,42,20C)11,21,4011,21,21D)11,41,2112,42,22(31)若有函数内部说明:inta[3][4];则数组a中各元素A)可在程序的运行阶段得到初值0B)可在程序的编译阶段得到初值0C)不能得到确定的初值D)可在程序的编译或运行阶段得到初值0(34)定义如卜.变量和数组:inta[3][3]={9,876,5,4,321};则下面语句的输出结果是for(k=0;k<3;k++)printf[k][k]);A)753B)951C)963D)741(35)下列程序执行后的输出结果是main(){chararr[2][4];strcpy(arrJyoiT);strcpy(arr[1],MmeM);arr[0][3]=&;printf("%s

47”,aiT);}A)you&meB)youC)meD)err(36)有以下函数charfun(char*p){returnp;)该函数的返回值是A)无确切的值B)形参p中存放的地址值C)一个临时存储单元的地址D)形参p自身的地址值(37)以下正确的说法是A)定义函数时,形参的类型说明可以放在函数体内intk;B)return后边的值不能为表达式

48C)如果函数值的类型与返回值类型不一致,以函数值类型为准D)如果形参与实参类型不一致,以实参类型为准(38)有以下程序intf(intn){if(n==l)return1;elserelumf(n-1)+1;)main()(inti,j=O;for(i=l;i<3;i++)j+=f(i);printf(*'%d

49Hj);)程序运行后的输出结果是A)4B)3C)2D)I(39)设有如下定义:struckskE)inta;floatb;F)data;int*p;若要使P指向daia中的a域,正确的赋值语句是A)p=&a;B)p=data.a;C)p=&data.a;D)*p=data.a;*(40)以卜.对结构体类型变量的定义中,不正确的是{intn;floatm;|AA;AAtdl;B)#defineAAstructaaAA(intn;floatm;ltdl;C)struct(intn;floatm;)aa;siruclaatdl;D)struct{intn;floatm;)tdl;(41)若说明int*p.n;则通过语句scanf能够正确读入数据的程序段是A)p=&n;scanf("%d",&p):B)p=&n;scanf(M%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)A)typedefstructaa

50{printf(**%dM,s);则以下叙述中不正确的是break;A)若只在主函数中对函数f进行说明,则只能在主函数中正确}s+=i;}调用函数fB)若在主函数前对函数f进行说明,则在主函数和其后的其他)函数中都可以正确调用函数fA)4C)对于以上程序,编译时系统会提示出错信息:提示对f函数B)7重复说明C)5D)函数f无返回值,所以可用void将其类型定义为无返回值型D)6(46)若有下面的说明和定义(43)以卜4个选项中,不能看做一条语句的是structtestA);{intml;charm2;floatm3;B)a=5,b=2.5,c=3.6;unionuu{charul[5];intu2[2];)ua;C)if(a<5);)myaa;D)if(b!=5)x=2;y=6;则sizeof(structtest)的值是(44)在C语言中,变量的隐含存储类别是A)12A)autoB)16B)staticC)14C)externD)9D)无存储类别(47)以下程序的输出是(45)若有以下程序structst#include{intx;int*y;J*p;voidf(intn);intdt[4]={10,20,30,40);main()structstaa[4]={50,&dt[0],60,&dt[0],60,&dt[0],60,&dt{voidf(intn);[0]);f(5);main()){p=aa;voidf(intn)printf(,'%d\(p->x));(printf(H%d

51",n);|)

52程序运行后的输出结果是解析:两个实体集间的联系实际上是实体集间的函数关系,这种函A)10B)1]C)51D)60(48)若有运算符《,sizeof,",&=,则它们按优先级由高至低的正确排列次序是A)sizeof,&=,«.AB)sizeof,«,A.&=C)A,«,sizeof,&=D)«,A,&=,sizeof(49)函数fseek(pf,OL,SEEK_END)中的SEEK_END代表的起始点是A)文件开始B)文件末尾C)文件当前位置D)以上都不对(50)有以下程序#includemain(){HLE*fp;inti=20j=30,k,n;fp=fopen("dl.dat","w");fprintf(fp,"%d

53",i);fprinlf(fp,"%d

54"j);fclose(fp);fp=fopen("dI.dat","r");fscanf(fp,"%d%d",&k,&n);printf("%d%d

55",k,n);fclose(fp):)A)2030B)2050C)3050D)3020二、填空题(1)数据结构分为逻辑结构与存储结构,线性链表属于【1】.解析:数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构;数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式。在数据的存储结构中,不仅要存放各数据元素的信息,还需要存放各数据元素之间的前后件关系的信息。(2)在面向对象方法中,类之间共享属性和操作的机制称为【2】.解析:类是面向对象语言中必备的程序语言结构,用来实现抽象数据类型。类与类之间的继承关系实现了类之间的共享属性和操作,•个类可以在另一个已定义的类的基础上定义,这样使该类型继承了其超类的属性和方法,当然,也可以定义自己的属性和方法。(3)耦合和内聚是评价模块独立性的两个主要标准,其中【3】反映了模块内各成分之间的联系。解析:内聚性是•个模块内部各个元素间彼此结合的紧密程度的度量,内聚是从功能角度来度量模块内的联系;耦合性是模块间互相连接的紧密程度的度量.

56(4)一个项目具有一个项目主管,一个项口主管可管理多个项目,则实体"项目主管"与实体"项目"的联系属于【4】的联系。

57数关系可以有3种,即一对一(1:1)的联系、一对多(1:N)或多对一(N:1)的联系和多对多(N:N)的联系。(5)数据库设计分为以卜6个设计阶段:需求分析阶段、【5】、逻辑设计阶段、物理设计阶段、实施阶段、运行和维护阶段。解析:数据库设计分为以卜6个设计阶段:需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、实施阶段及数据库运行和维护阶段。(6)以卜程序的运行结果是[6】。#defineMAX(a,b)(a>b?a:b)+1main(){inti=6,j=8,k;printf("%d

58",MAX(ij));I解析:本题考查宏定义与三目运算符的综合用法,宏定义是原样替换,本题中,如果a>b成立,则a+1的值为整个表达式的值,否则为b+l的值为整个表达式的值,(应注意后面的加1).(7)以下程序的功能是从健盘输入若干学生的成绩,并输出最高成绩和最低成绩,当输入负数时结束。请填空。main(){floatx,amax.amin;scanf('*%f\&x);amax=x;amin=x;while([7])amax=x;elseif(8]amin=x;elsescanf("%f\&x);1printf(H

59amax=%f

60amin=%f

61",amax,amin);)解析:本题先从键盘接受数值,并分别赋给amax(用于保存最高成绩)和amin(用干保存最低成绩),然后通过while循环控制是否结束输入,并且通过if语句来给amax和amin赋值和进行下一次的输入。(8)在对文件操作的过程中,若要求文件的位置指针回到文件的开始处,应当调用的函数是【9】o答案;rewind()(9)在计算机中,字符的比较是对它们的[10]进行比较。解析:C语言中,字符也可以进行比较运算,且是按照ASCII码值进行的。(10)在内存中,存储字符k要占用1个字节,存储字符半欠”要占用[11]个字节。{if(x>amax)(11)下列程序的输出结果是16.00,请填空。解析:计算机存储一个字符用1个字节,存储字符串时,每个字符用占用1个字节,另在字符串的有效字符之后存储1个字符串的结束标记符。所以存储字符串“X”要占用2个字节,存储字符k只要1个字节。

62main(){inta=9,b=2;floatx=[12],y=l.l,z;z=a/2+b*x/y+l/2;printf(H%5.2f

63';z);}解析:本题最后一条语句,表示以浮点格式输出z的值,宽度为5,其中所含2位小数,应该注意的是,两个整型运算结果仍为整型,如1/2的结果为0,对本题可逐步求解:l6.00=9/2+2*x/l.1+1/216.00=4+2*x/l.l+012.00=2*x/l.l所以,x的值为6.6。(12)设在主函数中有以卜.定义和函数调用语句,且fun函数为void类型:请写出fun函数的首部【131°要求形参名为b。main(){doubles[10][22];intn;•»।fun(s);*।।I解析:本题中,为了明确表示“不带回值”,可以用“void”定义“无类型”(或称“空类型。这系统就保证不使函数带回任何值,二维数组的第一维可以省略。(13)下列程序的功能是输入一个整数,判断是否是素数,若为素数输出1,否则输出0,请填空。main(){inti,x,y=l;scanf("%d",&x);for(i=2;i<=x/2;i++)if[14]{y=xO;break;)printf(M%d

64",y);)解析:为判数x是否是素数,预置变量y的值为1(x可能是素数),然后用循环,用2至x/2的整数i测试对x的整除性,若能被其中的某个整数整除,则x是合数,置y的值为0(x不是素数),结束测试循环。若都不能整除,则x为素数。i能否整除x,可用求余运算x%i等于0来判定。所以程序中的空框可填x%i=0。测试x为素数的代码可写成:y=l;for(i=2;i<=x/2;i++)if(x%i==0){y=0;break;}(14)卜面程序的功能是将一个字符串str的内容颠倒过来,请填空。#includemain(){intij,[15]xharstr[]={H1234567");for(i=O,j=strlen(str)[16];i

65",str);)解析:颠倒一个字符串中的字符,就是首尾对应的元素两两交换。简单地可用两个游标变量i和j,i是前端元素的卜标,j是后端元素的下标,交换以这两个变量值为下标的元素和口」和str[j]o开始时,

66i的值为0,j的值为字符串末元素的卜标(字符串长度减1)。每次交换后,i增1,j减1。继续交换的条件是str[i]还位于str[j]的前面,即i

67");scanf("%ld",&n);do{c[i]=[17];i++;n=n/base;)while(n!=0);printf("Transmitenewbase:

68");for(—i;i>=0;—i){d=c[i]jprintf("%c",b[18]);)printf("

69");I解析:程序中,字符数组b存储卜六进制的16个数字符,整型数组c存储译出的十六进制数的各位数值。从整数n译出它的各位十六进制数值,需采用除16取余的方法,即求n除16的余,得到它的十六进制的个位数,接着将n除以16。在n不等于。的情况下循环,能顺序求出n的十六进制的个位数、十位数、百位数等等。程序中变量base已预置16,所以在第1个空框处可填代码n%base。当n的十六进制位,参照数组c[i]的内容d(以其内容为卜标),取十六进制数字符表中的字符b[d]输出。所以在第2个空框处可填入代码[d]。(16)若给fun函数的形参s传送字符串:“]]6354abec”(其中]表示空格字符),则函数的返回值是[19].#includelongfun(chars[])(longn;intsign;for(;isspace(*s);s++);sign=(*.s='-")?-l:l;if(*s='+1|*s='-‘)s++;for(n=O;isdigit(*s);s++)n=10*n+(*s-'0');returnsign*n;1解析:函数fun的第一个for循环跳过字符串的前导空白符,接着判断第一个非空白符是否是负号,若是则置变量sign为-1;否则,置变量sign为1,接着的if语句在第一个非空白字符是负号或1E号时,跳过该字符.以后的for循环将后面的数字符当作十进制数的各位数字译出一个长整数n。遇字符a时,结束循环。最后,函数返回sign与n的乘积。所以若调用函数时提供的实参是“UU6354abc",函数返回值是6354。(17)设有定义"struct(inta;floatb;charc;)abc,♦p_abc=&abc;,>(则对结构体成员a的引用方法可以是abc.a和p_abc[20]a。解析:若仃结构变量abc有成员a,并有指针p_abc指向结构变量abc,则引用变量abc成员a的标记形式有abc.a和p_abc->a。选择题数的个位、十位、百位等依次存放于数组c中后,就从最高位至最低

7001-0506-1011-1516-2021-2526-3031-3536-4041-4546-50计算机等级考试二级C语言考前预测题(3)一、选择题(1)算法的空间复杂度是指A)算法程序的长度B)算法程序中的指令条数C)算法程序所占的存储空间D)执行过程中所需要的存储空间A)便于随机存取B)花费的存储空间较顺序存储少C)便于插入和删除操作D)数据元索的物理顺序与逻辑顺序相同(3)数据结构中,与所使用的计算机无关的是数据的A)存储结构B)物理结构C)逻辑结构D)物理和存储结构(4)结构化程序设计主要强调的是A)程序的规模B)程序的效率C)程序设计语言的先进性D)程序易读性(5)软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指A)模块间的关系B)系统结构部件转换成软件的过程描述C)软件层次结构D)软件开发过程(6)检查软件产品是否符合需求定义的过程称为A)确认测试B)集成测试C)验证测试D)验收测试(7)数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。卜列图符名标识的图符不属于数据流图合法图符的(2)用链表表示线性表的优点是

71A)控制流C)顺序、选择、循环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)输入、处理、输出D)主程序、子程序、函数(13)一个C语言程序是由A)一个主程序和若干子程序组成B)函数组成C)若干过程组成D)若干子程序组成(14)请选出可用作C语言用户标识符的是A)void.define.WORDB)a3_b3,_123,IFC)F0R,-abc,CaseD)2a,Do,Sizeof(15)卜.列各数据类型不属于构造类型的是A)枚举型B)共用型C)结构型D)数组型(16)在16位C编译系统上,若定义longa;,则能给a赋40000的正确语句是A)a=20000+20000;B)a=4000*10;C)a=300004-10000;D)a=4000L*10L(17)以下不正确的叙述是A)在C程序中,逗号运算符的优先级最低B)在C程序中,APH和aph是两个不同的变量C)若a和b类型相同,在计算了赋值表达式a=b后b中的值将

72B)树形、网形、环形放入a中,而b中的值不变

73D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值(18)sizeof(float)是A)一个双精度型表达式B)一个整型表达式C)-•种函数调用D)一个不合法的表达式(19)若x,ij和k都是int型变局,则计算表达式x=(i=4,j=16,k=32)后,x的值为A)4B)16C)32D)52(20)下面程序的功能是把316表示为两个加数的和,使两个加数分别能被13和11整除,请选择填空。#includemain()intn=0,*p=&n,**q=&p,则卜.列选项中正确的赋值语(inti=O,j,k;do{i++;k=316-13*i;}while();j=k/ll;printf(,,3l6=13*%d+ll*%d\i,j);)A)k/11B)k%lIC)k/ll=0D)k%ll==0(21)设有定义:A)p=l;B)*q=2;C)q=p;D)*p=5;(22)下面程序的运行结果是#includemain(){inty=10;do{y—;(while(—y);printf("%d

74",y-);)A)-1B)1C)8D)0(23)卜面程序的输出结果是main(){inta[10]={1,2,3,4,5,6,7,8,9,10),*p=a:printf(H%d

75*\*(p+2));}A)3B)4C)1D)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

76B)6main()C)9{inta=2,res=2;D)8res+=ftinc(&a);(25)设有intx=ll;则表达式(x++*l/3)的值是printf("%d

77",res);A)3)B)4A)4C)IIB)6D)12C)8(26)请选出以下语句的输出结果D)10printf("%d

78",strlen("\t\"\065\xff

79"));(29)卜面能正确进行字符中赋值操作的是A)5A)chars[5]={MABCDE");B)14B)chars[5]={D,E};C)8C)char*s;s="ABCDEH;D)输出项不合法,无正常输出D)char*s;chara;scanf;(27)下列程序的输出结果是(30)执行以下程序后,a,b的值分别为main()main(){doubled=3.2:intx,y;{inta,b.k=4,m=6,*pl=&k,*p2=&m;x=1.2;y=(x+3.8)/5.0;a=pl=&m;printf("%d

80*\d*y);b=(*pl)/(*p2)+7;)printf(*'a=%d

81H,a);A)3printf(>'b=%d

82';b);B)3.2)C)0A)-1,5D)3.07B)1,6(28)下列程序的输出结果是C)0,7intb=2;D)4,10intfunc(int*a)(31)设有数组定义:chararray[]=MChinaM;则数组array所占的空{b+=*a;return(b);)间为

83A)4个字节B)5个字节C)6个字节D)7个字节(32)若已定义:inta[]={04,2,3,4,5,6,7.8,9),*p=a,i;其中0inta口={2,4,6,8};main(){inti;int*p=a;for(i=0;i<4;i++)a[i]=*p;printf(M%d

84H,a[2]);)上面程序输出结果是A)6B)8C)4D)2(35)下面程序段的运行结果是char*format="%s,a=%d,b=%d

85";inta=ll,b=10;a+=b;printf(format/,a+=b",a,b);A)for/a+=b'\abB)format,"a4-=b'^C)a+=b,a=21,b=10D)以上结果都不对(36)C语言允许函数类型缺省定义,此时函数值隐含的类型是A)floatB)intC)longD)double(37)以下程序有语法错误,有关错误原因的正确说法是main(){intG=5,k;voidprt_char();k=prt_char(G);)A)语句voidprt_char();有错,它是函数调用语句,不能用void

86说明B)变量名不能使用大写字母C)函数说明和函数调用语句之间仃矛盾

87D)11(41)下面程序的运行结果是#includemain(){inta=l,b=10;do(b-=a;a++;)while(b—<0);printf(**a=%d,b=%d

88H,a,b);)A)a=3,b=l1B)a=2,b=8C)a=l,b=-lD)a=4,b=9(42)以下程序的输出结果是voidreverse(inta[]Jntn){inti,t;for(i=0;i

89'\s);)A)22B)10C)34D)函数名不能使用卜划线(38)以下叙述中不正确的是A)在不同的函数中可以使用相同的名字的变量B)函数中的形式参数是局部变量C)在一个函数内定义的变量只在本函数范围内有效D)在•个函数内的复合语句中定义的变量在本函数范围内有效(39)有以下程序:#includeunionpw{inti;charch[2];}a;main()(a.ch[()]=13;a.ch[1]=O;printf("%d

90",a.i);}程序的输出结果是A)13B)14C)208D)209(40)在16位IBM・PC机上使用C语言,若有如下定义structdataE)inti;charch;doublef;)b;则结构变量b占用内存的字节数是A)1B)2C)7

91A)30(43)有如下程序:longfib(intn)B)if(n>2)return(fib(n-1)+fib(n-2));elsereturn(2);)main()C)printf(H%d

92",fib(3));}该程序的输出结果是A)2B)4C)6D)8(44)假定以下程序经编译和连接后生成可执行文件PROG.EXE,如果在此可执行文件所在目录的DOS提示符下键入:PROGABCDEFGHIJKL0)printf(',%s,,,argv[argc]);printf(M

93M);}A)ABCDEFGB)UHLC)ABCDEFGHIJKLD)UKLABCDEFGH(45)以下程序有错,错误原因是main()E)int*p,i;char*q,ch;p=&i;q=&ch;F)=40;G)=*q;)A)p和q的类型不一致,不能执行*p=*q;语句B)*p中存放的是地址值,因此不能执行*p=40;语句C)q没有指向具体的存储单元,所以*q没有实际意义D)q虽然指向了具体的存储单元,但该单元中没有确定的值所以执行*p=*q;没有意义,可能会影响后面语句的执行结果<46)函数rewind的作用是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=xAy«2;则z的二进制值是

94A)0()01010()B)00011011C)00011100D)000110(X)(49)阅读以下程序及对程序功能的描述,其中正确的描述是#includemain()(FILE*in,*out;charchjnfile[10],outfile[10];printf("Entertheinfilename:

95");scanf(n%s",infile);printf(HEntertheoutfilename:

96");scanf("%s",oulfile);if((in=fopen(infile/D)=NULL){printf("cannotopeninfile

97");exit(0);)if((out=fopen(outfile,Hw"))==NULL)|printf("cannotopenoutfile

98M);exit(0);}while(!feof(in))fputc(fgetc(in),out);fclose(in);A)程序完成将磁盘文件的信息在屏幕上显示的功能B)程序完成将两个磁盘文件合二为一的功能C)程序完成将个磁盘文件复制到另•个磁盘文件中D)程序完成将两个磁盘文件合并并在屏幕上输出(50)C语言中,能识别处理的文件为A)文本文件和数据块文件B)文本文件和二进制文件C)流文件和文本文件D)数据文件和二进制文件二、填空题(1)数据的逻辑结构有线性结构和【I】两大类。解析:数据的逻辑结构有线性结构和非线性结构两大类。(2)顺序存储方法是把逻辑上相邻的结点存储在物理位置【2】的存储单元中。解析:常用的存储表示方法有4种,顺序存储、链式存储、索引存储、散列存储。其中,顺序存储方法是把逻辑上相邻的结点存储在物理位置也相邻的存储单元中。(3)一个类可以从直接或间接的祖先中继承所有属性和方法。采用这个方法提高了软件的【3】o解析:本题考查了继承的优点:相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余,提高软件的可重用性。(4)软件工程研究的内容主要包括:【4】技术和软件工程管理。fclose(out);解析:基于软件工程的目标,软件一匚程的理论和技术性研究的内容

99main()小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返主要包括:软件开发技术和软件工程管理。软件开发技术包括:软件开发方法学、开发过程、开发工具和软件工程环境,其主体内容是软件开发方法学。软件工程管理包括:软件管理学、软件工程经济学,以及软件心理学等内容。(5)关系操作的特点是【5】操作。解析:在关系操作中,所有操作对象与操作结果都是关系。而关系定义为元数相同的元组的集合。因此,关系操作的特点是集合操作。(6)下面程序是指从终端读入的20个字符放入字符数组中,然后利用指针变量输出上述字符串,请填空。#includemain(){inti;chars[21],*p;for(i=0;i<20;i++)s[i]=getchar();s[i]=[6];p=[7]while(*p)putchar([8]);I解析:本题选通过for循环从键盘读入20个字符,然后在最后赋一定值,\0'后为结束标志,再使指针P指向字符串的首地址。最后通过while循环对字符串进行扫描并输出。(7)以下程序将数组a的4个元素和数组b的6个元素写到名为lett.dat的二进制文件中,请填空。#include{FILE*fp;chara[4]="1234",b[6]=Mabcedf;if((fp=fopen(“【9】“Jwb"))=NULL)exit(0);fwrite(a,sizeof(char),4,fp);fwrite(b,[10],l,fp);fclose(fp);)解析:本题主要考查函数fwrile(char*pt,unsignedsize,unsignedn.FILE*巾),把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);printfC'%d

100",d);)解析:本题的关键在于对变量c的赋值运算:d=(a>b>c)d=(5>4>3)

101先算5>3,为真,得1,即:d=(1>3),此时1>3,为假,得0。(10)以卜.函数的功能是求出能整除x且不是偶数的各整数,并按从

102回。例如,若x中的值为30,则有4个数符合要求,它们是1,3,5,15。请按题意,完成填空。试题程序:#include#includevoidfun(intx,inipp[],int*n){intiJ=0;[13]if(x%i=0)pp[j-H-]=i;[14];Imain(){intx,aa[1000],n,i;clrscr();printf(H

103Pleaseenteranintegernumber:

104");scanf("%d",&x);fun(x,aa,&n);for(i=0;i

105M);}解析:本题题干信息是能整除且不是偶数的所有整数之和。循环语句中i从1开始且每次增2,所以i始终是奇数,*n=j:语句是记录能够符合题意的各个整数的各数。#includc#include{inti;*k=0;[15]if(s[*k]

106M,k,a[k]);)解析:本题中直接使用指针变量k,但在使用时要注意对-k的指针运算,此外,一开始应认*k的值为数组中的某一下标值,即*1<二()。(12)mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。intmystrlen(char*str)(inti;for(i=0;[17]!=,\0,;i++);return(i);)解析:str是指针变量,它指向字符型数据,在循环过程中,可以用*(str+i)来访问字符串中的第i个元素,判断是否是结束标志,如果intfun(int*s,intt,ini*k)不是,i=i+l,继续取下一个元素进行判断,直到*(str+i)的值为,为止,

107也可以用卜标的方式引用字符,如*(str+i)相当于str[i]o

108(13)以下程序的输出结果为[18]o#defineJFT(x)x*xmain(){inta,k=3;a=++JFT(k+1);printf(n%d';a);}解析:宏替换的原则是按原样替换,本题中遇到形参x则以实参k+l替换,其他字符不变。所以JFT(k+l)经替换后为k+l*k+l,所以a=++k+l*k+l,若k+l,若k的值为3,则经过运算为a=4+l*4+1=9。(14)以下定义的结构体类型拟包含两个成员,其中成员变量info用来存入整形数据;成员变量link是指向自身结构体的指针,请将定义补充完整。structnode{intinfo;[19]link;I;解析:本题中的结构类型名为structnode,所以空白处应填:slructnode*o即定义一个指向自身的结构体指针。(15)设有以下结构体类型:structst{charname[8];intnum;floats[4];并且结构体数组student中的元素都已有值,若要将这些元素写到硬盘文件fp中,请将以下Write语句补充完整:fwrite(student,[20],l,fp);解析:fwrite函数的一般调用形式为:fwrite(buffer,size,count,fp),其中:buffer:是个指针变量,是要输出数据的起始地址size:要写的字节数count:要进行写多少个size字节的数据项fp:文件型指针选择题01-05DCCDB06-10AACBA11-15ACBBA16-20DDBCB21-25DDACA26-30ACBCC31-35CDBDC36-40BCDAD)student[50];

10941-45BABDDD)实现软件可重用(5)开发软件时对提高开发人员工作效率至关重要的是46-50ABBCBA)操作系统的资源管理功能B)先进的软件开发工具和环境计算机等级考试二级C语言考前预测题(4)C)程序人员的数量一、选择题D)计算机的并行处理能力(1)在深度为5的满二叉树中,叶子结点的个数为(6)在软件测试设计中,软件测试的主要目的是A)32A)实验性运行软件B)31B)证明软件正确C)16C)找出软件中全部错误D)15D)发现软件错误而执行程序(2)若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序(7)数据处理的最小单位是是dgbaechf,则其后序遍历的结点访问顺序是A)数据A)bdgcefhaB)数据元素B)gdbecfhaC)数据项C)bdgaechfD)数据结构D)gdbehfca(8)索引属于(3)一些重要的程序语言(如C语言和Pascal语言)允许过程的递A)模式归调用。而实现递归B)内模式调用中的存储分配通常用C)外模式A)栈D)概念模式B)堆(9)下述关于数据库系统的叙述中正确的是C)数组A)数据库系统减少了数据冗余D)链表B)数据库系统避免了一切冗余(4)软件工程的理论和技术性研究的内容主要包括软件开发技术和C)数据库系统中数据的一致性是指数据类型一致A)消除软件危机D)数据库系统比文件系统能管理更多的数据B)软件工程管理(10)数据库系统的核心是C)程序设计自动化A)数据库

110B)数据库管理系统C)模拟模型D)软件工程(11)C语言规定,在一个源程序中,main函数的位置A)必须在最开始B)必须在系统调用的库函数的后面C)可以任意D)必须在最后(12)下列数据中,不合法的C语言实型数据的是A)0.123B)123e3C)2.1e3.5D)789.0(13)下面四个选项中,均是不合法的用户标识符的选项是A)AP_0doB)floatlaO_AC)b-agotointD)_123tempint(14)设变量a是int型,f是float型,i是double型,则表达式lWa,+i*f值的数据类型为A)intB)floatC)doubleD)不确定(15)能正确表示逻辑关系:“吟10或agO”的C语言表达式是A)a>=10ora<=0B)a>=0la<=10C)a>=10&&a<=0D)a>=IO||a<=0(16)设以下变量均为int类型,表达式的值不为7的是A)(x=y=6,x+y,x+l)B)(x=y=6,x+y,y+l)C)(x=6,x+1,y=6,x+y)D)(y=6,y+1,x=y,x+1)(17)若有说明:im*p,m=5,n;以下正确的程序段是A)p=&n;scanf("%d",&p);B)p=&n;scanf(H%d",*p)C)scanf("%d'\&n);*p=n;D)p=&n;*p=m;(18)以下程序段的输出结果是inta=1234;printf(M%2d

111n,a);A)12B)34C)1234D)提示出错、无结果(19)若变量a是int类型,并执行了语句:a=A,+1.6;,则正确的叙述是A)a的值是字符CB)a的值是浮点型C)不允许字符型和浮点型相加D)a的值是字符幺/的ASCII值加上1(20)有如下程序

112main(){inta=2,b=-1»c=2;if(a

113if(b<0)c=0;9个零件一组,则多5个零件。下面程序是求这堆零件总数,请选择干组,则多2个零件:若分成7个零件一组,则多3个零件:若分成(26)以下正确的说法是elseC++;printf(*'%d

114'\c);}该程序的输出结果是A)0B)1C)2D)3(21)有如F程序main()E)intx=23;do{printf("%d”,x--);)while(!x);)该程序的执行结果是A)321B)23C)不输出任何内容D)陷入死循环(22)执行语句for(i=l;i++<4;);后变量i的值是A)3B)4C)5D)不定(23)有一堆零件(100到200之间),如果分成4个零件一组的若填空。#includemain(){inti;for(i=IOO;i<2OO;i++)if((i-2)%4=0)if(!((i-3)%7))if()printf(H%dH,i);}A)i%9=5B)i%9!=5C)(i-5)%9!=0D)(i-5)%9==0(24)已有定义inta=・2;和输出语句printf("%81x\a);以下正确的叙述是A)整型变量的输出形式只有%d一种B)%x是格式符的一种,它可以适用于任何一种类型的数据C)%x是格式符的一种,其变量的值按十六进制输出,但%8以是错误的D)%8反不是错误的格式符,其中数字8规定了输出字段的宽度(25)若变量c为char类型,能正确判断出c为小写字母的表达式是A)'a'v=cv='z'B)(c>=H)II(cv=2‘)C)('a'v=c)and('z>=c)D)(c>='a')&&(cv='z')

115A)用户若需调用标准库函数,调用前必须重新定义A)EOFB)用户可以重新定义标准库函数,若如此,该函数将失去原有含义C)系统根本不允许用户重新定义标准库函数D)用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动调用(27)以下正确的函数头定义形式是A)doublefun(intx,inty)B)doublefun(intx;inty)C)doublefun(intxjnly);D)doublefun(intx,y);(28)下面程序段的运行结果是chara[]=”]anuage”,*p;p=a;while(*p!=,u,){printf(M%c'\*p-32);p++;)A)LANGUAGEB)languageC)LAND)langUAGE(29)下面程序段的运行结果是charstr[]='ABC,',*p=str;printf(M%d

116\*(p+3));A)67B)0C)字符c的地址D)字符C(30)若fp是指向某文件的指针,且已读到文件末尾,则库函数feofB)-1C)1D)NULL(31)在C语言中,char型数据在内存中的存储形式是A)补码B)反码C)原码D)ASCII码(32)若有说明:inta[][3]={1,2,345,6,7};则a数组第一维的大小是A)2B)3C)4D)无确定值(33)以下不正确的定义语句是A)doublex[5]={2.0,4.0,6.0,8.0/0.0);B)inly[5.3]={0,1,3,57,9};C)charcl[]:{'1','2','3','4','5'};D)charc2[]:{'\xl0','\xa','\x8'};(34)有以下语句,则对a数组元素的引用不正确的是(叱右9)inta[10]=[0,1,23,4,5,6,7,8,9},*p=a;A)a[p-a]B)*(&a[i])C)p[i]D)*(*(a+i))(35)当说明一个结构体变量时系统分配给它的内存是(fp)的返回值是A)各成员所需内存量的总和

117B)结构中第一个成员所需内存量A)预处理命令行都必须以#号开始C)成员中占内存量最大者所需的容量D)结构中最后一个成员所需内存量(36)有以下程序fiin(intx,inty,intz){z=x*y;}main(){inta=4,b=2,c=6;fiin(a,b,c);printf(,,%d,\c);}程序运行后的输出结果是A)16B)6C)8D)12(37)函数fun的返回值是fun(char*a,char*b){intnum=O,n=O;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的长度之和B)在程序中凡是以#号开始的语句行都是预处理命令行C)宏替换不占用运行时间,只占编译时间D)在以卜.定义是正确的:#definePI3.1415926;(39)调用g&s和puts函数时,必须包含的头文件是A)stdio.hB)stdlib.hC)defineD)以上都不对(40)利用fseek函数可以实现的操作是A)改变文件的位置指针B)文件的顺序读写C)文件的随机读写D)以上答案均正确(41)卜.列程序的输出结果是main(){inta[5]=<2,4,6,8,10),p=a;k=&p;printf(M%dH*(p++));printf("%d

118*\**k);IA)4B)22C)24D)46(42)若有以下结构体,则正确的定义或引用的是

119structTest(38)以下叙述中不正确的是

120{intx;}inty;intf(inta,inib)}vl:{intc;A)Test.x=10;if(a>b)c=l;B)Testv2;v2.x=10;elseif(a==b)c=0;C)structv2;v2.x=10;elsec=-l;D)structTestv2={10};return(c);(43)下面程序段的运行结果是char*p=Mabcdefgh";A)-1p+=3;B)1printf("%d

121*\strlen(strcpy(p,"ABCD")));C)2A)8D)编译出错,无法运行B)12(46)在位运算中,操作数左移一位,其结果相当于C)4A)操作数乘以2D)7B)操作数除以2(44)下面判断正确的是C)操作数除以4A)char*a="china";等价于char*a;*a=MchinaM;D)操作数乘以4B)charstr[5]=("china");等价于charstr[]={"china"};(47)若调用fputc函数输出字符成功,则其返回值是C)char*s="china";等价于char*s;s='chinaH;A)EOFD)chare[4]=',abc,,,d[4]:"abc";等价丁.chare[4]=d[4]="abcM;B)1(45)下列函数的运行结果是C)0main()D)输出的字符{inti=2,p;(48)已知函数的调用形式:fread(buf,size,count,fp),参数buf的含intj,k;义是j=i;A)一个整型变量,代表要读入的数据项总数k=-H-i;B)一个文件指针,指向要读的文件p=f(j,k);C)一个指针,指向要读入数据的存放地址printf("%d\p);D)一个存储区,存放要读的数据项

122(2)Jackson结构化程序设计方法是英国的MJackson提出的,它是a*=16+(b++)-(++c);(49)有如下程序:#defineN2#defineMN+l#defineNUM2*M+1main()Iinti;for(i=l;i<=NUM;i++)printf("%d

123",i);妻该程序中的for循环执行的次数是A)5B)6C)7D)8(50)以卜,定义中,标识符prtint(*prt)[3]A)定义不含法B)是一个指针数组名,每个元素都是一个指向整数变量的指针C)是一个指针,它指向一个具有三个元素的一维数组D)是一个指向整型变量的指针二、填空题(1)在树形结构中,树根结点没有【I】。解析:在树形结构中,每一个结点只有一个前件,称为父结点,没有前件的结点只有•个,称为树的根结点;每•个结点可以有多个后仰:,它们都称为该结点的子结点。没有后件的结点称为叶子结点。一种面向【2】的设计方法。解析:结构化分析方法主要包括:面向数据流的结构化分析方法(SA-Structuredanalysis).面向数据结构的Jackson力去(JSD-Jacksonsystemdevelopmentmethod)和面向数据结构的结构化数据系统开发方法(DSSD-Datastructuredsystemdevelopmentmethod)»(3)面向对象的模型中,最基本的概念是对象和【3】。解析:面向对象模型中,最基本的概念是时象和类。对象是现实世界中实体的模型化;将属性集和方法集相同的所有对象组合在•起,可以构成一个类。(4)软件设计模块化的目的是【4】.解析:模块化是指解决一个复杂问题时白顶向下逐层把软件系统划分成若干模块的过程,由此分解来降低复杂性。(5)数据模型按不同应用层次分成3种类型,它们是概念数据模型、[5]和物理数据模型。解析:数据是现实世界符号的抽象,而数据模型(datamodel)则是数据特征的抽象,它从抽象层次上描述了系统的静态特征、动态行为和约束行为,为数据库系统的信息表示与操作提供一个抽象的框架。数据模型按不同的应用层次分成3种类型,它们是概念数据模型(conceptualdatamodel)、逻辑数据模型(logicdatamodel)、物理数据模型(physicaldatamodel).(6)以下程序段的输出结果是[6】o

124main(){inta=2,b=3,c=4;

125printf("%d",a);)解析:a*=16+(b++)-(++c)等价于a=a*(16+(b++)-(++c)),b++的值为3,++c的值为5,请注意前缀++和后缀++的用法。(7)若变量n中的值为24,则prim()函数共输出【7】行,最后一行有【8】个数.voidprint(intn,intaa[]){inti;for(i=l;i

126");Iprintf("

127");)解析:语句if(!(i%))printf("

128"):是将每5个数输出一行,因为n的值为24,所以共输出5行,最后一行有4个数。(8)调用C语标准库函数时要求用【9】命令.解析:include命令可调用标准的C语言库函数,可以用一对括号或-对双引号,但要在前面加(9)street函数的作用是[10].解析:连接两个字符数组中的字符串(10)C语言程序的注释可以出现在程序中的任何地方,一个注糅以[II]作为开始和结束。解析:C语言程序的注释可以出现在程序基本单词之间的任何地方,C语言程序的注释以'/*作为开始标记,并以'*/作为结束标记。(11)设二进制数A是00101101,若想通过异或运算A、B使A的高4位取反,低4位不变,则二进制数B应是[12]。解析:按位异成运算的一个重要应用是让某个整型变量的:进位取反,0变成1,而1变成0。这只要设计这样一个位串信息,让要变反的位为1,不要改变的位为0,用这个位串信息与整型变量按位加就能得到希望的结果。要使字节的高4位取反,低4位不变,则需要位串信息是11110000.(12)若已知a=10,b=20,则表达式!a

129放最大值,index存放最大值所在元素的卜标。请填空。#include#includevoidfun(inta[J,intn,ini*max,int*d){inti;*max=a[0];*d=0;for(i=0;[15];i++)if(*max<[16]){*max=a[i];*d=i;}Imain(){inti,x[20],max,index,n=10;randomize();for(i=0;i

130H);fun(x,n,&max,&index);printf("Max=%5djndex=%4d

131",max,index);)解析:该程序直接使用形参max和d,由于它们都是指针变量,所以要引用它所指向的变量时要对它进行指针运算,也即*号运算。(15)以下程序的输出结果是【17】ovoidfun()a+=2;printf(H%d",a);)main(){intcc;for(cc=l;cc<4;cc++)fun();printf(M

132H);)解析:本题考查静态局部变量的使用。用关键字static声明的局部变量为"静态局部变量”,其值在函数调用结束后不消失而保留原值,即其占用的存储单元不释放,在下一次该函数调用时,该变量已有值,就是上一次函数调用结束时的值。(16)以下程序的输出结果是【181o#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(M%d

133'\t);)解析:本题综合考查带参数的宏以及三月运算符的计算方法,“V运算符是一个三目运算符,其一般形式是:v表达式1>?<表达式2>:(表达式3>。运算符的含义是:先求表达式1的值,如果为真,则求表达式2的值并把它作为整个表达式的值:如果表达式1的值为假,则求表达式3的值并把它作为整个表达式的值。注意,在本题中宏替换时可采用逐步求解,最终为7>6?7:6*10,即t=7>6?7:60,其值为t=7o

134{staticinta=0;字节的动态存储空间,请填空。(17)用以卜.语句调用库函数malloc,使字符指针st指向具有11个

135st=(char*)[19];解析:malloc函数的参数可以是一个具体的常数,也可以是一个表达式。在本题中,可以是malloc(11),也可以借助于sizeof运算符来表示。21-25BCDDB26-30BACBC31-35DBBDA(18)以卜.程序段打开文件后,先利用fseek函数将文件位置指针定位在文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度,请填空。FILE*myf;longfl;myf=[20]("test.C\',rbn);fseek(myf,0,SEEK_END);fl=ftell(myf);fclose(myf);printf(H%d

136'\fl);解析:函数fopen的原型为FILE*fopen(char*filename,char*mode),功能为以mode指定的方式打开名为filename的文件;函数fseek的原型为inifseek(FILE*fp,longoffsetjmbase),功能为将fp所指向的文件的位置指针移到以base所指出的位置为基准。以offset是以字节为单位的位移量;函数ftell的原型为longflell(FILE*fp),功能为返回fp所指向的文件中的读写位置;函数fclose的原型为intfclose(FILE*fp),功能为关闭fp所指的文件,释放文件缓冲区。选择题01-05BDABB06-10DC11-15CCCCD16-20C36-40B41-45C46-50A计算机等级考试二级c语言考前预测题⑸一、选择题(1)假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为A)log2nB)n2C)O(nl.5)D)n(n-1)/2(2)算法分析的目的是A)找出数据结构的合理性B)找出算法中输入和输出之间的关系C)分析算法的易懂性和可靠性D)分析算法的效率以求改进(3)线性表L=(al,a2,a3,...ai,...an),下列说法正确的是A)每个元素都有一个直接前件和直接后件B)线性表中至少要有个元素C)表中诸元素的排列顺序必须是由小到大或由大到小D)除第一个元素和最后一个元素外,其余每个元素都有一个且

137只有一个直接前件和直接后件(4)在单链表中,增加头结点的目的是A)方便运算的实现B)使单链表至少有一个结点C)标识表结点中首结点的位置D)说明单链表是线性表的链式存储实现(5)软件工程的出现是由于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个都是(II)以下叙述不正确的是A)一个C源程序可由一个或多个函数组成B)•个C源程序必须包含一一个main函数C)C程序的基本组成单位是函数D)在C程序中,注释说明只能位于一条语句的后面<12)在C语言中,int,char和short-:种类型数据在内存中所占用的字节数A)由用户自己定义B)均为2个字节C)是任意的D)由所用机器的机器字长决定<13)以下叙述正确的是A)在C程序中,每行中只能写一条语句B)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数C)在C程序中,无论是整数还是实数,都能被准确无误地表示D)在C程序中,%是只能用于整数运算的运算符

138语言中的标识符只能由字母,数字和卜.划线三种字符组成,且第一个字符

139A)必须为字母B)必须为下划线C)必须为字母或下划线D)可以是字母,数字和下划线中任一字符(15)已知各变量的类型说明如下:intk,a,b;unsignedlongw=5;doublex=1.42;则以下不符合C语言语法的表达式是A)x%(-3)B)w+=-2C)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,则以下语句的输出结果是prinlf("%d,%d

140”,x-・,・・y);A)10,3B)9,3C)9,2D)10,2(18)以下程序的输出结果是main(){inta=4,b=5,c=0,d;d=!a&&!bll!c;printf(M%d

141\d);)A)1B)0C)非。的数D)-1(19)执行下列程序时输入:123〈空格>456(空格>789v回车〉输出结果是main(){chars[100];intc,i;scanf(”%c”,&c);scanfC'%d';&i);scanf(H%s'\s);printf("%c,%d,%s

142'\c,i,s);)A)123,456,789B)1,456,789C)1,23,456,789D)1,23,456(20)卜面有关for循环的正确描述是A)for循环只能用于循环次数已经确定的情况B)for循环是先执行循环体语句,后判断表达式C)在for循环中,不能用break语句跳出循环体D)for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来(21)以卜.程序的输出结果是main(){inti,j,x=O;

143for(i=0;i<2;i++){x++;

144for(j=O;j<3;j++)|if(j%2)continue;x++;}x++;)printf(Mx=%d

145",x);)A)x=4B)x=8C)x=6D)x=12(22)设有以下程序段intx=0,s=0;while(!x!=0)s+=++x;printf(M%dM,s);则A)运行程序段后输出0B)运行程序段后输出1C)程序段中的控制表达式是非法的D)程序段执行无限次(23)对下I,n两个语句描述正确的是I.while(1)II.for(;;)A)都是无限循环B)I是无限循环,n错误C)I循环一次,II错误D)以上答案都错(24)若有以下定义,则能使值为3的表达式是A)i=pintk=7,x=12;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=cxi)后n的值是A)1B)2C)3D)4(26)以下描述中正确的是A)由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句B)do-while循环由do开始,用while结束,在while(表达式)后面不能写分号C)在do・wh加循环体中,是先执行一次循环,再进行判断D)do-while循环中,根据情况可以省略while(27)以下函数返回a所指数组中最小的值所在的下标值fun(int*a,intn){inti,j=O,p;P=j;for(i=j;i

146return(p);}在下划线处应填入的是

147B)a[p]=a[i]C)p=jD)p=I(28)以下叙述正确的是A)函数可以嵌套定义但不能嵌套调用B)函数既可以嵌套调用也可以嵌套定义C)函数既不可以嵌套定义也不可以嵌套调用D)函数可以嵌套调用但不可以嵌套定义(29)若有说明语句chara[]='*Itismine";char*p=MItismine'1;则以下不正确的叙述是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(”%4d,%4d,%4d

148”ab,c);}A)5,2,3B)-5,-12,-7C)-5,-12,-17D)527(31)若二维数组a有m列,则计算任一元素a[i]]刃在数组中相对位置的公式为(假设a[0][0]位于数组的第一个位置上)A)i*m+jB)j*m+iC)i*m+j-lD)i*m+j+1(32)下列说法正确的是inti,x;fbr(i=0,x=0;i<=9&&x!=876;i++)scanf(H%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]可得到初值0B)此说明语句不正确C)数组a中各元素都可得到初值,但其值不一定为0

149D)数组a中每个元素均可得到初值0(35)对下面程序描述正确的一项是(每行程序前面的数字表示行号)1main()2(3floata[3]=(0.0);4inti;5for(i=0;i<3;i++)scanf(H%d",&a[i]);6for(i=l;i<3;i++)a[0]=a[0]+a[i];7printf(',%f

150H,a[0]);8)A)没有错误B)第3行有错误C)第5行有错误D)第7行有错误(36)以下不正确的说法是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*4ta*5);printf;}A)60B)75C)65D)无确定值(39)在位运算中,操作数右移一位,其结果相当于A)操作数乘以2B)操作数除以2C)操作数乘以4D)操作数除以4(40)有以卜结构体说明和变量的定义,且指针p指向变量汰指针q指向变量b。则不能把结点b连接到结点a之后的语句是structnode{chardata;structnode*next;)a,b,*p=&at*q=&b;A)a.next=q;B)p.next=&b;C)p->next=&b;D)(*p).next=q;(41)下面程序的输出结果是structst{intx;

151int*y;

152}*p;intdt[4]={10,20,30,40};structstaa[4]={50.&dl[0].60,&dt[1],70,&dt[2],80,&dt[3]};main()(p=aa;printf("%d

153H,-H-p->x);printf(*'%d

154",(++p)->x);printf(*'%d

155",++(*p->y));JA)102020B)506021C)516021D)607031(42)下面程序的输出结果是#include#includemain(){char*pl=,,abc,\*p2="ABC,\str[50]="xyz”;strcpy(str+2,strcat(pl,p2));printf(M%s

156'\str);)A)xyzabcABCB)zabcABCC)xyabcABCD)yzabcABC(43)以下程序的输出结果是longbin(intn){longs;if(n==llln=2)s=2;elses=n-fun(n-1);returns;}main()(printf(H%ld

157",fun(3));)A)1B)2C)3D)4(44)以下所列的各函数首部中,正确的是A)voidplay(var:Integer,varbinteger)B)voidplay(inta,b)C)voidplay(intajntb)D)Subplay(aasinleger,basinteger)(45)不合法的main函数命令行参数表示形式是A)main(inta,char*c[])B)main(intarc,char**arv)C)main(intargc,char*argv)

158(48)以卜程序的输出结果是A)main(intargv,char*argc[])(46)有如下程序main()(charch[2][5]={“6937”,“8254"},*p[2];intiJ,s=O;for(i=0;i<2;i++)p[i]=ch[i];for(i=0;i<2;i-H-)for(j=O;p[i][j]八%+=2)s=10*s+p[i][j]-'O';printf(*'%d

159H,s);}该程序的输出结果是A)69825B)63825C)6385D)693825(47)以下程序的输出结果是unionmyun{structE)intx,y,z;)u;intk;)a;main()F).u.x=4;a.u.y=5;a.u.z=6;a.k=O;printf("%d

160*\a.u.x);)A)4B)5C)6main(){charx=040;printf(M%o

161H,x«l);)A)100B)80C)64D)32(49)C语言中,系统的标准输入文件是指A)键盘B)显示器C)软盘D)硬盘(50)下面的程序执行后,文件test中的内容是#includevoidfun(char*fname,char*st){FILE*myf;inti;myf=fbpen(fnamejw");for(i=O;i

162二、填空题(1)在算法正确的前提下,评价一个算法的两个标准是【1】。(2)将代数式公x2+y2a+b转换成程序设计中的表达式为【2】。(3)软件危机出现于-60年代末,为了解决软件危机,人们提出了[3]的原理来设计软件,这就是软件工程诞生的基础。(4)[4]是数据库设计的核心。(5)在关系模型中,把数据看成一个二维表,每一个二维表称为一个【5】.(6)以下程序段的输出结果是【6】.intx=17,y=26;printf("%d",y/=(x%=6));(7)关系表达式xvyvz,用C语言的表达式为【7】。(8)若有如下定义,doublea[100];则a数组元素的下标上限是【810(9)下面程序的输出结果【9】omain(){enumteam(yl=4,y2,y3);printf("%d”,y3);)(11)若有以下程序段:intcl=l,c2=2,c3;c3=1.0/c2*cl;则执行后,c3中的值是【11】o(12)若有以下定义:chara;intb;floatc;doubled;则表达式a*b+d-c值的类型为【12】。(13)设有代码“staticinta[3][4]={{1},{2},则a[l][1]和a[2][I]的值为[13]o(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+l;后a的值是【15】。(16)以下程序的输出结果是【1610main(){intx=100,a=10,b=20,ok1=5,ok2=0;if(a

163(17)以下程序的输出结果是[17]omain(){inty=9;for(;y>0;y-)if(y%3=0){printf(n%d",-y);continue;)}(18)以下函数的功能是[18]。floatav(a,n)floata[];intn;{inti;floats;for(i=0,s=0;i

164H);(20)以卜程序的功能是:处理由学号和成绩组成的学生记录,Ng学生的数据已在主函数中放入结构体数组s中,它的功能是:把分数最高的学生数据放在h所指的数组中,注意:分数高的学生可能不只一个,函数返回分数最高学生的人数。请填空。#include#defineN16typedefstruct{charnum[10];ints;}STREC;intfun(STREC*a,STREC*b){inti,j=0,max=a[0].s;for(i=0;i

165printf("The%dhighestscore:

166tt,n);41-45CCfor(i=0;i

167*',hLiJ.num,hLiJprintf(M

168M);oul=fopen("outl5.datH,"w");fprintf(out,"%d

169'

170);for(i=0;i

171A)抽象和信息隐蔽B)局部化和封装化17、852C)内聚性和耦合性D)激活机制和控制方法18、求出数组元素(6)软件开发的结构化生命周期方法将软件生命周期划分成A)定义、开发、运行维护19、9,9,11,B)设计阶段、编程阶段、测试阶段20、max——a[i]C)总体设计、详细设计、编程调试D)需求分析、功能定义、系统设计计算机等级考试二级C语言考前预测题⑹(7)在软件工程中,白箱测试法可用于测试程序的内部结构。此方-、选择题法将程序看做是A)路径的集合B)循环的集合(1)循环链表的主要优点是C)目标的集合D)地址的集合A)不再需要头指针了(8)在数据管理技术发展过程中,文件系统与数据库系统的主要区B)从表中任结点出发都能访问到整个链表别是数据库系统具有C)在进行插入、删除运算时,能更好的保证链表不断开A)特定的数据模型B)数据无冗余D)已知某个结点的位置后,能够容易的找到它的直接前件C)数据可共享D)专门的数据管理软件(2)栈底至栈顶依次存放元素A、B,C、D,在第五个元素E入栈(9)数据库设计包括两个方面的设计内容,它们是前,栈中元素可以出栈,则出栈序列可能是A)概念设计和逻辑设计A)ABCEDB)DCBEAB)模式设计和内模式设计C)DBCEAD)CDABEC)内模式设计和物理设计(3)n个顶点的强连通图的边数至少有D)结构特性设计和行为特性设计A)n-1B)n(n-1)(10)实体是信息世界中广泛使用的一个术语,它用于表示C)nD)n+lA)有生命的事物B)无生命的事物(4)在结构化程序设计思想提出之前,在程序设计中曾强调程序的C)实际存在的事物D)一切事物效率,现在,与程序的效率相比,人们更重视程序的(11)以下说法错误的是A)安全性B)•致性A)一个算法应包含有限个步骤C)可理解性D)合理性B)在计算机上实现的算法是用来处理数据对象的

172(5)模块独立性是软件模块化所提出的要求,衡量模块独立性的度C)算法中指定的操作.不能通过已经实现的底本运算执行仃限次

173后实现A)指针D)算法的目的是为了求解(12)下列选项中不是结构化程序基本结构的是A)顺序结构B)跳转分支结构C)选择结构D)循环结构(13)一知intk,m=l;执行语句k=-m++;后,k的值是A)-1B)0C)1D)2(14)已知intm;floatk;正确的语句是A)(intk)%mB)int(k)%mC)int(k%m)D)(int)k%m(15)卜面各选项中,均是C语言标识符的选项组是A)33weautoB)_23me_3ewC)_433e_elseD)ER-DF32(16)已知intk;floatm=-3;执行语句k=m%2;后,变量k的值是A)-1B)0C)1D)语句有错误B)整型C)长整型D)常量(18)己知intk=10,m=3,n;则下列语句输出结果是printf("%d

174",n=(k%m,k/m));A)2B)3C)4D)5(19)己知intafoatb;所用的scanf调用语句格式为:scanf("a//%d,b=%f,,&a,&b);为了将数据3和25.08分别赋给x和y,正确的输入应当是A)3,25.08B)a=3,b=25.08C)a//3,b=25.08D)a//3b=25.08(20)当k的值不为()时,在下列选项中能够将k的值赋给变量m.n的是A)m=k=nB)(m=k)&&(n=k)C)(m=k)II(n=k)D)(k=m)&&(n=k)(21)5列程序的运行结果是#include"stdio.h"main(){intx=・9,y=5,z=8;

175(17)不能进行++和--运算的数据类型为if(x

176if(y<0)z=0;elsez+=1;{k=0;printf(M%d

177'\z);}for(n=m;n>l;n-)A)6k=k+m*n;B)7C)8printf("%f

178",k);D)9)(22)现有定义intk=l;则执行语句while(++k<4);后,k的值为A)5.000000A)4B)15.000000B)5C)25.0(X)000C)6D)35.000000D)8(25)下列程序的输出结果是(23)以下程序的运行结果为#include"sldio.h*1#includeMstdio.hHmain()main(){inti,a=0,b=0;{intm,n;for(i=l;i<10;i++)fbr(m=O,n=10;m

179'\m,n);}{a++;A)6,7continue;}B)7,6b-H-;)C)9,7printf(”a=%d,b=%d”,a,b);)D)7,9A)a=4,b=4(24)阅读下列程序,程序的输出结果是B)a=4,b=5#include"stdio.h"C)a=5,b=4main()D)a=5,b=5((26)下列选项可以正确表示字符型常量的是intm,n;A)floatk;B)“a”

180D)296{chark;(27)下面对C语言的描述中,正确的是k=a+b;A)函数一定有返回值,否则无法使用函数returnk;}B)C语言函数既可以嵌套定义又可以递归调用A)AC)在C语言中,调用函数时,只能将实参的值传递给形参B)MD)C语言程序中有调用关系的所有函数都必须放在同一源程序C)N文件中D)L(28)阅读下面程序段,则执行后的结果为(30)编写求两个双精度数之和的函数,选项中正确的是#include"stdio.h"A)doubleadd(doublea,doubleb)main(){doubles;{intm=4,n=2»k;s=a+b;k=fun(m,n);returns;)printf("%d

181HJc);}B)doubleadd(doublea,b)fun(intmjntn){doubles;(return(m*m*m-n*n*n);}s=a+b;A)64return(s);)B)8C)doubleadd(doubleadoubleb)C)56{doubles;D)0s=a+b;(29)阅读下面程序段,则执行后输出的结果是returns;}#include"stdio.h"D)doubleadd(a,b)main()(doublea,b,s;{charfun(char^nt);s=a+b;chara='A';return(s);|intb=13;(31)已知inta:则下面的说明指针变量p的语句正确的是a=fun(a,b);A)intp=&aputchar(a);}B)int*p=acharfun(charajntb)C),*\897"

182C)int*p=&am=*a;D)int*p=*am+=*b-3;(32)已知char**t;则变量t是return(&m);)A)指向char变量的指针main()B)指向指针的char变量{intx=21,y=35,*a=&x,*b=&y;C)指向指针的指针int*k;D)以上说法都不对k=fun(a,b);(33)阅读下面程序,执行后的结果为printf(M%d

183H,*k);}#include"sldio.h"A)53voidfun(int*a,int*b)B)21{intk;C)35k=5;D)14*a=k;(35)己知inta[10];则对a数组元素的正确引用是*b=*a+k;JA)a[10]main()B)a{int*a,*b,x=10,y=15;C)a+5a=&x;D)a[10-10]b=&y;(36)在C语言中,一维数组的定义方法为fun(a,b);类型说明符数组名printf("%d,%d

184H*a,*b);}A)[常量表达式]A)10,15B)[整型常量]B)5,15C)[整型变量]C)5,10D)[整型常量]或[整型表达式]D)15J0(37)阅读下列程序,则运行结果为(34)阅读下面程序,在程序执行后的结果为#include"stdio.h"#includeMstdio.hHfun()int*fun(int*a,int*b){staticintx=5;{intm;X++;

185returnx;}main(){inti,x;for(i=0;i<3;i++)x=fun();printf("%d

186\x);)A)5B)6C)7D)8(38)下列程序的输出结果是#include"stdio.h**#defineM(x,y)x%ymain(){inta,m=12,n=100;a=M(n,m);printf;}A)2B)3C)4D)5(39)阅读下面程序,则程序段的功能是#include"stdio.h'1main(){intc[]=[23』,56,234,7,0,34},iJ,t;for(i=l;i<7;i++){l=c[i]y=i-l;while(j>=0&&t>c[j]){c[j+1]=c[j];j-;)c[j+1]=1;}for(i=0;i<7;i++)printf(M%d[i]);putchar(*

187r);}A)对数组元素的升序排列B)对数组元素的降序排列C)对数组元素的倒序排列D)对数组元素的随机排列(40)阅读下列程序,则执行后的结果为#include"stdio.h"main(){intc[][4]={1,2,3,4,5,6,734,213,56,623,23JZ34,56);printf("%x,%x

188”,c[2][2],♦(♦(c+1)+1));}A)3e,6B)62,5C)56,5D)3E,6(41)下列选项中错误的说明语句是A)chara[]:B)chara[]=(,,toyou\0*');C)chara[]=Htoyou\0H;D)chara[]="toyou\(X;(42)卜述对C语言字符数组的描述中错误的是E)字符数组的下标从0开始B)字符数组中的字符串可以进行整体输入/输出C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值D)字符数组可以存放字符串

189printf(*'%d

190",argc);)(43)阅读卜.列程序,则在执行后,程序的运行结果为#include"stdio.h"#include"string.hHmain(){chara[30]=Mnicetomeetyou!";strcpy(a+strlen(a)/2/'you");printf("%s

191",a);}A)nicetomeetyouyouB)nicetoC)meetyouyouD)nicetoyou(44)阅读下面程序,则执行后的结果是#include"stdio.h"main()(charstr[]=Htomeetme",*p;for(p=str;p

192H);)A)tomeetmeB)tmemC)oeteD)tome(45)下面程序的文件名为l.exe,在DOS下输入的命令行参数如下:ttomeetmev回车〉则程序输出的结果是#include"stdio.h"main(argc,argv)intargc;char*argv[];A)3B)4C)2D)以上答案都不正确(46)阅读下面程序,则执行后的结果为#include"stdio.h"longRin(intn){if(n>2)return(fun(n-1)+fun(n-2));elsereturn(2);}main(){printf(H%ld

193'\fun(5));)A)10B)15C)20D)以上3个答案都不正确(47)已知如卜.定义,贝Usizeof(a)的值是struct(inti;chare;doublea;}a;A)8B)9C)10D)11(48)已知函数的原形如下,其中结构体a为已经定义过的结构,且有下列变量定义{inti;structa*f(inttljnt*t2,strcutat3,structa*t4)

194structap,*pl;inti;fc(fp);则正确的函数调用语句为A)&p=f(10,&i,p,pl);B)pl=f(i++,(int*)pLp,&p);C)p=f(i+l,&(i+2)产p,p);D)f(i+l,&i,p,p);(49)卜.面程序段的输出为#include"stdio.h',main(){printf(H%d

195"J2«2);}A)0B)47C)48D)24(50)假定当前盘符下有两个文本文件,如下文件名al.txta2.txt内容123#321#则下面程序段执行后的结果为#includeMstdio.hMvoidfc(FILE*p){charc;while((c=fgetc(p))!='#')putchar(c);)main(){FILE*fp;fp=fopen(Hal.txt'W);fc(fp);fclose(fp);fp=fopenC^.txCW);fclose(fp);putchar('

196');)A)123321B)123C)321D)以上答案都不正确二、填空题(I)常用的黑箱测试有等价分类法、【1】、因果图法和错误推测法4种。解析:黑箱测试方法完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例。常用的黑箱测试有等价分类法、边值分析法、因果图法和错误推测法4种。(2)测试的口的是暴露错误,评价程序的可靠性;而【2】的口的是发现错误的位置并改正错误。解析:软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定;调试也称排借,它是一个与测试有联系又有区别的概念。具体来说,测试的目的是暴露错误,评价程序的可靠性,而调试的目的是发现错误的位置,并改正错误。(3)软件维护活动包括以下几类:改正性维护、适应性维护、【3】维护和预防性维护。解析:软件维护活动包括以卜.几类:改正性维护、适应性维护、完善性维护和预防性维护。改正性维护是指在软件交付使用后,为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,

197main()main()应当进行的诊断和改正错误的过程;适应性维护是指为了使软件适应变化,而去修改软件的过程;完善性维护是指为了满足用户对软件提出的新功能与性能要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性;预防性维护是为了提高软件的可维护性、可靠性等,为以后的进一步改进软件打下良好基础。(4)在面向对象的设计中,用来请求对象执行某一处理或回答某些信息的要求称为[4]。解析:在面向对象技术中,主要用到对象(object),类(class),方云(method)、;®.(message(inheritance)>J®(encapsulation)等基本概念。其中消息是用来请求对象执行某•处理或回答某些信息的要求。(5)关键字ASC和DESC分别表示【5】的含义。解析:ASC表示升序排列,DESC表示降序排列,多用在索引定义和SELECT语句中的ORDERf句中。(6)定义inta=5,b;,则执行表达式b=++a*-a之后,变量b的值为[6].【命题目的】考杳对于基本运算符的掌握情况。【解题要点】++和-做前缀使用的时候,先对变量进行增1或减1,之后进行其他的运算.【考点链接】赋值运算符的优先级仅仅高于逗号运算符。(7)以下程序的输出结果是[7】。#include"stdio.h"{inta=065;printf("%d

198",-a);)【命题目的】考杏对于数据的格式化输出的掌握情况。【解题要点】八进制的65转换为十进制的53之后减1输出。【考点链接】0开头的是八进制整数。(8)阅读下面程序,则执行后的输出结果是[8】。#include"stdio.h"main(){intx,y,z;x=I;y=2;z=3;if(x>y)if(x>z)printf("%d",x);elseprintf("%d",y);printf("%d

199",z);I【命题Fl的】考查对丁if语句的掌握情况。【解即要点】C语言的语法规定:else子句总是与前面最近的不带else的if相结合。因为x不大于y,所以执行printf("%d

200",z);语句。(9)如卜.语句printf("%c

201”,B+40);在执行后的输出结果是[9].【命题目的】考查对于字符常量运算的掌握情况。【解题要点】在C程序中的字符量可参与任何整数运算。【考点链接】%<:是以字符的形式输出。(10)阅读下面程序,则程序的执行结果为[10].

202#include"stdio.h"

203{inta=3O,b=2O,z;z=fun(a+b,a-b);printf("%d

204",z);]fun(inta,intb)(intz;z=a/b;returnz;}【命题目的】考查对于函数的调用和返[可值的掌握情况。【解题要点】函数调用的时候,函数名字必须与所调用的函数名完全•致,形参与实参类型要•致,在没有给出函数返回值类型的情况下,默认为整形,当返回值为整型的函数放到主函数后面时,可以不需要事先说明就调用这个函数。【考点链接】retrun既可以返回一个普通常量,也可以返回一个指针变量。(II)卜面的程序实现的是指针p所指向的地址的n个数中,求出最大的和最小的数据,请填空。fun(int*p,intn){int*q;intmax,min;max=min=*p;for(q=p;[II];q++)if([12])max=*q;elseif([13])min=*q;【解题要点】通过地址传递可以在被调函数中对调用函数中的变量进行引用。(12)HE的函数fun的功能是将形参x的值转换成二进制数,所得二进制数的每一位放在一维数组中返回,二进制的最低位放在下标为0的元素中,其他依次类推,请填空。fun(intxjntb[]){intk=0,r;do{r=x%[14];b[[15]]=r;x/=[16];[while(x);)【命题目的】考查对于数组操作的综合运用。【解题要点】深刻理解卜进制转化为二进制的方法,即取余法:数组名作为实参,在函数内部可以直接修改调用函数中定义的数组的值。【考点链接】do…while循环,先执行循环体,后判断循环条件。(13)下面函数的功能是将一个字符串的内容颠倒过来,清填空。voidfun(charstr[])(intij,[17];for(i=0,j=[18];i

205【命题目的】考查对于函数的地址传递的掌握情况。

206(14)阅读下面程序,则程序的执行结果为[19]#include"stdio.h"fun(intkjnt*p){inta,b;if(k==lllk=2)♦p=l;else{fun(k-l,&a);fun(k-2,&b);*p=a+b;)Imain(){intx;fun(6,&x);printf(H%d

207\x);I34)阅读下面程序,则程序的执行结果为【19】。#includc"stdio.h"fun(intkjnt*p){inta,b;if(k==lllk=2)*p=l;else{fun(k-l,&a);fun(k-2,&b);*p=a+b;main(){intx;fun(6,&x);printf(H%d

208H,x);1(15)阅读下列程序,则程序的输出结果为【201o#include"stdio.h*'structty{intdata;chare;);main(){structtya={30/xf};fun(a);printf(H%d%c",a.data,a.c);)fiin(structtyb){b.data=20;b.c='y';)【命题目的】考查对于结构体的掌握情况。【解题要点】本题的参数传递属于值传递,所以函数内不能改变调用函数中的数据。选择题

20901-05BBCCC06-10AAAAC11-15CBADB16-20D21-25DACBB26-30ACCCA31-35CCCAD36-40A41-45DC46-50ADBCA计算机等级考试二级C语言考前预测题⑺I)最简单的交换排序方法是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)数据的流向(6)下列选项中,不属于模块间耦合的是A)数据耦合B)同构耦合C)异构耦合D)公用耦合(7)一个关系中属性个数为1时,称此关系为A)对应关系B)单一关系C)一元关系D)二元关系(8)为用户与数据库系统提供接口的语言是A)高级语言B)数据描述语言(DDL)

210B)oXdeA)12,34,45C)32767B)x=12,y=34,z=45D)OxDGC)x=12C,sumy=34,z=45C)数据操纵语言(DML)D)汇编语言(9)相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和A)可重用性差B)安全性差C)非持久性D)冗余性(10)需求分析阶段的任务是确定A)软件开发方法B)软件开发工具C)软件开发费用D)软件系统功能(11)卜列关于C语言的说法不正确的是A)C语言既具有高级语言的一切功能,也具有低级语言的一些功能B)C语言中的每一条执行语句都必须用分号结束,分号不是C语言的一部分,是语句之间的分隔符号C)注释可以出现在程序中任意合适的地方D)命令行后面不能加分号,命令行不是C语言的语句(12)下列关于标识符的说法中错误的是A)合法的标识符是由字母、数字和下划线组成C)C语言的标识符中,大写字母和小写字母被认为是两个不同的字符D)C语言的标识符可以分为二类,即关键字、预定义标识符和用户标识符D)用户标识符与关键字不同时,程序在执行时将给出出错信息(13)下列合法的整型常量的表示是A)098(14)现在有以卜,定义,inta:doubleb;floatc;chark;贝I]卜,面的表达式a/b+c-k值的类型为:A)intB)doubleC)floatD)char(15)假设整型变量a.b,c的值均为5,则表达式a+++b+++c++的值为A)17B)16C)15D)14(16)下列关于复合语句和空语句的说法错误的是A)复合语句是由开头,由“}”结尾的B)复合语句在语法上视为一条语句C)复合语句内,可以有执行语句,不可以有定义语句部分D)C程序中的所有语句都必须由一个分号作为结束(17)关于primf()函数的返回值叙述正确的是A)通常是本次调用中输出字符的个数B)通常是输出的第一个数值C)通常返回布尔值真D)通常返回非零值(18)现有格式化输入语句,scanf("x=%du,sumuy=%d,lineuz=%dL",&x,&y,&z)现在已知在输入数

211据后,x,y,z的值分别是12,34,45,则下列数据是正确的输入格式的是

212D)x=12],sum]y=34,line]z=45[注]:“if’表示空格,<£11怩1>表示回车(19)设x,y,z,t均为整型变量,现有如下语句x=y=z=l;t=++xll++y&&++z;则执行这个语句后t的值为A)2B)1C)0D)不定值(20)现有如下程序段,此程序段编译有错误,则程序段的错误出在#includemain()(inta=30,b=40,c=50,d;d=a>30?b:c;switch(d)(casea:printf(*'%d/\a);caseb:printf("%d,",b);casec:printf(;defaulcprintf("#“);}}A)default:printf("#");这个语句B)d=a>30?b:c;这个语句C)casea:printf(M%d/\a);caseb:printf("%d,",b);casec:printf("%d7;c);这三个语句D)switch(d)这个语句(21)下列语句中,错误的是(x,y,a,b假设已经定义好)A)while(x=y)5;B)dox++while(x=10);C)while(0);D)do2:while(a==b);是fbr(i=6;i;i-)for(j=0;j<5;j++){}A)40B)35C)30D)25(23)下列说法中错误的是A)只能在循环体内使用break语句B)在循环体内使用break语句可以使流程跳出本层循环体,从而提前结束本层循环C)在while和do...while循环中,continue语句并没有使整个循环终止D)continue的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环判断(24)阅读如卜.程序段#include"stdio.hMmain(){intx,a,b;scanf(H%dH,&x);a=b=x;for(;x!=0;){if(xa)a=x;scanf(H%d,\&x);}printf("a=%d,b=%d

213'\a,b);)(22)若i,j己经定义为整型,则以下程序段中,内循环体的执行次数现输入如卜"[注]:宜表示空格

21434u56u23u45u5u56u7ul2u365u49u48u57u87u7u6u7569u789u(XEnter>输入后输出结果是A)a=7569,b=789B)a=5,b=365C)a=7,b=789D)a=7569,b=5(25)卜面关于字符常量的说法错误的是A)一个字符常量代表ASCII字符集中的一个字符B)单引号中的大写字母和小写字母代表不同的字符常量C)字符常量只能包含一个字符D)字符常量可以用单引号或双引号括起来(26)现有如下程序#include"stdio.h"intfun(intx){printf("x=%d

215",-H-x);)main(){fun(12+5);}则程序的输出结果是A)12B)13C)17D)18(27)现有如下程序段#include"stdio.h"intaa(intx,inty);main(){inta=24,b=16,c;printf("%d

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

217C)p=q;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(M%d

218H,++*c);}则程序段执行后的结果为A)8B)7C)6D)5(32)现有inta,*b:,b=&a;,则下列运算错误的是A)*&aB)&*aC)*&bD)&*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=0IIk[i]%5=0)counl++;i++;)printf(M%d,%d

219M,count,i);)则程序段的输出结果为A)7,8B)8,8C)7,10D)8,10(34)现有如下定义语句int*p,s[20]j;p=s;表示数组元素s[i]的表达式不正确的是A)*(s+i)B)*(p+i)C)*(s=s+i)D)*(p=p+i)(35)阅读如下程序段,这个程序在编译的时候会有一个警告,下列关于这个警告叙述正确的是#include"stdio.h"#defineN10int*fun(inta[N],intn)(inti,b[N];for(i=0;i

220int*k;

221k=fun(a[N],5);(38)卜列程序的输出结果是prinlf("%d

222';*k);}A)指针k没有指向任何对象而成为“无向指针”,所以这里会产生警告B)return语句不应该有括号,所以在这里会有警告C)return语句的返回值类型与指针k的基类型不•致,这里会产生警告D)数组赋值的时候没有把数组全部都赋初值,所以在这里会有警告(36)有如F定义语句:intaa[][3]={12,23.34.4,5678,89,45};,则45在数组aa中的行列坐标各为A)3,2B)3,1C)2,2D)2,1(37)现有如下程序段#include"stdio.h"main()(inta[5][6]={23365,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=0j=5;printf(H%d

223'\*(&a[0][0]+2*i+j-2));}则程序的输出结果为A)21B)78C)23D))28#include"stdio.h1'E)efineN3F)efineM3voidfun(inta[M][N]){printf("%d

224”,*(a[1]+2));)main(){inta[M][N];intij;for(i=0;i

225chark[100]={0},*p=k;inti;for(i=0;i<3;i++){p=strcat(p,a[i]);Ji=strlen(p);printf(M%d

226H,i);}则程序段的输出结果是A)18B)19C)20D)21(41)现有如下程序段#includeMstdio.h"#include"string.h"main()(chara口士'acfijk”;/*这里是有序的字符序列*/charb[]="befijklqswz”;/*这里是有序的字符序列*/chare[80]/p;inti=O,j=O,k=O;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]=f\0r&&b[j]!=、(),)c[k++]=b[j++];while(a[i]!='\0'&&b[j]=r\0r)c[k]八(T;puts(c);}则输出结果是A)acfijkbefijklqswzB)abceffiyjkklqswzC)befijklqswzaefijkD)abcefijklqswz(42)现在有如下程序#include"stdio.hMmain(){chars[80];intij;gets(s);for(i=j=O;s[i]!=r\0r;rH-)if(s[i])s[j]=A0r;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)静态局部变量的初值是在编译时赋予的,在程序执行期间不再赋予初值

227B)若全局变量和某一函数中的局部变量同名,则在该函数中,c[k++]=a[i++];此全局变量被屏蔽

228C)静态全局变量可以被其他的编辑单位所引用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(n%d

229H,k);JA)3B)5C)6D)8(45)若有以下定义和语句structa{intn,m;};structast[3]={{1,20)42,19)43,21));structa*p=st;则以下错误的引用是A)(p++)->n:B)st[0].n?C)(*p)ji;D)p=&st.m;(46)假设有如卜定义:structa{intrefloatk:}dat&*p;若要使p指向dataA)p=&data.n:B)*p=data.n:C)p=(strncta*)&data.n;D)p=(structa*)data.n;(47)下面函数的功能是将指针t2所指向的线性链表,链接到11所指向的链表的末端。假定H所指向的链表非空structnode{floatx;structnode*next;};connect(structnode*tl,structnode*t2){if(tl->next==NULL)tl->next=t2;elseconnect(,t2);)要实现此功能则应该添入的选项是A)tl.nextB)++tl.nextC)tl->nextD)++tl->next(48)C语言结构体类型变量在程序运行期间A)TC环境在内存中仅仅开辟一个存放结构体变量地址的单元B)所有的成员一直驻留在内存中C)只有最开始的成员驻留在内存中D)部分成员驻留在内存中(49)有下列运算符:IC则运算的优先顺序是A)1,«,»,AB)1,八C)&JD)〜,I

230(50)最简单的交换排序方法是A)快速排序B)选择排序C)堆排序D)冒泡排序中的成员n,正确的赋值语句是

231二、填空题(1)栈和队列通常采用的存储结构是[1】。[命题目的】考查考生对数据结构基本知识的了解。【解题要点】栈和队列都属于线性表,它们一般采用顺序存储结构,也可以对它们采用链式存储结构。【考点链接】栈、数组、表采用的存储结构,各种存储结构的定义和区别。(2)在程序设计阶段应该采取【2】和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,进而用某种程序设计语言写成程序。I命题目的】让考生对程序设计有较深入的了解。【考点链接】系统设计其他阶段的内容。(3)软件结构是以【3】为基础而组成的一种控制层次结构。【命题口的】考杳考生对软件结构的了解。【解题要点】采用模块化原理可以使软件结构清晰,不仅容易设计也容易阅读和理解,模块化使得软件容易测试和调试,因而有利于提高软件的可靠性,也有利了软件的组织管理,大型程序可由不同的程序员编写不同的模块,并且可以进一步分配技术熟练的程序员编写困难的部分。【考点链接】软件结构的定义,模块操作其他的所有特点。(4)数据库系统阶段的数据具有较高独立性,数据独立性包括物理独立性和【4】两个含义。【命题目的】考查考生对数据库基本知识(数据独立性)的了解.【解题要点】数据独立性是数据与程序间的互不依赖性,即数据库中数据独立于应用程序而不依赖于应用程序。数据独立性一般分为物理独立性与逻辑独立性两个含义。【考点链接】在人工管理阶段,文件系统阶段和数据库管理阶段中数据独立性的特点.(5)数据库保护分为:安全性控制、【5】、并发性控制和数据的恢复。【命题目的】考杳考生对数据库基本知识的了解。【解题要点】安全性控制:防止未经授权的用户有意或无意存取数据库中的数据,以免数据被泄露、更改或破坏:完整性控制:保证数据库中数据及语义的正确性和有效性,防止任何对数据造成错误的操作;并发控制:正确处理好多用户、多任务环境下的并发操作,防止错误发生;恢复:当数据库被破坏或数据不正确时,使数据库能恢复到正确的状态。【考点链接】数据库的其他用途,如数据定义、数据操作和数据管理等。(6)语句printf("%f

232”,13.0*(1/5));的输出结果为[6].【命题目的】考查对手基本运算符的掌握情况。【解题要点】/表示整除,1/5为0,0乘以任何数都得零,但是与浮点型相乘,要转化为浮点型,所以结果为0.000000。【考点链接】在一个运算符的两边如果一个是字符型,一个是整型,则把字符型转换为整型之后再进行运算。(7)阅读下面语句,则程序的执行结果是17】。#include"stdio.h1'main(){inta=-l,b=l,k;if((++a<0)&&!(b-<=0))printf(M%d,%d

233M,a,b);elseprintf("%d,%d

234",b,a);)【命题目的】考查对于if语句的掌握情况。【解题要点】与运算两边的语句必须同时为真时,结果才为真,当执行完if((++a<0)&&!(b・Y=0))时,a,b的值已经发生了变化。【考点链接】++,-运算符。(8)阅读下面语句,则执行后的输出结果为【8】#include"stdio.h"main(){chara,b:for(a=,0,,b=/9,;a

235H);}【命题目的】考查对于foi•循环的掌握情况。【解题要点】for是C语言的关键字,其后的一对圆括号中通常含有三个表达式,各个表达式之间用分号隔开,这三个表达式可以是任意形式的表达式,通常主:要用于for循环控制。【考点链接】对字符型的运算实际上是对其ASCII码值的运算。(9)阅读下面程序,则执行后程序的结果为【9】#include"stdio.h"main()(inta=0,b=0;while(a<15)a++;while(b++<15);printf("%d,%d

236",a,b);)【命题目的】考查时于while循环的掌握情况。【解题要点】while是C语言的关键字,while后一对例括号中的表达式,可以是C语言中任意合法的表达式,由它来控制循环体是否执行。【考点链接】在语法上要求循环体可以是•条简单可执行语句,并且

237还要注意循环控制表达式的判断条件。(10)在使用putchar和getchar函数处理字符时,必须在程序的开头出现包含头文件的命令行是[10].【命题目的】考查对于基础知识的掌握情况。【解题要点】使用putchar和getchar函数时,必须在程序的开头出现包含头文件#include"stdio.h”的命令行。【考点链接】putchar的函数调用形式为:putchar(字符变量或字符常量);getchar函数的调用形式为:变量=getchar();getchar后的一对网括号内没有参数,但这一对圆括号不可少。(11)卜.列程序的输出结果是[11],[12].#includemain(){floata=-1.3;b=1.3;printf(M%t%f\fabs(a),fabs(b);)【命题口的】主要考杳math库函数。【解题要点】本题是求浮点数的绝对值。【考点链接】常用的math函数。(12)设有以下定义和语句,则*(*(p+2)+1)的值为【13].inta[3][2]=(10,20,30,40,50,60},(*p)[2];p=a;【命题目的】主要考杳对于通过建立行指针来引用:维数组元素的掌握情况。【解题要点】*(♦(p+2)+1)相当于访问的是a[2][1]的值。【考点链接】*(P[2]+1)、p[2][1]以及(*(p+2))[1]表达的含义都是a[2][1]的值。(13)有下列程序,功能是把输入的十进制氏整型数以十六进制的形式输出,完成程序#include"stdio.h"main(){charb[17]={"0123456789ABCDEF"};intc[50],d,i=(),base=16;longn;scanf("%ld",&n);do{c[i]=n%base;i++;n=[14];)while(n!=0);for(—i;i>=0;-i){d=[15];printf("%c",b[d]);}printf("H

238");)[命题目的】考杳字符串的实际运用的理解程度。【解题要点】字符串的综合运用。【考点链接】这是•种常用的十进制转换成十六进制的方法,应该掌握。(14)现有如下程序段,则程序段的输出结果为[16].#include"stdio.h"intfun(){staticintk;returnk;)main(){intm;m=fun();printf("%d

239",m);}【命题目的】考查对于静态存储类的局部变量的掌握情况。【解题要点】在整个程序运行期间,静态局部变量在内存的静态存储区中占据着永久性的存储单元。即使退出函数以后,下次再进入函数时,静态局部变量仍使用原来的存储单元,如未赋初值,则系统会白动赋值为0.【考点链接】C语言中,有两种存储类别:一种是自动类;一种是静态类。局部变量既可以说明成自动类型;也可以说明成静态类型;而全局变量只能是静态类型。(15)现有如下定义:structaa{inta;floatb;charc;}*p;现需用malloc函数动态的申请一个structaa类型大小的空间(由p指向),则定义的语句为:[17]。【命题目的】考查对于动态空间申请函数的掌握情况。【解题要点】ANSIC标准规定malloc函数的返回值类型为void*,函数的调用形式为:malloc(size)要求size的类型为unsignedint.由于返回类型为void*,所以在调用函数时,必须利用强制转换将其转换为所需要的类型。【考点链接】free函数的作用是释放申请的内存空间。(16)有如图所示的双链表结构,请根据图示完成结构体的定义:Ihcaddatarchild{intdata;[18])node;【命题目的】考查对于结构体对链表的定义掌握情况。【解题要点】结构体对链衣的定义。(17)当调函数frend从磁盘文件中读取数据时,若函数数的返回时为5,

240则表明【19】:若函数的返回值为0,则表明【20].【命题目的】考杳对于函数基本操作的掌握情况。【解题要点】fread函数的调用形式为fread(buffer,size,cout.fp);其中

241buffer是数据块的指针,size表示每个数据块的字节数。count用来指定每读、写一次,输入'输出数据块的个数(每个数据块有size个字节)。fp是文件的指针。选择题(1)卜.列数据结构中,按先进后出原则组织数据的是01-0506-10CC11-1516-20CAD21-2526-30D31-35C36-40CABBB41-45DCC46-50CA)线性链表B)栈C)循环链表D)顺序表(2)具有3个结点的二叉树有A)2种形态B)4种形态C)7种形态D)5种形态(3)设有下列二叉树:对此二叉树前序遍历的结果为A)ZBTYCPXAB)ATBZXCYPC)ZBTACYXPD)ATBZXCPY(4)结构化程序设计主要强调的是A)程序的规模B)程序的效率C)程序设计语言的先进性D)程序易读性(5)程序的3种基本控制结构是A)过程、子过程和分程序B)顺序、选择和重复C)递归、堆栈和队列D)调用、返回和转移(6)下列叙述中,不属于测试的特征的是A)测试的挑剔性B)完全测试的不可能性C)测试的可靠性D)测试的经济性(7)需求分析中开发人员要从用户那里了解A)软件做什么B)用户使用界面C)输入的信息D)软件的规模(8)下列关系模型中,能使经运算后得到的新关系中属性个数多于计算机等级考试二级C语言考前密卷⑻一、选择题原来关系中属性个数的是A)选择B)连接C)投影D)并(9)卜列叙述中,正确的是A)用E-R图能够表示实体集间一对一的联系、一对多的联系和

242多对多的联系B)用E-R图只能表示实体集之间一对一的联系C)用E-R图只能表示实体集之间•对多的联系D)用E-R图表示的概念数据模型只能转换为关系数据模型(10)“年龄在18〜25之间”这种约束是属于数据库当中的A)原子性措施B)•致性措施C)完整性措施D)安全性措施(11)以下说法错误的是A)高级语言都是用接近人们习惯的自然语言和数学语言作为语言的表达形式B)计算机只能处理由。和1的代码构成的二进制指令或数据C)C语言源程序经过C语言编译程序编译之后生成•个后缀为.EXE的:进制文件D)每一种高级语言都有它对应的编译程序(12)算法是指为解决某个特定问题而采取的确定且有限的步骤,下面不属于算法的五个特性的是A)有零个输入或多个输入B)高效性C)有穷性D)确定性(13)已知inta=6;则执行a+=a-=a*a;语句后,a的值为A)36B)0C)-24D)-60C)voidunion_342D)text,txt_023_3ew(15)下列表达式中,结果为5的是A)6*5%6B)5*-2+15C)5+75%10D)6+-2/3(16)下列常量中,为不合法的实型常鼠表示的是A).0032B)0.0C)0.3242E8D).E3(17)关于C语言的主函数描述正确的是A)C程序可以有多个main函数B)C程序必有•个而且只能有•个main函数C)C程序可以没有main函数D)C程序的执行不一定在main函数开始执行(18)已知inta=l,b=-l;则语句printf("%d

243",(a-,++b));的输出结果是A)-1B)0C)1D)语句错误(19)已知inta,b;doublec;则以下语句中错误的函数调用是A)scanf("%d,%x,%lf',&a,&b,&c);(14)下面各选项中,均是C语言标识符的选项组是B)scanf("%d,%d,%le",&a,&b,&c);A)forchinatoC)scanf("%o,%x,%o",&a,&b);

244B)lone_123short56doA)scanf("%d,%o,%e",&a,&b,&c);

245(20)已知x,y,z均为整型变量,且值均为1,则执行语句{inti=6;++xll++y&&++z;后,表达式x+y的值为while(i—)A)1printf;B)2printf(M

246M);}C)3A)531D)4B)420(21)若intk=8;则执行下列程序后,变量k的正确结果是C)654321main()D)死循环{intk=8;(24)阅读下列程序,则执行结果是switch(k)#include"stdio.h"{case9:k+=l;main()case10:k+=l;{inta=0,b=0,c=0,i;case1l:k+=l;break;for(i=0;i<4;i++)default:k+=l;}switch(i)printf(H%d

247';k);)(case0:a=i++;A)12case1:b=i++;B)11case2:c=i++;C)10case3:i++;}D)9printf(”%d,%d,%d,%d

248”,a,b.c,i);)(22)若inli,j;,则for(i=j=0;i<10&&j<8;i++,j+=3)控制的循环体执A)0,134行的次数是B)123,4A)9C)0,125B)8D)0,2,3,4C)3(25)下面程序的运行结果是D)2#include"sldio.h**(23)下列程序的输出结果是main()#include"stdio.h"{intj,i,k=0;main()for(j=50;j<=60;j++)

249for(i=2;i=j-l){printfC'%d"j);{intk;k++;}})k=(a-b)*(a+b);A)5359printf("%d

250”,k);)B)5953A)0C)3595B)184D)9535C)175(26)已知charch=,C;则以下表达式的值是D)编译不通过ch=(ch>='A'&&ch〈=Z)?(ch+32):ch;(29)阅读卜.面程序,则执行后的输出结果为A)A#include"stdio.h"B)afun(inta,intb)C)Z{ints;D)cs=a*b⑵(27)以下描述错误的是printf(n%d

251M,s);)A)C程序中,函数可以直接或间接的调用自己main()B)函数调用时,函数名必须与所调用的函数名字完全一致{inta=10,b=16;C)函数说明语句中的类型必须与函数返回值的类型•致fun(a,b);)D)实参数可以与形参个数不一致A)10(28)阅读下面程序,则执行后的结果为B)16#include"sldio.h"C)160main()D)80{fun3(funl(),fun2());}(30)阅读下面程序,则程序执行后的结果为fun1()#include"stdio.h"{intk=20;main()returnk;}{inta=4,b=6,c=7;fun2()doubled,fun(int,int,int);{inta=15;d=fun(a,b,c);{if(!(k%10))printf;returna;|

252printf("%lf

253",d);}doublefun(inia,intb,intc){doubles;s=a%b*c;returns;)A)27B)27.000(X)0C)28D)28.000000(31)卜列不合法的指针变量的定义是A)int*_k;B)char*_245;C)int*p;D)double*5Js(32)下列关于指针变量赋空值的说法错误的是A)当赋空值的时候,变量指向地址为0的存储单元B)赋值语句可以表达为变量名='01C)赋值语句可以表达为变量名=0;D)一个指针变量可以被赋空值(33)阅读下面程序,则执行后输出的结果为#include"sldio.h"voidfun(int*a,int*b){intm;m=(*a+*b)*(*a+*b);m+=(*a-*b)*(*a-*b);printf("%d

254”,m);}main(){inta=5,b=6,*x=&a,*y=&b;fun(x,y);}A)120B)121C)122D)123(34)阅读下面程序,则输出结果是#includeMstdio.hMvoidfun(int*a,int*b){intc=20,d=25;*a=c/3;*b=d/5;)main(){mta=3,b=5;fun(&a,&b);printf("%d,%d

255”,a,b);)A)6,5B)5,6C)20,25D)3,5(35)以下对一维数组c进行正确的定义初始化的语句是A)intc[10]=0;B)intc[10]={0}*10;C)intc[1]={0,0,0,0,0A0|;D)intc[10]={0);(36)以下二维数组c的定义形式是A)intc[3][]B)floatc[3,4]C)doublec[3][4]

256D)floatc(3)(4)main()(37)阅读下列程序,则执行后输出的结果是{inta[2]={12,23),c;#include"sldio.h"fun(a,a+l,&c);intk=l;printf(M%d

257,\c);}main()则程序的输出结果为(fun(k);A)23printf("%d

258'\k);}B)12fun(intk)C)0{k++;D)35k=k*6;|(41)若有以下语句,则正确的描述是A)1chara[]=MtoyouM;B)2charb口=CtVoVyVo?ur);C)6A)a数组和b数组的长度相同D)12B)a数组长度小于b数组长度(38)已知#defineM2;的宏定义,执行语句1<=乂*5;后,k的值是C)a数组长度大于b数组长度A)10D)a数组等价于b数组B)5(42)已知:chara[15],b[15]={"Ilovechina”);则在程序中能将C)2字符串Ilovechina赋给数组a的正确语句是D)以上答案都不对A)a=HIlovechina";(39)已知:intc[3][4];则对数组元素引用正确的是B)strcpy(b,a);A)c[1][4]C)a=b;B)c[1.5][0]D)strcpy(a,b);C)c[1+0][0](44)阅读下面程序,则执行后的结果为D)以上表达都错误#include"stdio.h*'(40)现有如下程序段main()#include"stdio.h',{char*str="abcdefghijklmnopq";voidfun(int*a,int*b,int*c)while(*str-H-!=V);{*c=*a+*b;Jprintf(M%c

259M,*str);}

260A)fB)1010()B)aC)10101C)eD)10110D)q(47)阅读如卜程序段,则执行后程序的输出结果是(45)现有如下程序段#include#include"stdio.h"main()intfun(intkjnt*m)(structa{intx;inty;)num[2]={{20,5},{6,7)};{if(k%3)*m=k*k;printf(M%d

261*

262um[0].x/num[0].y*num[1].y);)else*m=k/3;}A)0main()B)28{int(*p)(int,ini♦),m;C)20p=fun;D)5(*p)(78,&m);(48)阅读程序段,则执行后的输出结果为printf("%d

263”,m);}#include"stdio.h"则程序段的输出结果为typedefunion{longx[2];A)24inty[4];B)25charz[8];}atx;C)26typedefstructaa{longx[2];D)27inty[4];(46)阅读下列程序,则执行后的输出结果为charz[8];)stx;#include"sldio.h"main()fun(intx){printf(**union=%d,structaa=%d

264*\sizeof(atx).sizeof(stx));){if(x/2>0)fun(x/2);A)union=8,structaa=8printf(”%d”,x%2);)B)union=8,structaa=24main()C)union=24,structaa=8{fun(20);D)union=24,structaa=24putchar(r

2659;}(49)阅读下列程序段A)11100include"stdio.h"

266typedefstructaawhile(strlen(gets(p))>0){inta;structaa*next;}M;voidset(M*k,intijnt*b){intj,d=O;for(j=l;j

267'\table);)则卜一面的表达式在table处,能使程序执行后,打印输出数据45的是A)p->next->aB)-H-p->aC)(*p).a++D)p++->a(50)阅读下面程序,程序实现的功能是(al23.txt在当前盘符下已经存在)#include"stdio.hnvoidmain(){FILE*fp;inta[10],*p=a;{fputs(a,fp);fputs(M

268M,fp);}fclose(fp);}A)从键盘输入若干行字符,按行号倒序写入文本文件al23.txt中B)从键盘输入若干行字符,取前2行写入文本文件al23.txt中C)从键盘输入若干行字符,第一行写入文本文件al23.txt中D)从键盘输入若干行字符,依次写入文本文件al23.txt中二、填空题(1)排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、【I】和选择排序等。【命题目的】需要考生记住常见的排序方法。【解题要点】常见的排序方法有插入排序(包括简单插入排序法和希尔排序法等)、交换排序(包括冒泡排序和快速排序法等)和选择排序(包括简单选择排序和堆排序等)。【考点链接】常见的排序方法及其作用机制和区别。(2)当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算。这种情况称为【2】.【命题目的】本题考查了队列的基本性质。【解题要点】入队运算是指在循环队列的队尾加入一个新元素。这个运算有两个基本操作:首先将队尾指针进一(即rear=rear+l),并当ma=m+l时置reaal;然后将新元素插入队尾指针指向的位置。当循环队列非空(s=l)时且队尾指针等于队头指针时,说明循环队列已

269满,不能进行入队运算,这种情况称为“上溢fp=fopen(*'al23.txt",HwM);

270main()(3)[3]是一种信息隐蔽技术,目的在于将对象的使用者和时象的设计者分开。【命题目的】本题考杳了面向对象技术中的一些基本概念。【解题要点】面向对象技术中包括以下几个菸本概念,即对象、类、方法、消息、继承和封装,其中封装是•种信息隐蔽技术,目的在于将对象的使用者对象的和设计者分开。(4)为了便于对照检查,测试用例应由输入数据和预期的【4】两部分组成。【命题目的】本题主要考查测试的步骤。【考点链接】测试的基本方法和步骤。(5)[5]是从二维表列的方向进行的运算。【命题目的】本题考查了关系运算的基本知识。【解题要点】在关系模型的数据语言中,一般除了运用常规的集合运算,(并、交、差、笛标尔积等)外,还定义了一些专门的关系运算,如投影、选择、连接等,前者是将关系(即二维表)看成是元组的集合,这些运算主要是从二维表的行的方向来进行的;后者主要是从:维表的列的方向来进行的运算。两者统称为关系代数。(6)定义inta=5.b=20;若执行语句printf<"%d

271”,++a*--b/5%13);后,输出的结果为【6】。解析:++和-做前缀使用的时候,先对变量进行增1或减1,之后进行其他的运算,之后按照同级运算符自左向右依次运算。(7)执行程序时的输入为123456789,则程序的运行结果为【7】»{inta,b;scanf<"%2d%*2d%ld",&a,&b);printf("%d

272",a-b);)解析:按照函数scanf中的格式控制符的描述:"%2d"控制前2个数字赋给变量a,变量a的值为12,"%ld"控制将随后的1个数字作为输入数据存入变量b中,变量b的值为5,所以随后的输出为7。注意在%和格式控制符号之间加*号,表示的是跳过相对应的输入数据。(8)阅读卜.面程序,则在执行时候的输出为【8】。#include"stdio.h"main(){intx=l,y=2,z=0;if(x=2)z=x,x=y,y=z;printf("%d,%d

273",x,y);}解析:if语句的执行过程为:首先计算紧跟在if后面一对圆括号中的表达式,如果表达式的值为非零,则执行其后的if子句,然后去执行if语句后的下•个语句,如果表达式为零,则跳过if子句直接执行if语句后的下一个语句,if(x=2)的值为真,即x的值为2。(9)语句printf("%d

274",'H'-'0'+64);的执行结果为[9].解析:在C程序中的字符量可参与任何整数运算,在运算的时候都是以ASCH值进行的。(10)阅读卜面程序,则程序的执行结果为[10].#include"stdio.h"

275main()

276fun(a);prinlf("%d

277”,a);}fun(intx){x=50;)解析:函数调用的时候,函数名字必须与所调用的函数名完全一致,形参与实参类型要•致,在没有给出函数返回值类型的情况下,默认为整形,当返回值为整型放到主函数后面时,可以不需要事先说明就调用这个函数。(11)以下程序的输出结果是[11]。intfun(intx,inly,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

278”,c,d);}解析:通过地址传递可以在被调函数中对调用函数中的变量进行引用,通过地址的传递,在经过函数调用以后,改变了c.d变量的值。(12)卜面程序是求出数组arr的两条对角线上元素之和,请填空。#include"stdio.h"main(){intarr[3][3]={2,3,4,8,3,2,798},a=0,b=0,i,j;for(i=0;i<3;i++)for(j=0;j<3;j-H-)for(i=0;i<3;i++)for([13];j>=O;j-)if([14])b=b+arr[i][j];printf(M%d,%d

279",a,b);}解析:由于是求对角线元素的和,所以(121是判断是否为对角线元素的,填i=j这个判断条件;对于次对角线的求和,初始化的时候应该是从数组的列最大开始,由于判断条件是>=0,所以初始化时候应该为最大值减1,即j=2,所以【13】应填j=2;【14】是对次对角线的判断,所以填i+j==2。(13)下面程序的功能是:对字符串从小到大进行排序并输出,请填空。#include"string.h"#include"stdio.hnsort(char*a[]jnln){intij;char*p;for(j=l;j<=n-l;j-H-)for(i=0;[15];i++)if(【16]>0){p=a[i];a[i]=a[i+1];a[i+1]=p;]Jmain(){inti;char*book[]

280if([12])a=a+arr[i][j];=("itisme',,,'itisyou","howareyou''.'Tine",Mgoodnight".r'goodbye*');

281head=q;|)sort([17]);{q->next=head;for(i=0;i<6;i++)printf(M%s

282M,book[i]);)解析:这个题目其实用的是冒泡排序法,每一次都找一个最大的,之后顺序的从头开始排列。所以【15】是一次循环的判定条件,填ivn・j,【16】则是字符串的比较,由于只给了•个空,所以必然要调用字符申处理函数的,所以填sircmp(a[i],a[i+1]),[17]是调用函数的函数头的填写,有两个要填写的项,一个是指针字符数组的传递,一个是整型变量的传递。(14)下面的函数是完成1〜n的累加,完成函数。a(intk){if(k<=0)printf("error

283");if(k=l)[18];else[19];)解析:由于题口没有给循环语句,所以实现累加一定是用递归算法。(15)阅读下列程序,则程序实现的功能是【20】。#include"stdio.h"structnode{chardata;structnode*next;)*head;fun(structnode*q){if(head==NULL)(q->next=NULL;head=q;)elsemain(){charch;structnode*p;head=NULL;while((ch=getchar())!='

284'){p=(structnode*)malloc(sizeof(structnode));p-xiata=ch;ftin(p);)p=head;while(p!=NULL){printf(H%c'\p->data);p=p->next;))解析:本题目的功能是从键盘输入一行字符,调用函数建立反序的链表,然后输出整个链表,从主:函数开始依次向下对程序进行分析,分析初始化状态的程序,之后再分析函数的功能。选择题01-0506-1011-1516-20DBBDC21-25DC

28526-30DDCDD

28631-35DACAD36-40CADCD41-45C46-50B计算机等级考试二级C语言考前预测题(9)(1)根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据结构分成A)动态结构和静态结构B)紧凑结构和非紧凑结构C)线性结构和非线性结构D)内部结构和外部结构(2)设一棵二叉树中有3个叶子结点,有8个度为1的结点,则该二叉树中总的结点数为A)12B)13C)14D)15(3)在下列儿种排序方法中,要求内存量最大的是A)插入排序B)选择排序C)快速排序D)归并排序(4)卜.列叙述中,不属于结构化程序设计方法的主要原则的是A)自顶向下B)由底向上C)模块化D)限制使用goto语句(5)卜列不属于软件调试技术的是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)软件工具(10)视图设计一般有3种设计次序,下列不属了视图设计的是A)自顶向下B)由外向内C)由内向外D)白底向上(11)下列常数中不能作为C语言常量的是

287A)强行排错法B)2.5e-0.2A)Oxabc

288C)32D)0747(12)设int型的数据长度为2个字节,则unsignedint类型数据的取值范围是A)-127-128B)0-255C)0〜65535D)0〜32768(13)已知intt=6,s;则执行语句s=(++t)+(t++);后,s的值是A)12B)13C)14D)15(14)已知intx=6,y=2,z;则执行表达式z=x=x>y后,变量z的值为A)0B)1C)4D)5(15)已知inti,a;执行语句i=(a=3,a++,--a,a+4,a+5,++a);后,变量i的值为A)2B)3C)4D)5(16)下列说法中正确的是A)一个C程序是从命令行开始执行的B)C程序中有些执行语句不用分号(;)结束D)命令行必须用开头,最后不能加”;”号,命令行不是C程序中的语句(17)已知intx=2;执行语句x*=x+=++x;后,x的值是A)16B)26C)36D)46(18)已知inta=20,b=5;则执行以下语句后的输出结果是printfC%d

289';a%=(b%=2));A)0B)1C)2D)3(19)现有以下程序段#includemain()E)inta,b,c;scanf(%=%*d%d,b=%d%*d,c=%d",&a,&b,&c);printf(Ha=%d,b=%d,c=%d

290'\a,b,c);)若输出的结果为a=20,b=30,c=40,则以下能够正确输入数据的是A)a=10]20,b=20]30,c=40B)20,30,40C)a=2O,b=3O,c=4OD)a=10]20,b=30]20,c=40[注]表示空格,vCR>表示回车(20)已知intx=5,y=3;则表达式(xlly)&&78的结果为

291A)1C)分号不是C语句的一部分,是C语句之间的分隔符B)0

292D)78D)40,50,#(21)有如下程序段(23)若有定义inlk=10;则下列程序的输出结果为#include"sldio.h"do{main()printf("%d\k-);)while(!k);(inta=10,b=50,c=30;A)9a=a>30?l:2;B)10b=b>30?l:2;C)10987654321c=c>30?1:2;D)没有输出printf(*'%d,%d,%d

293",a,b,c);}(24)阅读下列程序段,则程序的输出结果是则执行结果为#include"stdio.h"A)2,1,2main()B)1,2,1{inta=10,b=10,k;C)1,1,2for(k=0;a>8;b=++k)D)2,1.1printf("%d,%d.”,a-,--b);(22)阅读如下程序段printfe

294H);}#include"stdio.h'1A)10,10,10,0,main()B)10,9,9,0,{inta=45,b=40,c=50,d;C)10,10.9,1,d=a>30?b:c;D)9,9,91,switch(d)(25)下列程序的运行结果是(case30:printf(*'%d;\a);#include"stdio.h1'case40:printf("%d,”,b);main()case50:printf(;{inta,b,m;default:printf("#");)|fbr(a=5;a>=l;a-)则输出的结果是{m=0;A)40.50,for(b=a;b<=5;b++)B)50,#m=m+a*b;)C)40,#C)5

295(29)现有如F程序,则程序的输出结果为#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(M%d

296\c);}A)随机数B)80C)28D)14(30)阅读如下程序段,则程序段的执行后的输出结果为#include"stdio.hHmain(){chare;inti;charcount();intp(char);for(i=0;i<30;i++)c=count();p(c);)charcount()(charstr='A';str+=l;return(str);)A)30B)15C)20D)10(26)有字符串如下,”

297\\\407asl\"\xabc”厕字符串的长度为A)6B)7C)8D)9(27)阅读下面程序段#include"stdio.h"main()E)chare;F)(NR)12+4;putchar(c);)输出结果为A)MB)NC)0D)Q(28)下列说法中不正确的是A)C语言规定,不能在一个函数的内部再定义函数B)在没有声明函数返回值类型的情况下,C默认的函数返回值类型为int型C)函数的类型可以是整型、实型、字符型,但不能是指针型

298D)函数可以没仃形参,但函数名后的一对网括号不能省略

299p(chare){putchar(c);putchar('

300');]A)AB)BC)aD)b(31)阅读如下程序段,则执行后的结果为#includeHstdio.hMmain(){inta,*p,*q,**w;p=&a;q=&a;w=&p;*p=5%6;*q=5;**w=3;printf(*'%d

301H,a);}A)无确定值B)1C)5D)3(32)现有定义inta=10,*p=&a;则不能使a的内容增1的语句是A)*p++;#include"sldio.h**voidJFT(int*a,int*b,int*c,int*d,int*e){intij.k,m;for(i=0;i<*a;i++)for(j=O;j<*b;j++)for(k=0;k<*c;k++)for(m=0;m<*d;m-H-)*e++;)main(){inta=l0,b=l0,c=10,d=10,e=0;JFT(&a,&b.&c,&d,&e);printf("%d

302”,e);}则程序段的输出结果是A)10000B)1000C)10001D)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});B)*p=*p+l:C)intc[3][2]={(3),{3},{4},{5(};C)++*p;D)intc[][3]={{3),{),{3});D)*p+=l;(36)阅读下列程序段,则程序段实现的功能是#include"stdio.h"(33)现有下列程序段

303main(){intk[10];intj;for(j=0;j<10;j++)scanf("%d",&k[j]);for(j=9;j>=0y-)printf(M%d.*\k[j]);)A)输入10个数据的顺序输入并输出B)输入10个数据的逆序存放C)输入1()个数据的逆序输出D)以上叙述均错误(37)阅读程序,则执行后的结果为#include"stdio.hHmain(){inti,m,n;for(i=0;i<3;i++){m=testl();n=test2();)printf(”%d,%d

304”,mm);}testl(){intx=0;X-H-;returnx;}test2(){staticintx=0;x++;returnx;JA)1,1B)1,3C)3,1D)3,3(38)以卜-关于宏替换叙述中,错误的是A)宏替换占用编译时间B)替换文本中可以包含已定义过的宏名C)宏名可以由+号组成D)宏替换只能是字符替换(39)阅读下面程序,则程序的输出结果为#include"stdio.h"main()1intc[]={1,2,3,456);int*p;p=c;printf(,,%d?\*p);printf(,,%d

305,\*++p);}A)1,2B)2,1C)1JD)2,2(40)有如卜定义,则函数fun的首部可以是#defineN5#defineM6main(){doublec[M][N];fun(c);)A)fun(doublea)B)fiin(doublea[M]口)

306A)fun(double*a)B)fun(double(*a)[N])(41)下面关于字符串的说明中,错误的是A)chara[15]="jft";B)chara[]C)char*a=:,'jftn;D)chara口=<%£,'};(42)已知:chara[20]=Mabc",b[20]="defghi”;则执行下列语句后的输出结果为printf('*%d'\strlen(strcpy(a,b)));A)11B)6C)5D)以上答案都不正确(43)阅读如卜程序段,则程序在先后输入love和china后,输出结果是#include#includemain(){chara[30],b[30];intk;gets(a);gets(b);k=strcmp(a,b);if(loO)puts(a);elseif(k<0)puts(b);)A)loveB)chinaC)lovechinaD)没有输出结果(44)阅读下面程序,则执行后的结果为#includeMstdio.hM#include"string.h"#defineN10#defineM10char*find(char(*a)[M],intn){char*q;inti;q=a[0];for(i=0;i

307D)结构中最后一个成员所需内存量

308(46)有以下说明语句structa{charx;doubley;)ptype;则卜一列选项中错误的是A)a是用户定义的结构体标识B)structa是用户定义的结构类型C)plype是用户定义的结构类型名D)x和y都是结构成员名(47)已知有如下定义:structa{charx;doubley;}data,*t:,若有t=&data,则对data中的成员的正确引用是A)(*t).data.xB)(*t).xC)t-xlata.xD)t.data.x(48)若有以下程序段,则选项中值为2的是structa{intn,*next;};intx=l,y=2,z=3;structas[3],*p=s;s[0].next=&x;s[1].next=&y;s[2].next=&2;A)*(p++)->nextB)*(++p)->nextC)(*p)jiextD)(p++)->next(49)卜面程序段的输出为#include"stdio.h"main(){inta=8,b;b»=l;printf(M%d,%d

309\a,b);}A)4,4B)4.0C)8,4D)8,0(50)阅读下面程序,此程序的功能为includeMstdio.h"main(intargc,char*argv[]){FILE*pl,*p2;intc;pl=fopen(argv[1]Jr");p2=fopen(argv[2]「a");c=fseek(p2,0L,2);while((c=fgetc(pl))!=EOF)fputc(c,p2);fclose(pl);fclose(p2);)A)实现将pl打开的文件中的内容复制到p2打开的文件B)实现将p2打开的文件中的内容复制到pl打开的文件C)实现将pl打开的文件中的内容追加到p2打开的文件内容之后D)实现将p2打开的文件中的内容追加到pl打开的文件内容之后二、填空题<1)算法的工作最大小和实现算法所需的存储单元多少分别称为算法的【I】Ob=al1;

310【命题目的】本题考杏了考生对算法的理解程度。整性、参照完整性和用户定义的完整性。火中,前两种完整性约束由【解题要点】算法的复杂性是指对一个在有限步骤内终止算法和所需存储空间大小的估计。算法的计算量是算法的时间复杂性,算法所需存储空间大小是算法的空间复杂性。【考点链接】算法的各种属性及其相互作用.(2)数据结构包括数据的逻辑结构、数据的【2】以及对数据的操作运算.【命题目的】本题考查了数据结构所包括的儿个方面.【解题要点】数据结构包括3个方面,即数据的逻辑结构、数据的存储结构及对数据的操作运算。【考点链接】数据结构包含的3个方面及各方面之间的关系。(3)可以把具有相同属性的一些不同对象归类,称为【3】.【命题目的】本题考杳了对象的一些基本特征。【解题要点】类描述的是具仃相似性质的一组对象;把具有相同属性的一些不同对象归为类,我们称之为对象类。(4)软件工程包括3个要素,分别为方法、工具和【4】。【命题目的】本题考查软件工程的3要素、【解题要点】软件工程包括3个要素,即方法、工具和过程。方法是完成软件工程项目的基础上的技术手段;工具支持软件的开发、管理、文档生成;过程支持软件开发的各个环节的控制、管理。【考点链接】软件工程的3个要素及各要素的作用。(5)由关系数据库系统支持的完整性约束是指【5】和参照完整性。【命题目的】掌握关系的完整性约束。【解题要点】关系的完整性约束指关系的某种约束条件,包括实体完关系数据库系统自动支持。【考点链接】关系的各种性质。(6)表达式3*7/2+7/2%5的值为【6】0解析:算术运算符的优先级别依次为(由高到低):*/,%,+,”(7)阅读下面的程序,当程序在执行时,如果输入的是A,,则输出结果为【7】.#include"stdio.h"main(){chara;a=getchar();switch(a){case65:printf("%c"/A");case66:printf("%c",'B');default:printf("%s

311","other");}}解析:switch语句中的某一个标号被选中,将依次执行这个语句到default语句之间的所有语句。如遇到break语句之后就跳出了switch语句。(8)以下程序的输出结果是[8】。main()

312{chara[]="abcdefg";charb[10]="abcdefg";printf("%d,%d

313",sizeof(a),sizeof(b));}解析:当维数组省略维数时,系统会按数组实际元数分配内存空间,如规定了一维的大小,则按维数分配内存空间的大小.

314(9)阅读下面程序段,则执行后的输出结果为【9】。#include"stdio.h"main(){inta=l;for(;a<=15;)if(-H-a%5!=2)continue;elseprintf("%d",a);printf("\iT);}解析:continue是结束本次循环,即从continue开始到最后的执行,直接执行循环判定条件。(10)以下程序的输出结果是【10】omain(){intm=2,n=6;fbr(;n>=0;n-)m*=n;printf(H%d

315';m);)解析:for语句执行最后时n的值为0,所以m的值也为0。(11)阅读下列程序,则执行后的结果为[111o#include"stdio.h"fun(intx,inty){intz;z=x;x=y;y=z;}main(){inta,b;a=100;b=640;printf(M%d,%d

316M,a,b);)解析:当传递数据值的时候,在被调用函数内部不能改变调用函数的变量的值。(12)阅读以下程序,使程序输出结果为30,4.000000,请填空。#include"stdio.hHmain(){inta=30,b=40,c;double[12],s;s=fun(&a,&b,&c);printf(M%d,%lf

317';c,s);)doublefun(int*a,int*b,[13]){*c=*a%*b;return(4.0);}解析:函数说明的一般形式为:类型名函数名(参数类型I,参数类型2,……)o(13)卜.面程序段的功能是:从键盘上输入两个字符串,对两个字符串分别排序;然后将它们合并,合并后的字符串按ASCII码值从小到大排序,并删去相同的字符。请填空。#include"stdio.h*'fun(char*x,char*y,char*z){chart,*p;p=z;while(*x!=,\0,&&*y!=,\09{t=*x<*y?*x++:*y<*x?*y++:[14];

318if(*p—\09*p=t;fun(a,b);elseif(i!=*p)*++p=t;)

319if(*x!='\0')while(*x!=,\09if(*x!=*p)*++p=*x++;elsex++;if(*y!='\0')while(*y!='\09if(*y!=*p)*++p=*y++;elsey++;*++p=[15];)sort(char*s){inti,j,k;chart,*p;p=s;for(k=O;*p!八0,;k++)p++;for(i=O;is[j]){[161))main(){charsi[100],s2[100],s3[200];scanf;scanf(',%s,\s2);sort(si);sort(s2);s3[0]八(X;fun(sl,s2,s3);printf(H%s

320\s3);}解析:根据题目的要求认真阅读程序,找到各个部分的功能所在,(14)下面函数是一个求阶乘的递归调用函数。请填空。intfun(intk){if(k=l)[17];elsereturn([18]);}解析:解这个题目应该首先写递归公式,之后很容易得出答案。(15)以下函数set用来建立一个带头结点的单向链表,新产生的结点总是插入在链表的末尾。单向链表的头指针作为函数值返回,请填空。structnode{chardata;structnode*next;};structnode*set(){structnode*tl,*t2,*t3;charch;tl=(structnode*)malloc(sizeof(structnode));t3=t2=tl;ch=getchar();while(ch!=,

321。{t2=[19]malloc(sizeof(structnode));t2->data=ch;t3->next=t2;t3=t2;ch=getchar();}t3->next=f\O';[20])解析:动态申请的返回值是void*类型,所以在使用动态申请函数的

322这样就很容易做出答案。时候都要在前面加上适当的强制类型转换,使它的返回值有意义。

323A)p->next=NULL01-05CBDBBB)p=NULL06-10BBBBBC)p->next=headD)p=head11-15BCCBC(3)已知数据表A中每个元素距其最终位置不远,为节省时间,应采用的算法是16-20DCADCA)堆排序B)直接插入排序21-25ADBBBC)快速排序D)直接选择排序26-30DACDB(4)对建立良好的程序设计风格,下面描述正确的是A)程序应简单、清晰、可读性好31-35DADBCB)符号名的命名只要符合语法C)充分考虑程序的执行效率36-40CBCADD)程序的注释可有可无(5)下列不属于结构化分析的常用工具的是41-45DBABAA)数据流图B)数据字典46-50CBBCCC)判定树D)PAD图计算机等级考试二级c语言考前预测题(10)(6)在软件生产过程中,需求信息的给出是选择题(2)非空的循环单链表head的尾结点(由p所指向),满足A)程序员(1)下列叙述中正确的是B)项口管理者A)线性表是线性结构C)软件分析设计人员B)栈与队列是非线性结构D)软件用户C)线性链表是非线性结构(7)卜列工具中为需求分析常用工具的是

324D)二叉树是线性结构A)PAD

325B)PFDC)N-SD)DFD(8)NULL是指A)0B)空格C)未知的值或无任何值D)空字符串(9)数据库的故障恢复•般是由A)数据流图完成的B)数据字典完成的C)DBA完成的D)PAD图完成的(10)下列说法中,不属于数据模型所描述的内容的是A)数据结构B)数据操作C)数据查询D)数据约束(11)C语言程序的基本单位是A)程序行B)语句C)函数D)字符(12)卜.面四个选项中,均是合法整型常量的选项是A)160-Oxffff011B)-OxcdfOlaOxeC)-01986,0120668D)-0x48a2e5Ox(13)以卜选项中合法的用户标识符是A)longB)_2TestC)3DmaxD)A.dat(14)假定x和y为double型,则表达式x=2,y=x+3/2的值是A)3.5()0000B)3C)2.000000D)3.(XMXX)0(15)以下变量x,y,z均为double类型且已正确赋值,不能正确表示数学式子x+y+z的C语言表达式是A)x/y*zB)x*(1/(y*z))C)x/y*1/zD)x/y/z(16)设x,y,t均为int型变量,执行语句:x=y=3;t=++xll++y;完成后,y的值为A)不确定B)4C)3D)I(17)已知i,j,k为ini型变量,若从键盘输入:1,2,女回车〉,使i的值为1,j的值为2,k的值为3,以下选项中正确的输入语句是A)scanf("%2d,%2d,%2d",i,j,k);B)scanf(”%d%d%d”,&i,&j,&k);

326A)5C)scanf("%d,%d,%d",&i,&j,&k);D)scanf("i=%dj=%d,k=%d",&i,&j,&k);(18)若变量已正确定义并赋值,下面符合C语言语法的表达式是A)m:=5B)c=b=a=lC)float8%5D)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=3B)x=3.6,i=3C)x=3,i=3D)x=3.6OOOOOj=3.OOOO(X)(20)若执行下面的程序时,从键盘上输入5和2,则输出结果是main(){inta,b,k;scanf("%d,%d;k=a;if(a

327",k);B)3C)2D)0(21)C语言中while和do-while循环的主要区别是A)do-while的循环体至少无条件执行■次B)while的循环控制条件比do-while的循环控制条件更严格C)do-while允许从外部转到循环体内D)do-while的循环体不能是复合语句(22)以卜.程序的输出结果是main(){intx=l,y=3;printf("%d,",x++);{intx=0;x+=y*2;printf(”%d,%d,”,x,y);)printf("%d,%d

328”,x,y);)A)1.6,3』,3B)1,636,3C)1,6,323D)173,2,3(23)下面程序输出的结果是main(){inti;inta[3][3]=[1,2,345,6,7,8,9};for(i=0;i<3;i++)printf("%d",a[2-i][i]);

329}returnstr2;A)159)B)753A)求字符串的长度C)357B)比较两个字符串的大小D)591C)将字符串strl复制到字符串str2中(24)请阅读以下程序:D)将字符串strl接续到字符串str2中main()(27)下面函数调用语句含有实参的个数为{inta=5,b=0,c=0;func((exp1,exp2),(exp3,exp4,exp5));if(a=b+c)printf(H***

330");A)1elseprinif(H$$$

331M);B)2)C)4以上程序D)5A)有语法错不能通过编译(28)下面程序段的运行结果是B)可以通过编译但不能通过连接char*s="abcdeH;C)输出***s+=2;printf("%d”,s);D)输出$$$A)cde(25)以下程序的输出结果是B)字符dmain()C)字符d的地址{charc=*zr;D)无确定的输出结果printf("%c”,c・25);(29)已有变量定义和函数调用语句:inta=25;prinl_value(&a);下}面函数的正确输出结果是A)avoidprint_value(int*x)B)Z{printf("%d\iT,++*x);}C)z-25A)23D)yB)24(26)下面函数的功能是C)25char*fun(char*strI,char*str2)D)26(while((*strl)&&(*str2++=*strl++));(30)当顺利执行了文件关闭操作时,fclose函数的返回值是

332A)-1B)TRUEC)0D)1(31)设有如下定义char*s[2]={"abcd","ABCD");则下列说法错误的是A)s数组元素的值分别是“abed"和“ABCD”两个字符串的首地址B)s是指针数组名,它含有两个元素分别指向字符型•维数组C)s数组的两个元素分别存放的是含有4个字符的一维字符数组中的元素D)s数组的两个元素中分别存放了字符尔和,A,的地址(32)以卜不能对二维数组a进行正确初始化的语句是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]={{"20021”,90,95.85}.{"20022",95,80,75},{"20023",100,95,9()),),*p=s;inti;floatsum=0;for(i=0;i<3;i-H-)printf(H%6.2f

333'\sum);)程序运行后的输出结果是A)260.00B)270.00C)280.00D)285.00(34)若有说明:inia[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-H-)printf("*");A)9B)5C)6D)7(36)设有如下函数fun(floatx)(printf(,,

334%d,\x*x);}则函数的类型是A)与参数x的类型相同B)是voidC)是int型D)无法确定

335sum=sum+p->score[i];

336(37)有如下定义#defineD2intx=5;floaty=3.83;charc=,D,;则下面选项中错误的是A)x++;B)y++;C)C++;D)D++;(38)以下程序段的执行结果为#definePLUS(X,Y)X+Ymain(){intx=l,y=2,z=3,sum;sum=PLUS(x+y,z)*PLUS(y,z);printf(HSUM=%d",sum);}A)SUM=9B)SUM=12C)SUM=18D)SUM=28(39)C语言规定,函数返回值的类型是由A)return语句中的表达式类型所决定B)调用该函数时的主调函数类型所决定C)调用该函数时系统临时决定D)在定义该函数时所指定的函数类型所决定(40)下列程序的运行结果是voidfun(int*a,int*b){int*k;k=a;a=b;b=k;)main(){inta=2OO4,b=9,*x=&a,*y=&b;fun(x,y);printf(”%d%d”,a,b);)A)20049B)92004C)()0D)编译时出错(41)下列程序是用来判断数组中特定元素的位置所在。如果输入如卜.整数:876675896101301401980431451777#include#includeintfun(int*s,intt,int*k){inti;*k=0;fbr(i=0;i

337)D)以上说法都不对则输出结果为(44)有以下程序A)7,431#includeB)6main()C)980{char*p,*q;D)6,980p=(char*)malloc(sizeof(char)*20);q=p;(42)C语言结构体类型变量在程序执行期间scanf(H%s%s*\p,q);printf(*'%s%s

338H,p,q)A)所有成员一直驻留在内存中)B)只有一个成员驻留在内存中若从键盘输入:abcdefv回车〉,则输出结果是C)部分成员驻留在内存中A)defdefD)没有成员驻留在内存中B)abcdef(43)卜面程序应能对两个整型变量的值进行交换。以卜正确的说法C)abcd是D)ddmain()(45)以下程序的输出结果是{inta=10,b=20;intf()printf(”(1)a=%d,b=%d

339M,a,b);{staticinti=0;swap(&a,&b);ints=l;printf(M(2)a=%d,b=%d

340M,a,b);s+=i;i++;)returns;swap(intpjntq)){intt;main()t=p;p=q;q=t;(inti,a=0;}for(i=0;i<5;i++)a+=f();A)该程序完全正确printf("%d

341»;B)该程序有错,只要将语句sw叩(&a,&b);中的参数改为a.b)即可A)20C)该程序有错,只要将swap()函数中的形参p和q以及t均B)24printf("%d,%d

342k,a[k]);定义为指针(执行语句不变)即可

343C)25D)15(46)已知inta=l,b=3则aN)的值为A)3B)1C)2D)4(47)如果需要打开一个己经存在的非空文件“Demo”进行修改下面正确的选项是A)fp=fopen("Demo'T);B)fp=fopen("Demo","ab+");C)fp=fopen(,'Demo";,w+H);D)fp=fopen(,,Demo","r+");(48)若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是A)fopen(HA:\user\abc.txt",V)B)fopen("A:\\user\\abc.txt","rt+M)C)fopen("A:\user\abc.txt","rb")D)fopen("A:\user\abc.txt'\"w")(49)有以下程序#includemain()E)har*p=nabcde\Ofghjik\0printf(M%d

344",strlen(p));)程序运行后的输出结果是A)12C)6D)5(50)有以下程序#includestructNODE{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

345",p->num-Ki->next->num);¥程序运行后的输出结果是A)10B)20C)30D)40二、填空题(1)冒泡排序算法在最好的情况卜的元素交换次数为【I】。解析:根据冒泡排序算法思想可知,若待排序的初始序列为“正序”序列,则只需进行一趟排序,在排序过程中进行n-1次关键字间的比

346较,且不移动和交换记录,这种情况是冒泡排序的最好情况,故冒泡排序算法在最好的情况下的元素交换次数为0.B)15

347(8)以卜.程序的输出结果是[8】。(2)在最坏情况卜.,堆排序需要比较的次数为【2】。答案:0(nlog2n)main(){inti=010j=10;(3)若串s="MathTypes”,则其子串的数目是[3]。pimtf(M%d,%d

348Mjj);解析:串s中共有9个字符,由于串中字符各不相同,则其子用中有)0个字符的1个(空串),1个字符的9个,2个字符的8个,3个字解析:以0开头的是八进制数。符的7个,4个字符的6个,5个字符的5个,6个字符的4个,7个字符的3个,8个字符的2个,9个字符的1个,共有(9)下列程序的输出结果为【9】o1+2+3+4+5+6+7+8+9+1=46。main(){intx=3,y=5;(4)软件开发环境是全面支持软件开发全过程的【4】集合。printf("%d",x=(x-)*(~y));答案:软件工程)解析:的值为3,的值为4;注意前缀-和后缀••的区别。(5)关系数据库的关系演尊语言是以[51为基础的DML语言。解析:关系数据库中的关系演算包括元组关系演算和域关系演算。(10)以下程序的输出结果是[10]o二者都是由原子公式组成的公式。而这些关系演算都是以数理逻辑中fiin(intx,inty,intz)的谓词演算为基础的。{z=x*x+y*y;}main()(6)下列y的值是[6】。{inta=31;inty;y=sizeof(2.25*4):fun(6,3,a)解析:sizeof(2.25*4)为sizeof(10.00)值为8,C语言规定浮点printf("%d",a)型常量当双精度处理(以IRM-PC机为例)。)解析:在函数调用时,形参值和改变,不能会改变实参的值。(7)下列x的值是[7]。intx;x=sizeof2.25*4;(11)若有inta=l;intb=2;则a1b的值为[11).解析:sizeof运算符高了算术运算符,所以sizeof2.25*4等价T'(sizeof解析:将a化成二进数和制数是0001,b化成二进制数为0010,1是2.25)*4为8x4=32(以IBM-PC机为例)。或运算符,aIb=0011即为3.

349(12)已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=W+S・3的值为【12】。解析:在C语言中,整型,实型,字符型数据间可以混合运算,在进行运算时,不同类型的数据要先转换成同一类型,然后再进行运算。我们可以这样计算本题,97+8-3=102,即102所对应的字母为f。(13)若从键盘输入58,则以下程序输出的结果是[13]omain(){inta;scanf(*'%d",&a);if(a>50)printf("%d”,a);if(a>40)printf("%d”,a);if(a>30)printf(M%d\a);)(14)卜.列程序的输出的结果是【14],[15]omain()(inti,jrow,coium,m;staticintarray[3][3]={(100,200,300},{28,72,-30){-850,2,6}};m=array[0][0];for(i=0;i<3;i-H-)for(j=0;j<3;j++)if(array[i][j]

350",m,row,colum);I解析:两个for循环是对数组元素进行扫描,并找是数组中值最小的元素和它的位置。(15)以卜.程序中,select函数的功能是:在N行M列的:维数组中,选出一个最大值作为函数值返回,并通过形参传回此最大值所在的行下标。请填空。#defineN3#defineM3select(inta[N][M],int*n){intij,row=l,colum=l;for(i=0;ia[row][colum]){row=i;colum=j;)*n=[16];return[17];)main(){inta[N][M]={9J1,23,6,1,15,9,17,20),max,n;max=select(a.&n);printf(Hmax=%djine=%d

351n,max,n);1解析:本题中,首先假定a[1][1]为最大值,然后利用循环结构将二维数组中的每个元素逐个与a[row][cokim]进行比较,如果比a[row][colum]的值大,则令a[row][colum]指向该元素,比较完后,n)w即是最大值所在的行,所以第1个空所在的行的语句应是*n=row;,在第2个空中返回最大值,显然,是a[row][colum](16)函数my-cmp()的功能是比较字符串s和t的大小,当s等于t时返回0,否则返回s和t的第一个不同字符的ASCII码差值,即s>t时返回正值,当

352svt时返回负值。请填空。my_cmp(char*s,char*t)

353选择题01-05ACBAA06-10DDCCC11-15CABDA16-20CCBAC21-25ACBDA26-30CBCDC31-35CCBDC36-40CDBDA41-45BADAD46-50CDBDD{while(*s==*t){if(*s=='\0‘)return0;++s;++t;}return[18];(解析:两字符串大小比较必须从它们的首字符开始,在对应字符相等情况卜.循环,直至不相等结束。相等时,若字符串已到了字符串的结束标记符,则两字符串相同,函数返回。值;如还有后继字符,则准备比较下一对字符。对应字符不相同,循环结束。循环结束时,就以两个当前字符的差返回.所以在空框处应填入*s-*t,保证在s>t时返回正值,当s

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

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

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