全国计算机等级考试二级C语言笔试+上机题库重点资料

全国计算机等级考试二级C语言笔试+上机题库重点资料

ID:83018253

大小:227.23 KB

页数:116页

时间: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语言笔试+上机题库重点资料》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

2012年3月份全国计算机等级考试二级C语言笔上机题库(全)一、选择题在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。(1)为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为A)PAD图B)N-S图C)结构图D)数据流图(2)结构化程序设计主要强调的是A)程序的规模B)程序的效率C)程序设计语言的先进性D)程序易读性(3)为了使模块尽可能独立,要求A)模块的内聚程度要尽量高,目.各模块间的耦合程度要尽量强B)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱C)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱D)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强(4)需求分析阶段的任务是确定A)软件开发方法B)软件开发工具C)软件开发费用D)软件系统功能(5)算法的有穷性是指A)算法程序的运行时间是有限的B)算法程序所处理的数据量是有限的C)算法程序的长度是有限的D)算法只能被有限的用户使用(6)对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-l)/2的排序方法是A)快速排序B)冒泡排序C)直接插入排序D)堆排序(7)如果进栈序列为el,e2,e3,e4,则可能的出栈序列是A)e3,el,e4,e2B)e2,e4,e3,elC)e3,e4,el,e2D)任意顺序(8)将E-R图转换到关系模式时,实体与联系都可以表示成A)属性B)关系C)键D)域(9)有三个关系R、S和T如下:RBCDa0klb1nlBCDf3h2a0kln2xlTBCDa0kl由关系R和S通过运算得到关系T,则所使用的运算为A)并B)自然连接C)笛卡尔积D)交(10)下列有关数据库的描述,正确的是A)数据处理是将信息转化为数据的过程B)数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变。关系中的每一列称为元组,一个元组就是一个字段D)如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关健字,则称其为本关系的外关键字(11)以下叙述中正确的是A)用C程序实现的算法必须要有输入和输出操作B)用C程序实现的算法可以没有输出但必须要有输入C)用C程序实现的算法可以没有输入但必须要有输出D)用C程序实现的算法可以既没有输入也没有输出

1(12)下列可用于C语言用户标识符的一组是A)void,define,WORDB)a3_3,_123,CarC)For,-abc,IFCaseD)2a,DO,sizeof(13)以下选项中可作为C语言合法常量的是A)-80B)-080C)-8el.OD)-80.0e(14)若有语句:char*line[5];,以下叙述中正确的是A)定义line是一个数组,每个数组元素是一个基类型为char为指针变量B)定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组C)定义line是•个指针数组,语句中的*号称为间址运算符D)定义line是一个指向字符型函数的指针(15)以下定义语句中正确的是A)inta=b=0;B)charA=65+l,Bb';C)floata=l,*b=&a,*c=&b;D)doublea=00;b=1.1;(16)有以下程序段charch;intk;ch='a';k=12;printf(n%c,%d,",ch,ch,k);printf("k=%d

2",k);已知字符a的ASCII码值为97,则执行上述程序段后输出结果是Q因变量类型与格式描述符的类型不匹配输出无定值B)输出项与格式描述符个数不符,输出为零值或不定值C)a,97,12k=12D)a,97,k=12(17)有以下程序main(){inti,s=l;for(i=l;i<50;i++)if(!(i%5)&&!(i%3))s+=i;printf("%d

3”,s);}程序的输出结果是A)409B)277C)1D)91(18)当变量c的值不为2、4、6时,值也为“真”的表达式是A)(c=2)ll(c==4)ll(c==6)B)(c>=2&&c<=6)ll(c!=3)ll(c!=5)C)(c>=2&&c<=6)&&!(c%2)D)(c>=2&&c<=6)&&(c%2!=l)(19)若变量已正确定义,有以下程序段inta=3,b=5,c=7;if(a>b)a=b;c=a;if(c!=a)c=b;printf("%d,%d,%d

4”,a,b,c);其输出结果是A)程序段有语法错B)3,5,3C)3,5,5D)3,5,7(20)有以下程序#includemain(){intx=l,y=O,a=O,b=O;switch(x){case1:switch(y){case0:a++;break;casel:b++;break;)case2:a++;b++;break;case3:a++;b++;}printf(Ha=%d,b=%d

5",a,b);)程序的运行结果是A)a=l,b=OB)a=2,b=2C)a=l,b=lD)a=2,b=l(21)下列程序的输出结果是#includenstdio.h"main(){inti,a=O,b=O;

6fbr(i=l;i<10;i++){if(i%2==0){a++;continue;}b++;}printf(',a=%d,b=%dH,a,b);}A)a=4,b=4B)a=4,b=5C)a=5,b=4D)a=5,b=5(22)已知#intt=0;while(t=l){...)则以下叙述正确的是A)循环控制表达式的值为0B)循环控制表达式的值为1C)循环控制表达式不合法D)以上说法都不对(23)下面程序的输出结果是main(){inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;printf(M%d

7\*(p+2));}A)3B)4C)1D)2(24)以下错误的定义语句是A)intx[][3]={{0},{1},{1,2,3}};B)intx[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3));C)intx[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};D)intx[][3]={1,2,3,4);(25)有以下程序voidss(char*s,chart){while(*s){if(*s==t)*s=t-'a'+'A';s++;})main(){charstrl[100]="abcddfefdbd":d^ss(strl,c);printf("%s

8",strl);}程序运行后的输出结果是A)ABCDDEFEDBDB)abcDDfefDbDC)abcAAfefAbAD)Abcddfefdbd(26)有如下程序main(){charch[2][5]={"6937w,,,8254,'),*p[2];inti,j,s=O;for(i=0;i<2;i4-4-)p[i]=ch[i];for(i=0;i<2;i+4-)forG=0;p[i][j>W;j+=2)s=10*s+p|i]|j]-,0";printf(H%d

9",s);}该程序的输出结果是A)69825B)63825C)6385D)693825(27)有定义语句:char若要从终端给s输入5个字符,错误的输入语句是A)gets(&s[O]);B)scanf(',%s,,,s+1);C)gets(s);D)scanf(u%sM,s[l]);(28)以下叙述中错误的是A)在程序中凡是以“#"开始的语句行都是预处理命令行B)预处理命令行的最后不能以分号表示结束C)#defineMAX是合法的宏定义命令行D)C程序对预处理命令行的处理是在程序执行的过程中进行的(29)设有以下说明语句typedefstruct{intn;charch[8];}PER;则卜面叙述中正确的是A)PER是结构体变量名B)PER是结构体类型名C)typedefstruct是结构体类型D)struct是结构体类型名(30)以下叙述中错误的是A)gets函数用于从终端读入字符串B)getchar函数用于从磁盘文件读入字符

10C)fputs函数用于把字符串输出到文件D)fwrite函数用于以二进制形式输出数据到文件(31)以下能正确定义一维数组的选项是A)inta[5]={0,1,2,3,4,5);B)chara「供,\0'};C)chara={'A','B','C'};D)inta[5]="O123";(32)有以下程序#includemain(){char3,'c'},q口0]={也《};printf(',%d%d

11",strlen(p),strlen(q));}以下叙述中正确的是A)在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3B)由于p数组中没有字符串结束符,长度不能确定,但q数组中字符串长度为3C)由于q数组中没有字符串结束符,长度不能确定,但p数组中字符串长度为3D)由于p和q数组中都没有字符串结束符,故长度都不能确定(33)有以下程序#include#includevoidfun(char*s[],intn){char*t;intij;fbr(i=0;istrlen(s[j])){t=s[i];s[i]:s[j];s|j]=t;))main(){char*ss[]={HbccM,,,bbcc*V,xyM,MaaaaccM,,'aabccM);fun(ss,5);printf(,,%s,%s

12H,ss[01,ss[4]);)程序的运行结果是A)xy,aaaaccB)aaaacc,xyC)bcc,aabccD)aabcc,bcc(34)有以下程序#includeintf(intx){inty;if(x=Ollx==l)return(3);y=x*x-f(x-2);returny;)main(){intz;z=f(3);printf(n%d

13M,z);)程序的运行结果是A)0B)9C)6D)8(35)下面程序段的运行结果是charstr(]="ABC",*p=str;printf("%d

14",*(p+3));A)67B)0C)字符C的地址D)字符C(36)若有以下定义:structlink{intdata;structlink*next;}a,b,c,*p,*q;且变量a和b之间已有如下图所示的链表结构:指针p指向变量a,q指向变量Co则能够把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;(37)对于下述程序,在方式串分别采用“wt“和“wb”运行吐两次生成的文件TEST的长度分别是#includevoidmain(){HLE*fp=fopen('TEST,\);fputc(W,fp);fputcC

15;fp);fputcCB\f^);fputc(r

16\fp);fputc(C而;fclose(fp);}

17A)7字节、7字节B)7字节、5字节C)5字节、7字节D)5字节、5字节(38)变量a中的数据用二进制表示的形式是01011101,变量b中的数据用二进制表示的形式是11110000。若要求将a的高4位取反,低4位不变,所要执行的运算是A)aAbB)albC)a&bD)a«4(39)下面的程序段运行后,输出结果是inti,j,x=O;staticinta[8][8];for(i=0;i<3;i-H-)for(j=0;j<3;j++)a[i][j]=2*i+i;for(i=0;i<8;i++)x+=a[i][j];printf(M%d'\x);A)9B)不确定值C)0D)18(40)下列程序执行后的输出结果是voidfunc(int*a,intb[]){b[0]=*a+6;}main(){inta,b[5];a=0;b|0|=3;func(&a,b);printf(,'%d

18,,,b[O]);}A)6B)7C)8D)9二、填空题请将每一个空的正确答案写在答题卡序号的横线上,答在试卷上不给分。(1)测试的目的是暴露错误,评价程序的可靠性;而【1】的目的是发现错误的位置并改正错误。(2)某二叉树中度为2的结点有18个,则该二叉树中有【2】个叶子结点。(3)当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算。这种情况称为【3】。(4)在关系模型中,把数据看成一个二维表,每一个二维表称为一个【4】。(5)在计算机软件系统的体系结构中,数据库管理系统位于用户和【5】之间。(6)以下程序的输出结果是[6】omain(){charc^z';printf("%c”,c・25);)(7)阅读下面语句,则程序的执行结果是17】。includeHstdio.h"main(){inta=-l,b=l,k;if((++a<0)&&!(b-<=0))printf(,,%d,%d\,',a,b);elseprintf("%d,%d

19n,b,a);}(8)下列程序的输出结果是18】omain(){inti;fbr(i=l;i+l;i-H-){if(i>4){printsM%d

20H,i);break;}printf('1%d

21',,i++);}}(9)以下程序的定义语句中,x[1]的初值是[9】,程序运行后输出的内容是【10】o#includemain(){intx[]={1,234,5,678,9,10,11,12,13,14,15,16},*p[4],i;for(i=0;i<4;i++)

22{p[i]=&x[2*i+l];printf(H%d\p[i][O]);}printf(',

23M);))(10)以下程序的输出结果是[11].#includevoidswap(int*a,int*b){int*t;t=a;a=b;b=t;}main(){inti=3,j=5,*p=&i,*q=&j;swap(p,q);printf(M%d%d\N,*p,*q))}(ID以下程序的输出结果是[12]omain(){charsIK'ABCD",*p;for(p=s+l;p

24'\p);)(12)以下程序的输出结果是[13].floatfun(intx,inty){return(x+y);}main(){inta=2,b=5,c=8;printf(n%3.0f

25",fun((int)fun(a+c,b),a-c));}(13)有如下图所示的双链表结构,请根据图示完成结构体的定义:Iheaddatarchildstructaa{intdata;[14]}node;(14)fseek函数的正确调用形式是【15].一、选择题(1)B【解析】N-S图是由Nassi和Shneiderman提出的一种符合程序化结构设计原则的图形描述工具。它的提出是为了避免流程图在描述程序逻辑时的随意性上灵活性。(2)D【解析】结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、模块化及限制使用got。语句,总的来说可使程序结构良好、易读、易理解、易维护。(3)B【解析】模块的独立程度可以由两个定性标准度量:耦合性和内聚性。耦合性是衡量不同模块彼此间互相依赖(连接)的紧密程度;内聚性是衡量一个模块内部各个元素彼此结合的紧密程度。一般来说,要求模块之间的耦合尽可能地低,而内聚性尽可能地高。(4)D【解析】需求分析是软件定义时期的最后一个阶段,它的基本任务就是详细调查现实世界要处理的对象(组织、部门、企、业等),充分了解原系统的工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。选项A)软件开发方法是在总体设计阶段需完成的任务;选项B)软件开发工具是在实现阶段需完成的任务;选项C)软件开发费用是在可行性研究阶段需完成的任务。(5)A【解析】算法具有5个特性:①有穷性:一个算法必须(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有限时间内完成,即运行时间是有限的;②确定性:算法中每一条指令必须有确切的含义,读者理解时不会产生歧义;③可行性:一个算法是可行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现;④输入:一个算法有零个或多个输入,这些输入取自于某个特定的对象的集合;⑤输出:一个算法有一个或多个输出O(6)D【解析】在最坏情况下,快速排序、冒泡排序和直接插入排序需要的比较次数都为n(n-l)/2,堆排序需要的比较次数为nlog2n).(7)B【解析】由栈"后进先出"的特点可知:A)中el不可能比e2先出,C)中el不可能比e2先出,D)中栈是先进后出的,所以不可能是任意顺序。B)中出栈过程如下图所示:(8)B【解析】关系数据库逻辑设计的主要工作是将E-R图转换成指定RDBMS中

26的关系模式。首先,从E-R图到关系模式的转换是比较直接的,实体与联系都可以表示成关系,E-R图中属性也可以转换成关系的属性,实体集也可以转换成关系。(9)D【解析】在关系运算中,交的定义如下:设R1和R2为参加运算的两个关系,它们具有相同的度n,且相对应的属性值取自同一个域,则RIR2为交运算,结果仍为度等于n的关系,其中,交运算的结果既属于R1,又属于R2。(10)D【解析】数据处理是指将数据转换成信息的过程,故选项A)叙述错误;数据的物理独立性是指数据的物理结构的改变,不会影响数据库的逻辑结构,故选项B)叙述错误;关系中的行称为元组,对应存储文件中的记录,关系中的列称为属性,对应存储文件中的字段,故选项。叙述错误。1DC【解析】算法具有的5个特性是:有穷性;确定性;可行性;有。个或多个输入;有一个或多个输出。所以说,用C程序实现的算法可以没有输入但必须要有输出。(12)B【解析】C语言规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线,排除选项C)和D);C语言中还规定标识符不能为C语言的关键字,而选项A)中void为关键字,故排除选项A)o(13)A【解析】选项B)项中,以。开头表示是一个八进制数,而八进制数的取值范围是0〜7,所以-080是不合法的;选项C)和D)中,e后面的指数必须是整数,所以也不合法。(14)A【解析】C语言中□比*优先级高,因此line先与[5]结合,形成line[5]形式,这是数组形式,它有5个元素,然后再与line前面的"*”结合,表示此数组是一个指针数组,每个数组元素都是一个基类型为char的指针变量。(15)B【解析】本题考查变量的定义方法。如果要一次进行多个变量的定义,则在它们之间要用逗号隔开,因此选项A)和D)错误。在选项。中,变量c是一个浮点型指针,它只能指向一个浮点型数据,不能指向指针变量b,故选项C)错误。(16)D【解析】输出格式控制符%c表示将变量以字符的形式输出;输出格式控制符%d表示将变量以带符号的十进制整型数输出,所以第一个输出语句输出的结果为a,97;第二个输出语句输出的结果为k=12o(17)D【解析】本题是计算50之内的自然数相加之和,题中if语句括号中的条件表达式!(i%5)&&!(i%3)表明只仃能同时被5和3整除的数才符合相加的条件,1〜49之间满足这个条件的只有,15、30和45,因为s的初始值为1,所以s=1+15+30+45=91。(18)B【解析】满足表达式(0=2&&<:<=6)的整型变量©的值是2,3,4,5,6。当变量<:的值不为2,4,6时,其值只能为3或5,所以表达式c!=3和c!=5中至少有一个为真,即不论c为何值,选项B中的表达式都为"真"。(19)B【解析】两个if语句的判断条件都不满足,程序只执行了c=a这条语句,所以变量c的值等于3,变量b的值没能变化,程序输出的结果为3,5,3。所以正确答案为B).(20)D【解析】本题考查switch语句,首先,x=l符合条件case1,执行switch(y)语句,y=0符合case0语句,执行a++并跳出switch(y)语句,此时a=l«因为case1语句后面没有break语句,所以向后执行case2语句,执行a++,b++,然后跳出switch(x),得a=2,b=l«(21)B【解析】continue语句的作用是跳过本次循环体中余下尚未执行的语句,接着再一次进行循环条件的判定。当能被2整除时,a就会增1,之后执行continue语句,直接执行到for循环体的结尾,进行i++,判断循环条件。(22)B【解析】t=l是将t赋值为1,所以循环控制表达式的值为1,判断t是否等于1时,应用t==l,注意"="与"=="的用法。(23)A【解析】在C语言中,数组元素是从0开始的。指针变量p指向数组的首地址,(》2)就会指向数组中的第3个元素。题目中要求输出的是元素的值。(24)C【解析】本题考查的是二维数组的定义和初始化方法。C语言中,在定义并初始化二维数组时,可以省略数组第一维的长度,但是不能省略第二维的长度。故选项C)错误。(25)B【解析】在内存中,字符数据以ASCII码存储,它的存储形式与整数的存储形式类似。C语言中,字符型数据和整型数据之间可以通用,也可以对字符型数据进行算术运算,此时相当于对它们的ASCII码进行算术运算,在本题中,S++相当于s=s+l,即让s指向数组中的下一个元素。(26)C【解析】该题稍微难一点。主要要搞清楚以下几点:①定义了一个指针数组char*p[2]后,程序中第一个循环for(i=0;i<2;i++)p|i]=ch[i];的作用,是使指针数组的p[0]元素(它本身是一个指针)指向了二维数组ch的第一行字符串,并使指针数组的p[l]元素指向二维数组ch的第二行字符串,这样,就使指针数组p和二维数组ch建立起了一种对应关系,以后对二维数组ch

27的某个元素的引用就有两种等价的形式:ch[i][j]或p[i][j]o②对二维数组ch的初始化,使其第一行ch⑼中存入了字符串“6937",第二行ch⑴中的内容为字符串“8254”。③程序中第二个循环中的循环体s=s*10+p[i]叶5的功能是这样的,每执行一次,将s中的值乘以10(也即,将s中的数值整体向左移动一位,并在空出来的个位上添一个0),再将当前中的字符量转换为相应的数字,然后把这个数字加到s的个位上。④注意到内层循环的循环条件p[i]\j]>\0'是指中的字符只要不是字符串结束标志V)'就继续循环,语句j+=2;是使下标j每次增加2,也即一个隔一个地从p[i]所指向的字符串中取出字符。经过上述解析后,不难看出,该程序首先从p[0]所指向的字符串"6937"中一个隔一个地取出字符,分别是6和3,然后从p[1]所指向的字符串"8254"中一个隔一个地取出字符,分别是8和5,同时经过转换和相加运算后,结果s中的值应该是6385。(27)D【解析】在格式输入中,要求给出的是变量的地址,而D)答案中给出的s[l]是一个值的表达式。(28)D【解析】C语言中的预处理命令以符号#开头,这些命令是在程序编译之前进行处理的,选项D)的描述错误。(29)B【解析】本题中,typedef声明新的类型名PER来代替已有的类型名,PER代表上面指定的一个结构体类型,此时,也可以用PER来定义变量。(30)B【解析】getchar函数的作用是从终端读入一个字符。(31)B【解析】选项A)中,定义的初值个数大于数组的长度;选项C)中,数组名后少了中括号;选项D)中,整型数组不能赋予字符串。(32)A【解析】在给p和q数组赋初值时,系统会自动添加字符串结束符,从题目中可以看出数组p和q都有3个字符,所以长度均为3。(33)A【解析】函数fun(char*s口,intn)的功能是对字符串数组的元素按照字符串的长度从小到大排序。在主函数中执行fun(ss,5)语句后,*ss[]={"xy","bcc","bbcc","aabcc","aaaacc"},ss[0],ss[4]的输出结果为xy,aaaacc。(34)C【解析】函数intf(intx)是一个递归函数调用,当x的值等于0或1时,函数值等于3,其他情况下y=x2-f(x-2),所以在主函数中执行语句z=f(3)吐y=3*3-f(3-2)=9-f(l)=9-3=6。(35)B【解析】考杳指向字符串的指针变量。在该题中,指针变量p指向的应该是该字符串中的首地址,p+3指向的是字符串结束标志VT的地址,因而*(p+3)的值为Oo(36)D【解析】本题考查链表的数据结构,必须利用指针变量才能实现,即一个结点中应包含一个指针变量,用它存放下一结点的地址。(37)B【解析】以“wt”方式写入的是字符文件,转义字符、,被看作两个字符来处理。而“wb”方式写入的是二进制文件,转义字符M是一个字符。(38)A【解析】本题考查的是位运算的知识,对于任何二进制数,和1进行异或运算会让其取反,而和0进行异或运算不会产生任何变化。(39)C【解析】本题主要考查的是用二维数组首地址和下标来引用二维数组元素的方法。通过分析可知,程序中的双重循环定义了一个如下的二维数组:012234456由于数组的下标是从0开始的,所以二维数组元素表示的是二维数组a的第i+1行、第j+1列对应位置的元素。(40)A【解析】函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针型。它的作用是将一个变量的地址传递到另•个函数中。当数组名作参数时,如果形参数组中的各元素的值发生变化,实参数组元素的值也将随之发生变化。二、选择题(1)【1】调试【解析】软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定;调试也称排错,它是一个与测试既有联系又有区别的概念。具体来说,测试的目的是暴露错误,评价程序的可靠性,而调试的目的是发现错误的位置,并改正错误。(2)[2]19【解析】在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。(3)(3J上溢【解析】入队运算是指在循环队列的队尾加入一个新元素。这个运算有两个基本操作:首先将队尾指针进一(即rear=rear+l),并当rear^m+1时,置rear=l;然后将新元素插入队尾指针指向的位置。当循环队列非空(s=l)且队尾指针等于队头指针时,说明循环队列已满,不能进行入队运算,这种情况称为“上溢"。

28(2)[4]关系【解析】在关系模型中,把数据看成一个二维表,每一个二维表称为一个关系。表中的每一列称为一个属性,相当于记录中的一个数据项,对属性的命名称为属性名;表中的一行称为一个元组,相当于记录值。(3)[5]操作系统或OS【解析】数据库管理系统是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务。位于用户和操作系统之间。(4)[6]a[解析】/的ASCII码值为122,经过c-25运算后,得97似字符形式输出是a。(5)[7]1,0【解析】与运算两边的语句必须同时为真时,结果才为真。当执行完if((++a<0)&&!(b-Y=0))时,4b的值已经发生了变化。(6)[8]135【解析】本题考查了for循环语句的使用,break语句用在本题中是结束for循环直接跳出循环体外。当i=1时,因为if语句条件不满足,所以直接执行printf("%d

29",i++);输出1,同时i自加1;执行第二次for循环时,i=3;同样的if语句条件不满足,所以直接执行printf("%d

30”,i++);输出3,同时i自加1;执行第三次for循环时,i=5,if语句条件满足,所以执行printf("%d

31",i),输出5,然后break语句跳出了for循环。⑼[9]2[10]2468【解析】在主函数中根据整型数组x[]的定义可知,x[l]的初值等于2。在for循环语句中,当i=0B'J-,p[0]=&x[l],p[0][0]=2;当i=l时,p[l]=&x[3],p[l][0]=4;当i=2时,p[2]=&x[5],p[2][0]=6;当i=3时,p[3]=&x[7],p[3][0]=8,所以程序输出的结果为2、4、6、8。(10)[11]35【解析】函数swap(int*&int*b)的功能是实现*a和*b中两个数据的交换,在主函数中调用swap(p,q)后,形参指杆变量a和b分别指向i和j,在swap(int*a,int*b)执行完后,指针变量a和b分别指向j和i,而指针变量p,q所指向变量的值没有发生变化,所以输出结果为35»(11)[12]BCDCDD【解析】本题考查指向字符串的指针的运算方法。指针变量p首先指向字符串中的第一个字符A,执行p=s+l后,p指向字符串中的第二个字符B,然后输出值"BCD"并换行,依次执行循环语句。(12)[1319【解析】本题考查函数的综合知识。首先,我们可以利用强制转换类型转换运算符,将一个表达式转换成所需类型。如:(double)a是将a转换成double类型;(int)(x+y)是将x+y的值转换成整型。本题可按部就班地逐步运算:fun((int)fun(a+c,b),a-c)fun((int)fun(10,5),2-8)fun((int)15.000000,-6)fun(15,-6)9(13)[14]structaa*lhead,*rchild;【解析】结构体对链表的定义。(14)[15]fseek(文件指针,位移量,起始点)【解析】本题考查函数fseek的用法。fseek函数的调用形式为:fseek(文件指针,位移量,起始点)"起始点"用0,1或2代替,其中,0代表"文件开始";1为"当前位置”;2为"文件末尾"。"位移量"指以"起始点”为基点,向前移动的字节数。ANSIC和大多数C版本要求位移量是long型数据,这样当文件的长度大于64k时不致出现问题。ANSIC标准规定在数字的末尾加一个字母L,就表示long型。一、选择题在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置匕答在试卷上不得分。(1)程序流程图中带有箭头的线段表示的是A)图元关系B)数据流C)控制流D)调用关系(2)下面不属于软件设计原则的是A)抽象B)模块化C)自底向上D)信息隐蔽(3)下列选项中,不属于模块间耦合的是A)数据耦合B)标记耦合C)异构耦合D)公共耦合(4)下列叙述中,不属于软件需求规格说明书的作用的是

32A)便于用户、开发人员进行理解和交流B)反映出用户问题的结构,可以作为软件开发工作的基础和依据C)作为确认测试和验收的依据D)便于开发人员进行需求分析

33(5)算法的时间复杂度是指A)执行算法程序所需要的时间B)算法程序的长度C)算法执行过程中所需要的基本运算次数D)算法程序中的指令条数(6)已知数据表A中每个元素距其最终位置不远,为节省时间,应采用的算法是A)堆排序B)直接插入排序C)快速排序D)B)和C)(7)栈底至栈顶依次存放元素A、B、C、D,在第五个元素E入栈前,栈中元素可以出栈,则出栈序列可能是A)ABCEDB)DCBEAC)DBCEAD)CDABE(8)数据库设计包括两个方面的设计内容,它们是A)概念设计和逻辑设计B)模式设计和内模式设计C)内模式设计和物理设计D)结构特性设计和行为特性设计(9)关系表中的每一横行称为一个A)元组B)字段C)属性D)码(10)设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),骑呈C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为A)课号,成绩B)学号,成绩C)学号,课号D)学号,姓名,成绩(11)以下不正确的叙述是A)在C程序中,逗号运算符的优先级最低B)在C程序中,APH和aph是两个不同的变量C)若a和b类型相同,在计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变D)当从键盘输入数据时,对于整型变量只能输入整型数位,对于实型变量只能输入实型数值(12)请选出可用作C语言用户标识符的是C)FOR,—abc,CaseD)1.234e0C)%和、D)x=5=4+1;A)void,define,WORDB)a3_b3,_123,IFD)2a,Do,Sizeof(13)以下选项中,不能作为合法常量的是A)1.234e04B)1.234e0.4C)1.234e+4(14)在C语言中,运算对象必须是整型数的运算符是A)%B)\D)**(15)若变量均已正确定义并赋值,以下合法的C语言赋值语句是A)x=y==5;B)x=n%2.5;C)x+n=i;(16)有以下程序段charch;intk;ch='a';k=12;printf(M%c,%d,M,ch,ch,k);printf("k=%d

34u,k);已知字符a的ASCII码值为97,则执行上述程序段后输出结果是A)因变量类型与格式描述符的类型不匹配输出无定值B)输出项与格式描述符个数不符,输出为零值或不定值C)a,97,12k=12D)a,97,k=12(17)已知字母A的ASCII代码值为65,若变量kk为char型,以下不能正确判断出kk中的值为大写字母的表达式是A)kk>='A'&&kkv=ZB)!(kk>='A'||kkv=Z)C)(kk+32)>='a'&&(kk+32)v='Z'D)isalpha(kk)&&(kk<91)(18)当变量c的值不为2、4、6时,值也为“真”的表达式是A)(c==2)II(c=4)II(c==6)B)(c>=2&&c<=6)II(c!=3)II(c!=5)C)(c>=2&&c<=6)&&!(c%2)D)(c>=2&&c<=6)&&(c%2!=l)(19)若有条件表达式(exp)?a++:b--,则以下表达式中能完全等价于表达式(exp)的是A)(exp==0)B)(exp!=0)C)(exp=1)D)(exp!=1)(20)以下不正确的定义语句是A)doublex[5]={2.0,40,6.0,8.0,10.0};B)inty[5]={0,l,3,5,7,9);C)charcl[]={T,'2',3,'4',5};D)charc2[]=r\xl(X,rxa;r\x8r};

35(21)下列程序执行后的输出结果是main。{inta[3][3],*p,i;p=&a[0][0];for(i=l;i<9;i++)p[i]=i+l;printf(H%d

36M,a[l][2];)A)3B)6C)9D)随机数(22)设有以下程序段intx=0,s=0;while(!x!=0)s+=++x;printf(H%dM,s);则A)运行程序段后输出0B)运行程序段后输出1C)程序段中的控制表达式是非法的D)程序段执行无限次(23)(23)下面程序段的运行结果是char*s="abcde";s+=2;printf("%d",s);A)cdeB)字符dC)字符P的地址D)无确定的输出结果(24)阅读下列程序,则执行后的结果为#include“stdio.h"main(){intc口[4]={1,234,5,6,7,34,213,56,62,3,23,12,34,56};printf(H%x,%x

37M,c[2][2],*(*(c+l)+l));}A)3e,6B)62,5C)56,5D)3E,6(25)下面判断正确的是A)char*a="china”;等价于char*a;*a=nchinaH;B)charstr[5]={"china"};等价于charstr|]={,'china,,);C)char*s="china";等价于char*s;s=China";D)charc[4]="abc”,d[4]="abc”;等价于charc[4]=d[4]="abcn;(26)若有定义:inta[2][3];,以下选项中对a数组元素正确引用的是A)a[2][!l]B)a[2][3]C)a⑼⑶D)a[l>2][!l](27)有定义语句:char若要从终端给s输入5个字符,错误的输入语句是A)gets(&s[0]);B)scanf(n%sM,s+l);C)gets(s);D)scanf("%s”,s[l]);(28)有以下程序#include#defineN5#defineMN+l#definef(x)(x*M)main(){intil,⑵il=f(2);i2=f(l+l);printf(M%d%d

38”,il,i2);}程序的运行结果是A)1212B)ll7C)ll11D)127(29)若有以下说明和定义uniondt{inta;charb;doublec;}data;以下叙述中错误的是A)data的每个成员起始地址都相同B)变量data所占内存字节数与成员c所占字节数相等C)程序段:data.a=5;printf("%f

39”,data.c);输出结果为5.000000D)data可以作为函数的实参(30)有以下程序#includemain(){FILE*fp;intk,n,a[6]={1,23,4,5,6};fp=fopen("d2.dat",“w");fprintf(fp;,%d%d%d

40",a[O],a[1],a[2]);

41fprintf(fp;,%d%d%d

42',,a[3],a[4],a[5]);fclose(fp);fp=fopen(,,d2.dat,,,,,rn);fscanf(fp,,,%d%d,',&k,&n);printf(,,%d%d

43M,k,n);fclose(fp);}程序运行后的输出结果是A)12B)14C)1234D)123456(31)若已定义inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中则对a数组元素不正确的引用是A)a[p-a]B)*(&a[i])C)p[i]D)a[10](32)有以下程序#includevoidfiin(int*s,intnl,intn2){inti,j,t;i=nl;j=n2;while(i

44");)程序的运行结果是A)0987654321B)4321098765Q5678901234D)098765I234(33)阅读下列程序,当运行函数时,输入asdafaaz67,则输出为#include#include#includeintfun(char*str){intij=0;for(i=0;str[i]M\0';i++)if(str[i]!-r)str[j-H-]=str[i];str[j]='\O';)main()(charstr[81];intn;printf(Inputastring:");gets(str);puts(str);fun(str);printf(H%s

45M,str);)A)asdafaaz67B)asdafaaz67C)asdD)z67(34)有以下程序intfun(intn){if(n==l)return1;elsereturn(n+fun(n-1));)main(){intx;scanf(w%dM,&x);x=fun(x);printf(M%d

46,',x)}执行程序时,给变量x输入10,程序的输出结果是A)55B)54C)65D)45(35)下面程序段中,输出*的个数是char*s=,f\ta\018bcM;for(;*s!=W;s+4-)printf(n*");A)9B)5C)6D)7(36)C语言结构体类型变量在程序运行期间A)TC环境在内存中仅仅开辟一个存放结构体变量地址的单元B)所有的成员一直驻留在内存中C)只有最开始的成员驻留在内存中D)部分成员驻留在内存中(37)已知函数的调用形式为fread(buf,size,count,fp),参数buf的含义是A)一个整型变量,代表要读入的数据项总数B)一个文件指针,指向要读的文件C)一个指针,指向要读入数据的存放地址D)一个存储区,存放要读的数据项

47(38)设有以下语句charx=3,y=6,z;z=xAy«2;则z的二进制值是A)00010100B)00011011QOOOlllOOD)00011000(39)在C语言中,只有在使用时才占用内存单元的变量,其存储类型是A)auto和registerB)extern和registerC)auto和staticD)static和register(40)设有定义语句int(*f)(int);,则以下叙述正确的是A)f是基类型为int的指针变量B)f是指向函数的指针变量,该函数具有一个int类型的形参C)f是指向int类型-维数组的指针变量D)f是函数名,该函数的返回值是基类型为int类型的地址二、填空题请将每一个空的正确答案写在答题卡序号的横线上,答在试卷上不给分。(1)测试用例包括输入值集和【1】值集。(2)在树形结构中,树根结点没有【2】。(3)数据结构分为逻辑结构与存储结构,线性链表属于【3】o(4)一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体"项目主管"与实体”项目”的联系属于【4】的联系。(5)数据库设计分为以下6个设计阶段:需求分析阶段、【5】、逻辑设计阶段、物理设计阶段、实施阶段、运行和维护阶段。(6)阅读下面程序段,则执行后输出的结果是[6】»#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;}(7)函数fun的返回值是[7]fun(char*a,char*b){intnum=O,n=O;while(*(a+num)!=\O')mm-H-;while(b[n]){*(a+num)=b[n];num++;n++;}returnnum;)(8)以下程序的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。例如,若一维数组中的数据是:2223445666677899101010删除后,数组中的内容应该是:2345678910o请填空。#include#defineN80intfun(inta[],intn){intij=l;fbr(i=l;i

48[9];}main(){inta|N]={2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10},i,n=19;printf('Theoriginaldata:

49H);for(i=0;i

50Thedataafterdeleted:

51M);for(i=0;i

52

53M);)(9)以下程序的运行结果是[10]o#includemain(){intx=1,y=O,a=O,b=O;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;)printf("a=%d,b=%d

54",a,b);)(10)以下程序的输出结果是[11]。fun(intx,inty,intz){z=x*x+y*y;}main(){inta=31;fun(6,3,a)printf(M%dM,a))(11)函数my_cmp()的功能是比较字符串s和t的大小,当s等于t时返回0,否则返回s和t的第一个不同字符的ASCII码差值,即s>t时返回正值,svt时返回负值。请填空。My_cmp(char*s,char*t){while(*s=*t){if(*sT\0)return0;++s;++t;}return[12];)(12)以下程序的输出结果是[13]ovoidreverse(intn){inti,t;for(i=0;i

55M,s);)(13)以下说明语句中,【14】是结构体类型名。typedefstruct{intn;charch[8];}PER;(14)以下程序的作用是:从名为fileadat的文本文件中逐个读入字符并显示在屏幕上。请填空。#includemain(){FILE*fp;charch;

56lp=fopen([15]);ch=fgetc(fp);while(!feof(fp)){putchar(ch);ch=fgetc(fp);}putchar('

57');fclose(fp);}选择题(DC【解析】程序流程图是人们对解决问题的方法、思路或算法的一种图形方式的描述。其中,图框表示各种操作的类型,图框中的文字和符号表示操作的内容;流程线表示操作的先后次序。带箭头的线段在数据流程图中表示数据流;带箭头的线段在程序流程图中表示控制流。题中给出的选项中,在图元之间用带有箭头的线段表示图元关系。在模块之间用带有箭头的线段表示调用关系。(2)C【解析】软件设计遵循软件工程的基本目标和原则,建立了适用于在软件设计中应该遵循的基本原理和与软件设计有关的概念,它们具有抽象、模块化、信息隐蔽和数据独立性。自底向上是集成测试中增量测试的一种。(3)C【解析】模块之间的耦合程度反映了模块的独立性,也反映了系统分解后的复杂程度。按照耦合程度从强到弱分别是:内容耦合、公共耦合、外部耦合、控制耦合、标记耦合、数据耦合和非直接耦合,没有异构耦合这种方式。(4)D【解析】软件需求规格说明书(SRS,SoftwareRequirementSpecification)是需求分析阶段的最后成果,是软件开发中的重要文档之一。它具有以下几个方面的作用:①便于用户、开发人员进行理解和交流;②反映出用户问题的结构,可以作为软件开发工作的基础和依据;③作为确认测试和验收的依据。(5)C【解析】算法的复杂度主要包括算法的时间复杂度和空间复杂度。所谓算法的时间复杂度是指执行算法所需要的计算工作量,即算法执行过程中所需要的基本运算的次数;算法的空间复杂度一般是指执行这个算法所需要的内存空间。(6)B【解析】堆排序的比较次数为nlog2n;直接插入排序的比较次数为n(n-l)/2;快速排序的比较次数为nlog2no当数据表A中每个元素(7)B【解析】栈操作原则上"后进先出",栈底至栈顶依次存放元素A、B、C、D,则表明这4个元素中D是最后进栈,B、C处于中间,A最早进栈,所以出栈时一定是先出D,再出C,最后出Ao(8)A【解析】数据库设计包括数据库概念设计和数据库逻辑设计两个方面的内容。(9)A【解析】关系表中,每一行称为一个元组,对应表中的一条记录;每一列称为一个属性,对应表中的一个字段;在二维表中凡能唯一标识元组的最小属性集称为该表的键或码。(10)C【解析】"选课SC"表是"学生S"表和"课程C”表的映射表,主键是两个表主键的组合。(1DD【解析】在C语言所有的运算符中,逗号运算符的优先级最低。C语言中区分大小写,所以APH和aph是两个不同的变量。赋值表达式a=b表示将b的值付给a,而b本身的值保持不变;通过键盘可以向计算机输入允许的任何类型的数据。选项D)中当从键盘输入数据时,对于整型变量可以输入整型数值和字符,对于实型变量可以输入实型数值和整型数值等。(12)B【解析】C语言规定用户标识符由字母、数字和下划线组成,且第一个字符必须是字母或下划线,可见选项C).D)是错误的;此外,C语言不允许用户将关键字作为标识符,而选项A)中的void正是C语言的关键字。(13)B【解析】C语言的语法规定,字母e(E)之前必须有数字,且e(E)后面的指数必须是整数,而选项B)中,e(E)后面的指数是小数,所以不合法。(14)A【解析】在C语言中运算符两侧的运算数必须是整型。(15)A【解析】赋值运算符左侧的操作数必须是•个变量,而不能是表达式或者常量,选项C)和D)错误。"%”运算符两侧都应当是整型数据,选项B)错误。(16)D【解析】输出格式控制符%c表示将变量以字符的形式输出;输出格式控制符%d表示将变量以带符号的十进制整型数输出,所以第一个输出语句输出的结果为a,97;第二个输出语句输出的结果为k=12o(17)B【解析】C语言的字符以其ASCII码的形式存在,所以要确定某个字符是大写字母,只要确定它的ASCII码在A和Z之间就可以了,选项A)和C)符合要求。函数isalpha用来确定一个字符是否为字母,大写字母的ASCII码值的范围为65到90,所以如果一个字母的ASCII码小于91,那么就能确定它是大写字母。

58(18)B【解析】满足表达式(c>=2&&c<=6)的整型变量c的值是2,3,4,5,6。当变量c的值不为2,4,6时,其值只能为3或5,所以表达式c!=3和c!=5中至少有一个为真,即不论c为何值,表达式B)都为"真"。(19)B【解析】条件运算符要求有3个操作对象,称三目(元)运算符,它是C语言中惟一的一个三目运算符。条件表达式的一般形式为:表达式1?表达式2:表达式3其求解顺序是:先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值。若表达式1的值为0(假),则求解友达式3,表达式3的值就是整个条件表达式的值,注意++、-的用法。(20)B【解析】在一维数组中要注意的是作为下标表达式的常量表达式的值必须是大于等于0,选项B)中定义有5个元素,但赋值时有6个元素,所以是错误的。⑵)B【解析】本题中间是二维数组中的第6个元素,对应for循环中i的值为5,p[5]=5+l„(22)B【解析】本题中表示逻辑非运算符,"!=”表示不等于运算符,逻辑非运算符比不等于运算符的优先级高。(23)C【解析】对于字符串指针,其保留的是整个串的首地址,即第一个字符的起始地址;当该指针做算术运算时,就是该指针根据其类型向后移动相应的存储空间。(24)A【解析】数组c口⑷表示一个4行4列数组,c[2][2]表示第3行第3列上的元素62,*(*(c+l)+l))表示第2行第2列上的元素6,通过十六进制输出为3e,6。(25)C【解析】选项A)char*a;*a="china"应改为a=china;,选项B)应该是charstr[6];D)项表述方法有错误。(26)D【解析】C语言中数组下标是从0开始的,所以二维数组a[2][3]的第一维下标取值为0、1;第二维的下标取值为0、1、2,因而选项A)、B)、C)都是错误的,选项D)表示数组元素a[0][0]o(27)D【解析】在格式输入中,要求给出的是变易的地址,而D)答案中给出的s[l]是一个值的表达式。(28)B【解析】根据宏替换的替换规则,我们可知,f(2)=2*N+l=2*5+l=ll,f(l+l)=l+l*N+l=l+l*5+l=7。(29)D【解析】选项A),共用体的每个成员的起始地址都相同;选项B),共用体变量所占的内存长度等于最长的成员的长度;选项C)因为每个成员的起始地址相同,所以整型数5以浮点型输出时为5.000000;选项D)C语言规定,不能把共用体变量作为函数的参数。(30)D【解析】将有6个元素的整型数组分两行输出到一个文件中,因为输出的都是数字并且每行都没有分隔符,所以当再对其进行读取操作时,每一行都会被认为是一个完整的数,而换行符则作为它们的分隔符。(31)D【解析】通常,引用一个数组元素可以用下标法,如a[p-a]形式,或指针法,如*(&a[i])的形式。本题中a[9]=9,a[10]显然超出数组范围,注意,数组的下标是从0开始的。(32)C【解析】函数ftin(int*s,intnl,intn2)的功能是对数组s中的元素进行首尾互相调换。所以在主函数中,当fun(a»0,3)执行完后,数组把12]={4,3,2,1,5,6,7,8,9,0};再执行fun(a,4,9),数组弘12]={4,3,2,1,0,9,8,7,6,5};再执行fun(a,0,9)后,数组a[12]={5,6,7,8,9,0,l,2,3,4}。(33)A【解析】本题题意要求删除所有空格,即除了空格以外的其他所有字符都要留下。由于C语言中没有直接删除字符的操作,所以我们对于删除字符的操作都是采用”留下"字符的算法,以前的题目亦是如此。用str「]从串头到串尾逐一走动,每走到一个字符都判断其是否为空格,若不是空格(注意在if()的单引号之间有一个空格),则将其保存str[j]中。注意j的下标变化、初值及最后加串结束符(34)A【解析】本程序考察的是函数的递归调用,在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用,执行结果为1+2+3+4+5+6+7+8+9+10=55。(35)C【解析】本题中,格式符0表示的是八进制无符号形式输出整型数(不带前导0),字符常量在内存中占一个字节,存放的是ACSII码代码值。C语言规定,所有字符常量都作为整型量来处理,在计算机内部,其对应的整数值就是ACSII字符集中该字符的序号,即&*s中有几个字符就输出几个*。(36)B【解析】结构体类型的变量在程序运行期间要作为一个整体占用连续的内存单元。(37)C【解析】这是一道考查加ad函数的题。buf是一个指针,的ad是读入数据的存放地址;fwrite是输出数据的地址(以上指的是起始地址)。(38)B【解析】本题考查两个位运算符。按位异或运算符"人"是双目运算符,其功能是参与运算的两数各对应的二进位相异或,当两

59对应的二进位相异或时,结果为1。左移运算符"<<”是双目运算符,其功能把“<<"左边的运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0,并且"<<"运算符的优先级于以”。(39)A【解析】在C语言中只有自动变量和寄存器变量在使用时才占用内存单元。(40)B【解析】本题考查的是指向函数的指针。语句int(*f)(int);是对一个函数的声明,其中f是指向该函数的指针,该函数有一个整型的参数,函数返回值类型为整型。二、选择题(1)[1]输出【解析】软件测试用例是为了有效发现软件缺陷面编写的包含测试目的、测试步骤、期望测试结果的特定集合。正确认识和设计软件测试用例可以提高软件测试的有效性,便于测试质量的度量,增强测试过程的可管理性。软件测试用例包括:输入值集和输出值集。测试用例是软件测试的核心。(2)[2]前件【解析】在树形结构中,每一个结点只有一个前件,称为父结点;没有前件的结点只有一个,称为树的根结点;每一个结点可以有多个后件,它们都称为该结点的子结点;没有后件的结点称为叶子结点。(3)[3]存储结构【解析】数据的逻辑结构是指反映数据元素之间逻辑关系的数据结构;数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式。在数据的存储结构中,不仅要存放各数据元素的信息,还需要存放各数据元素之间前后件关系的信息。(4)[4]一对多(或1:N)【解析】两个实体集间的联系实际上是实体集间的函数系,这种函数关系可以有3种,即一对一(1:1)的联系、一对多(1:N)或多对一(N:1)的联系和多对多(N:N)的联系。(5)[5]概念设计阶段【解析】数据库设计分为以下6个设计阶段:需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段、实施阶段及数据库运行和维护阶段。(6)[6]N[解析】函数说明语句中的类型名必须与函数返回值的类型一致。本题实现的是在字符A的ASCII码值上加上一个常数,使之变成另一个ASCII码值,从而输出字符。(7)[7]字符串a和b的长度之和【解析】本题首先通过第一个while循环计算字符串a的长度,再通过第二个循环,将字符串a和b相连,最后返回连接后的总长度。(8)[8]!=[9]returnj【解析】本题程序的流程是:让i,j都从1开始,其中j用于控制删除后剩下的数中的下标,i用于搜索原数组中的元素。j始终是新数组已有元素中最后一个元素的下一个元素的下标,所以if()中的条件是a|j-l]!=a[i],其中就是新数组中的最后•个元素,若条件成立则表示出现了不同的值,所以a[i]要留到新数组中。注本题中i、j的初值都要从1开始,该算法只能用于数组已排序的题目中。⑼【10】a=2,b=l【解析】本题考查了switch结构的内容。C语言中,程序执行完一个case标号的内容后,如果没有break语句,控制结构会转移到下一个case继续执行,因为case常量表达式只是起语句标号作用,并不是在该处进行条件判断。本题程序在执行完内部switch结构后,继续执行了外部switch结构的case2:分支,最后a和b的值分别为2和1。(10)[11]31【解析】在函数调用时,形参值的改变,不会改变实参值。(11)[121*s-*t【解析】两字符串大小比较必须从它们的首字符开始,在对应字符相等情况下循环,直至不相等结束。相等时,若字符串已到了字符串的结束标记符,则两字符串相同,函数返回。值;如还有后继字符,则准备比较下一对字符。对应字符不相同,循环结束。循环结束时,就以两个当前字符的差返回,所以在空框处应填入*s-*t,保证在s>t时,返回正值,当s

60代表上面指定的一个结构体类型,此时,也可以用PER来定义变量。(12)[15]“filea.dat'',"r"【解析】fopen函数的调用方式通常为fopen(文件名,使用文件方式)。本题中要求程序可以打开filea.dat文件,并且是要读取文件中的内容,所以空白处应当填入"filea.dat","r".一、选择题在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置匕答在试卷上不得分。(1)软件是指A)程序B)程序和文档C)算法加数据结构D)程序、数据与相关文档的完整集合(2)检查软件产品是否符合需求定义的过程称为A)确认测试B)集成测试C)验证测试D)验收测试(3)以下不属于对象的基本特点的是A)分类性B)多态性。继承性D)封装性(4)在设计程序时,应采纳的原则之一是A)不限制goto语句的使用B)减少或取消注解行C)程序越短越好D)程序结构应有助于读者理解(5)下列叙述中正确的是A)程序执行的效率与数据的存储结构密切相关B)程序执行的效率只取决于程序的控制结构C)程序执行的效率只取决于所处理的数据量D)以上三种说法都不对(6)数据结构中,与所使用的计算机无关的是数据的A)存储结构B)物理结构C)逻辑结构D)物理和存储结构(7)线性表的顺序存储结构和线性表的链式存储结构分别是A)顺序存取的存储结构、顺序存取的存储结构B)随机存取的存储结构、顺序存取的存储结构C)随机存取的存储结构、随机存取的存储结构D)任意存取的存储结构、任意存取的存储结构(8)树是结点的集合,它的根结点数目是A)有且只有1B)1或多于1C)0或1D)至少2(9)下列有关数据库的描述,正确的是A)数据库是一个DBF文件B)数据库是一个关系C)数据库是一个结构化的数据集合D)数据库是一组文件(10)数据库、数据库系统和数据库管理系统之间的关系是A)数据库包括数据库系统和数据库管理系统B)数据库系统包括数据库和数据库管理系统C)数据库管理系统包括数据库和数据库系统D)三者没有明显的包含关系(11)以下4个选项中,不能看作一条语句的是A);B)a=5,b=2,5,c=3.6;C)if(a<5);D)if(b!=5)x=2;y=6;(12)下面四个选项中,均是不合法的用户标识符的选项是A)AP_0doB)floatlaO_AC)b-agotointD)_123tempint(13)以下选项中不属于字符常量的是A)'C'B)"C"C)\xCCD)'072'(14)设变量已正确定义并赋值,以下正确的表达式是A)x=y*5=x+zB)int(15.8%5)C)x=y+z+5,++yD)x=25%5.0(15)若变量已正确定义并赋值,以下符合C语言语法的表达式是A)a:=b+1B)a=b=c+2C)int18.5%3D)a=a+7=c+b(16)以下程序的运行结果是intk=0;voidfun(intm){m+=k;k+=m;printf(Hm=%dk=%d”,m,k++);}main()

61{inti=4;fun(i++);printf(,'i=%dk=%d

62';i,k);}A)m=4k=5i=5k=5B)m=4k=4i=5k=5C)m=4k=4i=4k=5D)m=4k=5i=4k=5(17)已有定义:charc;,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为大写字母的表达式是A)isupper(c)B)rA,<=c<=,Z,C)'A'v=c&&cv=ZD)c<=(,z,-32)&&(ra,-32)<=c(18)设有:inta=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后,n的值是A)1B)2C)3D)4(19)若变量已正确定义,有以下程序段inta=3,b=5,c=7;if(a>b)a=b;c=a;if(c!=a)c=b;printf(M%d,%d,%d

63'\a,b,c);其输出结果是A)程序段有语法错B)3,5,3C)3,5,5D)3,5,7(20)若有定义:floatx=1.5;inta=l,b=3,c=2;,则正确的switch语句是A)switch(x){caseL0:printf(”*

64");case2.0:printf(M**

65H);)B)switch((int)x);{casel:printf(,,*

66*');case2:printf(,'**

67M);}C)switch(a+b){casel:printf(n*

68M);case2+1:printf(M**

69M);}D)switch(a+b){casel:printf(**

70);}casec:printf(**

71);}(21)有以下程序#includemainO{inty=9;for(;y>O;y-)if(y%3=0)printf("%d",一y);)程序的运行结果是A)741B)963C)852D)875421(22)以下描述中正确的是A)由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句B)do-while循环由do开始,用while结束,在while(表达式)后面不能写分号C)在do-while循环体中,是先执行一次循环,再进行判断D)do-while循环中,根据情况可以省略while(23)有以下程序#includemain(){inta[]={l,2,3,4},y,*p=&a[3];—p;y=*p;printf("y=%d

72n,y);)程序的运行结果是A)y=0B)y=lC)y=2D)y=3(24)以下数组定义中错误的是A)intx[][引:{0};B)intx⑵[3]={{1,2},{3,4},{5,6}};C)intx[][3]={{1,2,3},{4,5,6}};D)intx[2][3]={l,2,3,4,5,6);(25)下面说明不正确的是A)chara[10]=,,chinaM;B)chara[10],*p=a;p=",china,'C)char*a;a=HchinanD)chara|10],*p;p=a=',china,'(26)若有定义:inta[2][3];,以下选项中对a数组元素1E确引用的是A)a[2][!l]B)a[2][3]C)a[0][3]D)a[l>2][!l](27)若要求从键盘读入含有空格字符的字符串,应使用函数A)getc()B)gets()C)getchar()D)scanf()(28)阅读下列程序段,则程序的输出结果为#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

73”,k);A)3B)5C)6D)8

74(29)在16位IBM-PC机上使用C语言,若有如下定义structdata{inti;charch;doublef;}b;则结构变量b占用内存的字节数是A)1B)2C)7D)ll(30)有以下程序#includemain(){FILE*fp;inti,a[6]={123,4,5,6};ip=fopen(,'d3.dat,,;,w+bn);fwrite(a,sizeof(int),6,fp);fseek(fp,sizeof(int)*3,SEEK_SET);/*该语句使读文件的位置指针从文件头向后移动3个int型数据*/fread(a,sizeof(int),3,fp);fclose(fp);for(i=0;i<6;i++)printf(,'%d;;a[i]);)程序运行后的输出结果是A)4,5,6,4,5,6,B)123,4,5,6,C)4,5,6,1,2,3,D)6,5,4,3,2,1,(31)有以下程序#includemain(){ints[12]={1,234,4,32,1,1,123},c[5]={0},i;for(i=0;i<12;i++)c[s[i]]++;for(i=l;i<5;i-H-)printf(M%d),,c[i]);printfCXn");)程序的运行结果是A)1234B)2344C)4332D)1123(32)有以下程序#includevoidfun(int*a,intn)/*fun函数的功能是将a所指数组元素从大到小排序*/{intt,ij;fbr(i=O;i

75");}程序的运行结果是A)1,234,5,6,7,8,9,0,B)0,9,8,7,6,5,1,2,3,4,00,9,8,7,6,5,4,3,2,1,D)1,234,9,8,7,6,5,0,(33)下面程序的输出结果是#include#includemain(){char*pl=MabcM,*p2=HABCM,str[5O]="xyz";strcpy(str+2,strcat(pl,p2));printf("%s

76”,str);}A)xyzabcABCB)zabcABCC)xyabcABCD)yzabcABC(34)以下函数返回a所指数组中最小的值所在的下标值ftin(int*a,intn){intiJ=O,p;P=j;

77fbr(i=j;ivoidabc(char*str){inta,b;for(a=b=0;str[a]!='\0,;a++)if(str[a]!='c')str[b++]=str[a];str|b]=\O*;}voidmain(){charstr[]="abcdef;abc(str);printf(''str[]=%s,,,str);}A)str|]=abdefB)str[]=abcdefC)str[]=aD)str[]=ab(36)有以下程序#include#includetypedefstruct{charname[9];charsex;floatscore[2];}STU;voidf(STUa){STUb={nZhaW;850,900};inti;strcpy(a.name,b.name);a.sex=b.sex;fbr(i=0;i<2;i++)a.score[i]=b.score[i];}main(){STUc={"QiaC95.0,92.0};f(c);printf(',%s,%c,%2.0f,%2.0f

78,,,c.name,c.sex,c.score[0],c.score[l]);)程序的运行结果是C)Zhao,f,95,92A)Qian,f,95,92B)Qian,m,85,90D)Zhao,m,85,90(37)有以下程序#includemain(){FILE*fp;inta[10]={l,2,3},i,n;fp=fopen("dl.datM,Mw");for(i=0;iv3;i++)fprintf(fp;'%dn,a[i]);fprintf(fp,”

79“);fclose(fp);fp=fopen(,,dLdat,,;,r,');fscanf(fp;'%dn,&n);fclose(fp);printf("%d

80",n);)程序的运行结果是A)12300B)123C)1D)321(38)已知inta=l,b=3贝UaAb的值为A)3B)1C)2D)4(39)阅读下列程序,则运行结果为#include"stdio.h"fun(){staticintx=5;x++;returnx;}main(){inti,x;fbr(i=0;i<3;i++)x=fiin();printf(M%d

81M,x);}A)5B)6C)7D)8(40)有以下程序#includevoidfun(char*t,char*s){while(*t!=0)t++;

82while((*t++=*s++)!=0);)main(){charss[10]=,,accM,aa[10]=,,bbxxyyH;fun(ss,aa);printf("%s,%s

83”,ss,aa);)程序的运行结果是A)accxyy,bbxxyyB)acc,bbxxyyC)accxxyy,bbxxyyD)accbbxxyy,bbxxyy二、填空题请将每一个空的正确答案写在答题卡序号的横线上,答在试卷上不给分。(1)需求分析的最终结果是产生[1】O(2)为了便于对照检查,测试用例应由输入数据和预期的【2】两部分组成。(3)数据结构分为逻辑结构与存储结构,线性链表属于【3】。(4)某二叉树中度为2的结点有18个,则该二叉树中有【4】个叶子结点。(5)[5]是数据库设计的核心。(6)已有定义:chard=r;inta=l,b;(此处c的初值为空格字符),执行b=!c&&a;后b的值为(6]o(7)设变量已正确定义为整型,则表达式n=i=2,++i,i++的值为【7】.(8)下面程序的功能是:计算110之间的奇数之和与偶数之和,请填空。#includemain(){inta,b,c,I;a=c=0;for(I=0;I<=10;I+=2){a+=I;[8];c+=b;}printf("偶数之和=%d

84",a);printf("奇数之和=%d

85",c-H);}(9)以下函数rotate的功能是:将a所指N行N列的二维数组中的最后一行放到b所指二维数组的第0列中,把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b所指二维数组中其他数据不变。#defineN4voidrotade(inta[][N],intb[][N]){intIj;for(I=0;Ivoidswap(int*a,int*b){int*t;t=a;a=b;b=t;}main(){inti=3,j=5,*p=&i,*q=&j;swap(p,q);printf(M%d%d

86u,*p,*q);)(ID下面程序的运行结果是[12].#include#defineSIZE12main(){chars[SIZE];intI;for(I=0;I

87sub(st7,SIZE-1);for(I=O;Imain(){inta[5]={2,4,6,8,10),*p;p=a;R4-+;printf(',%d,\*p);)(13)设有定义"struct{inta;floatb;charc;}abc,*p_abc=&abc;",则对结构体成员a的引用方法可以是abc.a和p_abc[14]a。(14)以下程序的运行结果是[15]o#includemain(){FILE*fp;inta[10]={l,2,3,0,0},i;fp=fopen("d2.dat",“wb”);fwtite(a,sizeof(int),5,fp);fwrite(a,sizeof(int),5,fp);fclose(fp);fp=fopen(Md2.dat";,rbM);fread(a,sizeof(int),IO,fp);fclose(fp);for(i=0;i<10;i++)printf("%d';a[i]);(DD【解析】软件是程序、数据与相关文档的集合,相对于计算机硬件而言,软件是逻辑产品而不是物理产品,是计算机的无形部分。(2)A【解析】确认测试的任务是验证软件的功能和性能,以及其他特性是否满足需求规格说明中确定的各种需求;集成测试的主要目的是发现与接口有关的错误。(3)C【解析】对象的基本特点:标识惟一性、分类性、多态性、封装性和模块独立性。(4)D【解析】滥用goto语句将使程序流程无规律,可读性差,因此A)不选;注解行有利于对程序的理解,不应减少或取消,B)也不选;程序的长短要依照实际情况而论,而不是越短越好,C)也不选。(5)A【解析】程序执行的效率与很多因素有关,如数据的存储结构、程序所处理的数据量、程序所采用的算法等。顺序存储结构在数据插入和删除操作上的效率比链式存储结构的效率低。(6)C【解析】数据结构概念一般包括数据的逻辑结构、存储结构及数据上的运算集合等。数据的逻辑结构只抽象地反映数据元素之间的逻辑关系,而不管它在计算机中的存储形式。(7)B【解析】顺序存储结构中,数据元素存放在一组地址连续的存储单元中,每个数据元素地址可通过公式LOC(ai)=LOC(al)+(i-l)L计算得到,从而实现了随机存取。对于链式存储结构,要对某结点进行存取,都得从链的头指针指向的结点开始,这是一种顺序存取的存储结构。(8)C【解析】树是N(N>0)个结点的有限集合,当N=0,时称为空树,对于空树没有根结点,即根结点的个数为0,对于非空树有且只有一个根结点,所以树的根结点数目为。或1。(9)C【解析】数据库(DataBase,简称DB)是数据的集合,它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,可被各个应用程序所共享。数据库中的数据具有"集成"、"共享"的特点。(10)B【解析】数据库系统(DatabaseSystem,简称DBS),包括数据库(Database,简称DB)和数据库管理系统(DatabaseManagementSystem,简称DBMS)。(11)D【解析】选项D)为两条语句。•(12)C【解析】C语言规定的标识符只能由字母、数字和下划线3种字符组成,第一个字

88符必须为字母或下划线,并且不能使用C语言中的关键字作为标识符。选项C)中goto和int是关键字ba中;不是组成标识符的3种字符之一;选项D)中int是关键字,所以,均是不合法用户标识符的选项是C)«(13)B【解析】在C语言程序中,用单引号把一个字符或反斜线后跟一个特定的字符括起来表示一个字符常量。选项A)、C)和D)为正确的字符常量,而选项B)是用双引号括起来的字符,表示一个字符串常量。(14)C【解析】求余运算符"%”两边的运算对象必须是整型,而选项B)和D)中"%"两边的运算对象有浮点整数据,所以选项B)和D)是错误的表达式。在选项A)中赋值表达式的两边出现相同的变量x,也是错误的。选项C)是一个逗号表达式,所以正确答案为C)。(15)B【解析】选项A)中包含一个不合法的运算符选项C)应改为(int)18.5%3;选项D)可理解为两个表达式:2+7=©+1)和a=a+7,其中第一个是错的,因为C语言规定赋值号的左边只能是单个变量,不能是表达式或常量等。因此,正确答案是选项B),它实际上相当于a=(b=c+2),进而可分解为两个表达式:b=c+2和a=b。(16)B【解析】由于在main。函数中,变量i=4,所以就调用fun(4),则输出"m=4k=4".然后变量k增1等于5,变量i增1等于5,所以main。函数的"printf("i=%dk=%d

89”,i,k);"语句输出"i=5k=5"(17)B【解析】在本题中,选项B)实际是先计算关系表达式“AV=c”的值是0还是1,再比较该值与字符Z之间的大小关系,显然不能实现题目所要求的功能,而选项A)、C)、D)都可以。(18)B【解析】本题考查逻辑与运算的运算规则。其规则是:当运算符前后两个条件表达式都满足时,其最终结果才为真。当发现第一个表达式的值为假,计算机将不再执行后面表达式的运算。本题中,由于前一个表达式的值为"假",所以,后面的表达式不再进行运算,因而n的值保持不变,仍为2。(19)B【解析】两个if语句的判断条件都不满足,程序只执行了c=a这条语句,所以变量C的值等于3,变量b的值没有变化,程序输出的结果为3.5,3o(20)C【解析】C语言中,switch语句专用于实现多分支结构程序,其特点是各分支清晰而直观。switch后面括号中可以是任何表达式,取其整数部分与各常量表达式进行比较。常量表达式中不能出现变量,且类型必须是整型、字符型或枚举型,各常量表达式各不相同。⑵)C【解析】本题考察变量的自加"++”和自减问题。当y的值为9、6或3时,if语句的条件成立,执行输出语句,输出表达式-y的值,y的自减要先于输出语句执行,故输出结果为852。(22)C【解析】dowhile语句的一般形式为:do循环体语句while(表达式);,其中循环体语句可以是复合型语句,但必须用花括号括起来。while后必须要有分号作为语句的结束,在do-while循环中,不可以省略while。(23)D【解析】在程序中指针变量p初始指向a[3],执行p减1后,p指向a[2],语句y=*p的作用是把a⑵的值赋给变量y,所以输出为y=3。(24)B【解析】二维数组的初始化有以下几种形式:①分行进行初始化;②不分行进行初始化;③部分数组元素进行初始化;④省略第一维的定义,不省略第二维的定义。选项B)等号右边分了3行,大于等号左边数组的行数2。(25)D【解析】C语言中操作一个字符串常量的方法有:①将字符串常量存放在一个字符数组之中;②用字符指针指向字符串,然后通过字符指针来访问字符串存储区域。当字符串常量在表达式中出现时,根据数组的类型转换规则,将其转换成字符指针。本题D)项中错误的关键是对数组初始化时,可以在变量定义时整体赋初值,但不能在赋值语句中整体赋值。(26)D【解析】C语言中数组下标是从0开始的,所以二维数组a[2][3]的第一维下标取值为0、1;第二维的下标取值为0、1、2,因而选项A)、B)、C)都是错误的,选项D)表示数组元素a[0][0].(27)B【解析】scanf()语句用"空格"区别不同的字符串;getc()与getcharQ语句不能用于字符串的读入。(28)A【解析】带参数的宏定义命令行形式如下:#define宏名(形参表)替换文本。首先进行M的宏替换,之后再进行N的宏替换,替换后的表达式为(a)*(b)/(c)。(29)D【解析】结构体变量所占用内存的字节数是其所有成员所占用内存字节数之和。

90本题中整型变量i所占用的内存是2字节,字符型变量ch所占用的内存是1字节,双精度型变量f所占用的内存是8字节,三者相加即可。(30)A【解析】首先利用fwrite函数将数组a中的数据写到文件中,接着fseek函数的功能是读文件的位置,指针从文件头向后移动3个int型数据,这时文件位置指针指向的是文件中的第4个int数据"4",然后fread函数将文件fp中的后3个数据4,5,6读到数组a中,这样就覆盖了数组中原来的前3项数据。最后数组中的数据就成了{4,5,645,6)。⑶)C【解析】在for(i=0;i<12;i++)c[s[i]|++中,数组元素s[i]的值作为数组c的下标,当退出循环时,数组c的4个元素的值分别为4、3、3、2,(32)D【解析】在本题中,主函数在调用fun()函数进行排序时,传递的参数是c+4和6,fun()函数实现的功能是将数组c的第5个元素开始的6个元素依次进行从大到小的顺序排列。排序之后,数组c的内容变为{123,4,9,8,7,6,5,0}。(33)C【解析】本题考查的重点是拷贝字符串一使用strcpyO函数,该函数的调用方式是:strcpy(字符数组,字符串),其中"字符串"可以是字符串常量,也可以是字符数组。函数的功能是:将"字符串"完整地复制到"字符数组"中,字符数组中原有的内容被覆盖。使用该函数时注意:①字符数组必须定义得足够大,以便容纳复制过来的字符串。复制时,连同结束标志、0'一起复制;②不能用赋值运算符"="将一个字符串直接赋值给一个字符数组,只能用strcpy()函数处理。另外,本题还考查连接字符串的strcatO函数,其调用方式是:strcat(字符数组,字符串)。功能是把"字符串"连接到"字符数组"中的字符串尾端,并存储于"字符数组"中。"字符数组"中原来的结束标志,被"字符串”的第一个字符覆盖,而"字符串"在操作中未被修改。使用该函数时注意:①由于没有边界检查,编程者要注意保证"字符数组"定义得足够大,以便容纳连接后的目标字符串;否则,会因长度不够而产生问题;②连接前两个字符串都有结束标志V)',连接后"字符数组"中存储的字符串的结束标志被舍弃,只在目标串的最后保留一个\0'o(34)D【解析】该程序先判断a[i]

91结点多一个。(1)[5]数据模型【解析】数据模型是对客观事物及联系的数据描述,它反映了实体内部及实体与实体之间的联系。因此,数据模型是数据库设计的核心。(6<6]1【解析】字符空格的ASCH码不为0,所以本题中表达式!c的值为0,b=0&&l的结果显然为0。(7)[7]3【解析】本题考查的是C语言逗号表达式的相关知识。程序在计算逗号表达式时,从左到右计算由逗号分隔各表达式的值,整个逗号表达式的值等于其中最后一个表达式的值。本题中,首先i被赋值为2,再自加1,最后i++的值计算为3。(8)[8]b=I+l【解析】本题考查了for循环语句的执行过程。i+=2是修正表达式,执行一次循环体后i的值就增加2,i的初始值为0,每次加2后的和累加至a,所以a的值就是110之间的偶数之和;b的值是111之间的奇数和,但在输出b值时,c去掉多加的11,即为110之间的奇数之和。(9)[9]a[0][I][10]b[I][0]【解析】b[i][N-l]=a[0][i]实现把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b|l][0]=a[N-l][I|实现将a所指N行N列的二维数组中的最后一行放到b所指二维数组中的第0列。(10)[11]35【解析】函数swap(int*a,int*b)的功能是实现*a和*b中两个数据的交换,在主函数中调用swap(p,q诟渗形指针变量a和b分别指向i和j,在swap(int*a,int*b)执行完后,指针变量a和b分别指向j和i,而指针变量p,q所指向变量的值没有发生变化,所以输出结果为35。(11)[12]abcdefglkjlh【解析】本题主要考查了字符变量可参与的运算。因为字符在计算机中是以ASCII码的形式存放的,所以字符变量可看作整型变量来处理,如参与算术运算等,某字符的大写字母的ASCII码值比它对应的小写字母ASCII码值小32。(12)[13]4【解析】在主函数中,语句尸a;p++使用指针p指向数组a[l],所以输出结果为4。(13)[14]->【解析】若结构体变量abc有成员4并有指针p_abc指向结构变量abc,则引用变量abc成员a的标记形式有abc.a和p_abc->a。(14)[15]1,2,3,0,0,1,2,3,0,0,【解析】本题考查文件读写函数版ad和fwrite的用法。fwrite函数将数组a的前5个元素输出到文件fp中两次,共10个字节,再调用fread函数从文件fp中读取这10个字节的数据到数组a中,此时数组a的内容就变为{1,230,0,1,2,3,0,0},最后的输出结果为"123,0,0』,2,3,0,0,"。一、选择题在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。(1)软件生命周期中花费费用最多的阶段是A)详细设计B)软件编码C)软件测试D)软件维护(2)为了提高测试的效率,应该A)随机选取测试数据B)取一切可能的输入数据作为测试数据C)在完成编码以后制定软件的测试计划D)集中对付那些错误群集的程序(3)以下不是面向对象思想中的主要特征的是A)多态B)继承C)封装D)垃圾回收(4)下列叙述中,不符合良好程序设计风格要求的是A)程序的效率第一,清晰第二B)程序的可读性好C)程序中要有必要的注释D)输入数据前要有提示信息(5)软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指A)模块间的关系B)系统结构部件转换成软件的过程描述C)软件层次结构D)软件开发过程(6)数据处理的最小单位是A)数据B)数据元素C)数据项D)数据结构(7)假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为A)log2nB)n2C)O(nl..5)D)n(n-l)/2(8)在深度为5的满二叉树中,叶子结点的个数为A)32B)31C)16D)15(9)数据库系统的核心是A)数据库B)数据库管理系统C)模拟模型D)软件工程

92(10)一个关系中属性个数为1时,称此关系为A)对应关系B)单一关系C)一兀关系D)二兀关系(11)下面各选项中,均是C语言合法标识符的选项组是A)33weautoB)_23me_3ewC)_433e_elseD)ER-DF32(12)可在C程序中用作用户标识符的一©标识符是A)andB)DateC)HiD)case_2007y-rn-dDr.TomBigl(13)以下对C语言函数的有关描述中,正确的是A)在C语言中调用函数时,只能把实参的值传给形参,形参的值不能传送给实参B)C函数既可以嵌套定义又可以递归调用C)函数必须有返【可值,否则不能使用函数D)函数必须有返回值,返回值类型不定(14)若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是A)函数的实参和其对应的形参共占同一存储单元B)形参只是形式上的存在,不占用具体存储单元C)同名的实参和形参占同一存储单元D)函数的形参和实参分别占用不同的存储单元(15)现有定义inta;doubleb;floatc;chark;,则表达式a/b+c-k值的类型为:A)intB)doubleC)floatD)char(16)以下关于long、int和short类型数据占用内存大小的叙述中正确的是A)均占4个字节B)根据数据的大小来决定所占内存的字节数C)由用户自己定义D)由C语言编译系统决定(17)有以下程序段intj;floaty;charname[50];scanf("%2d%f%s",&j,&y,name);当执行上述程序段,从键盘上输入555667777abc后,y的值为A)55566.0B)566.0C)7777.0D)566777.0(18)若变量已正确定义,有以下程序段i=0;doprintf("%d,",i);while(i++);printf("%d

93",i);其输出结果是A)0,0B)0,lC)l,lD)程序进入无限循环(19)下列程序的运行结果是#includeMstdio.hMmain(){intx=-9,y=5,z=8;if(x

94”,z);}A)6B)7C)8D)9(20)若程序执行时的输入数据是“2473”,则下述程序的输出结果是#includevoidmain(){intcs;while((cs=getchar())!=;An*){switch(cs-'21){case0case1:putchar(cs+4);case2:putchar(cs+4);break;case3:putchar(cs+3);default:putchar(cs+2);})}A)668977B)668966

9506677877D)6688766(21)以下程序的输出结果是main(){inta,i;a=O;fbr(i=l;i<5;i++){switch(i){case0:case3:a+=2;case1:case2:a+=3;default:a+=5;})printf(M%d

96",a);}A)31B)13C)10D)20(22)现有如下程序段#include"stdio.h"main(){intk[30]={12,324,45,6,768,98,21,34,453,456};inicount=0,i=0;while(k|i]){if(k[i]%2=0llk[i]%5=0)count++;i++;}printf(,,%d,%d

97M,count,i);)则程序段的输出结果为D)8,10A)7,8B)8,8C)7,10(23)若有以下程序#includeinta[]={2,4,6,8);main(){inti;int*p=a;for(i=0;i<4;i++)a[i]=*p;printf("%d

98”,a[2]);}上面程序的输出结果是A)6B)8C)4D)2(24)有以下程序#includemain(){inti,j,m=55;fbr(i=l;i<=3;i4-+)for(j=3;j<=i;j++)m=m%j;printf(H%d

99M,m);}程序的运行结果是A)0B)1C)2D)3(25)已知字符的ASCII码值是65,字符变量cl的值是A,c2的值是DI执行语句printf("%d,%d”,c1,c2-2);后,输出结果是A)A,BB)A,68C)65,66D)65,68(26)下列程序是用来判断数组中特定元素的位置所在的。#include#includeintfun(int*s,intt,int*k){inti;*k=0;fbr(i=O;i

100'Xa[k]);}

101如果输入如下整数:876675896101301401980431451777则输出结果为A)7,431B)6C)980D)6,980(27)下面程序的文件名为t.exe,在DOS下输入的命令行参数为:ttomeetmev回车〉则程序输出的结果是#include"stdio.hnmain(argc,argv)intargc;char*argv[];{inti;printf("%d

102”,argc);}D)以上答案都不正确A)3B)4C)2(28)有如下程序inta[10]={1,2,3,4,5,6,7,8,9,10);int*p=&a[3],b;b=p[5];则b的值是A)5B)6C)9D)8(29)以下叙述中错误的是A)改变函数形参的值,不会改变对应实参的值B)函数可以返回地址值C)可以给指针变量赋一个整数作为地址值D)当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL(30)下面程序的输出结果是#includemain(){inta[]={U,3,4,5,6,7,8,9,0),*p;p=a;printf(M%d

103M,*p+9);}A)0B)1C)10D)9(31)有下面程序段#include"stdio.h"#include"string.h*'main(){chara[3][20]={{MchinaM},{MisaM),{"bigcountry!M});chark[100]={0},*p=k;inti;for(i=0;i<3;i++){p=strcat(p,a[i]);)i=strlen(p);printf("%d

104”,i);}则程序段的输出结果是A)18B)19C)20D)21(32)若有定义:char*st="howareyouu;,下列程序段中正确的是A)chara[l1],*p;strcpy(p=a+l,&st[4]);B)chara[l1];strcpy(++a,st);C)chara[l1];strcpy(a,st);D)chara[],*p;strcpy(p=&a[l],st+2);(33)有以下程序#includeintfun(chars[]){intn=0;while(*s<=,9,&&*s>=,0r){n=10*n+*sJ0r;s-H-;)return(n);)main(){charprintf("%d

105”,fun(s));)程序的运行结果是A)9B)61490C)61D)5(34)设有定义:charp[]={l?2?3,},*q=p;,/下不能计算出一个char型数据所占字节数的表达式是A)sizeof(p)B)sizeof(char)C)sizeof(*q)D)sizeof(p[0])(35)有以下函数intaaa(char*s){char*t=s;while(*t++);t—;return(t-s);)以下关于aaa函数的功能的叙述正确的是A)求字符串s的长度B)比较两个串的大小。将串s复制到串tD)

106求字符串S所占字节数(36)当用户要求输入的字符串中含有空格时,应使用的输入函数是A)scanf()B)getchar()C)gets()D)getc()(37)下列选项中错误的说明语句是B)chara[]={Htoyou\0H};rtoyofi))chara[]=\0r;A)chara[]=,t?o?y7o?u?\Or};C)chara[]=,,toyou\0H;(38)以下程序的输出结果是intf(){staticinti=0;ints=l;s+=i;i++;returns;}main(){inti,a=O;for(i=0;i<5;i++)a+=f();printf("%d

107”,a);}A)2OB)24C)25(39)下列程序的输出结果是#include"stdio.h"#defineM(x,y)x%ymain(){inta,m=12,n=100;a=M(n,m);printf(n%d

108",a—);}A)2B)3C)4D)5(40)假定当前盘符下有两个如下文本文件:文件名al.txta2.txt内容123#321#则下面程序段执行后的结果为#includenstdio.h"voidfc(FILE*p){charc;while((c=fgetc(p))!=Wr)putchar(c);)D)15main(){FILE*fp;fp=fopen(,,al.txt,,,,,rn);fc(fp);fclose(fp);fp=fopen(,,a2.txt,',Mrn);fc(fp);fclose(fp);putcharCXn1);}A)123321B)123二、填空题C)321D)以上答案都不正确请将每一个空的正确答案写在答题卡序号的横线上,答在试卷上不给分。(1)软件定义时期主要包括[1J和需求分析两个阶段。(2)软件维护活动包括以下几类:改正性维护、适应性维护、【2】维护和预防性维护。(3)数据的逻辑结构有线性结构和【3】两大类。(4)某二叉树中度为2的结点有n个,则该二叉树中有【4】个叶子结点。(5)在ER图中,矩形表示【5】o(6)阅读下面程序,则执行后的输出结果是[6】o#include"stdio.h"main(){intx,y,z;x=l;y=2;z=3;if(x>y)if(x>z)printf(',%dM,x);elseprintf(,"%d'',y);

109printf(H%d

110n,z);}(7)以下程序的输出结果是[7]omain(){inty=9;for(;y>0;y-)if(y%3==0){printf(M%dM,—y);continue;}}(8)有以下程序段,且变量已正确定义和赋值for(s=1.0,k=1;k<=n;k++)s=s+1.0/(k*(k+1));printf(Hs=%f

111

112*',s);请填空,使下面程序段的功能与之完全相同s=1.0;k=l;while([8]){s=s+1.0/(k*(k+l));[9];}printf(ns=%f

113

114M,s);(9)设有以下定义和语句,则*(*(p+2)+l)的值为【10】ointa[3][2]={10,20,30,40,50,60),(*p)[2];p=a;(10)以下程序的输出结果是[11]o#includemain(){inti;for(i='a';iv'f;i++,iH)printfr%c”,i,a'+'A');printf(u

115H);1(11)以下程序中函数f的功能是在数组x的n个数(假定n个数互不相同)中找出最大最小数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。请填空。#includevoidfi(intx[],intn){intpO,pl,i,j,t,m;i=j=x[O];pO=pl=O;fbr(m=0;mi){i=x[m];p0=m;}elseif(x[m]

116,');)(12)mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。intmystrlen(char*str){inti;for(I=0;[14]!=

117';I++);return(I);}(13)阅读下列程序,则程序的输出结果为[15]o#include"stdio.h"structty{intdata;charc;};main(){structtya={30};fun(a);printf("%d%cH,a.data,a.c);}fun(structtyb){b.data=20;buy;}一、选择题1)D'【解析】软件生命周期分为软件定义、软件开发及软件运行维护3个阶段。本题中,详细设计、软件编码和软件测试都属于软件开发阶段;维护是软件生命周期的最后一个阶段,也是持续时间最长,花费代价最大的一个阶段,软件工程学的一个目的就是提高软件的可维护性,降低维护的代价。(2)D【解析】测试的目的是发现软件中的错误。经验表明,程序中存在错误的概率与该程序中已发现的错误成正比。这一现象说明,为了提高测试效率,测试人员应该集中对待那些

118错误群集的程序。(3)D【解析】面向对象思想中的三个主要特征是:封装性、继承性和多态性。(4)A【解析】当今主导的程序设计风格是"清晰第一,效率第二"的观点。结构化程序设计思想提出之前,在程序设计中曾强调程序的效率,而在实际应用中,人们更注重程序的可理解性。(5)B【解析】软件设计包括软件结构设计、数据设计、接口设计和过程设计。其中,结构设计是定义软件系统各主要部件之间的关系;数据设计是将分析时创建的模型转化为数据结构的定义;接口设计是描述软件内部、软件和操作系统之间及软件与人之间如何通信;过程设计则是把系统结构部件转换成软件的过程性描述。(6)C【解析】数据处理的最小单位是数据项;由若干数据项组成数据元素;数据是指能够被计算机识别、存储和加工处理的信息载体;数据结构是指数据之间的相互关系和数据运算。(7)D【解析】假设线性表的长度为n,则在最坏情况下,冒泡排序要经过n/2遍的从前往后的扫描和n/2遍的从后往前的扫描,需要的比较次数为n(n-l)/2.(8)C【解析】满二叉树是指除最后一层外,每一层上的所有结点都有两个叶子结点。在满二叉树中,层上的结点数都达到最大值,即在满二叉树的第k层上有2k-l个结点,且深度为m的满二叉树有2m-l个结点。⑼B【解析】数据库管理系统(DatabaseManagementSystem,简称DBMS)是数据库的机构,它是•种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等,数据库管理系统是数据库系统的核心。(10)C【解析】在关系模型数据库中,基本结构是二维表,这种二维表称为关系。关系的列称为属性,一个具有N个属性的关系称为N元关系。(ll)B【解析】合法的标识符是由字母、数字和下划线组成,并且第一个字符必须为字母或下划线,用户定义的标识符不能与关键字相同。选项A),数字不能为第一个字母,aut。为关键字;选项C)中,也是数字不能为第一个字母,else为关犍字;选项D)中负号不合法。(12)A【解析】在C语言中,合法标识符的命名规则是:标识符可以由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线。C语言的标识符可以分为关键字、预定义标识符和用户标识符。选项B)和C)中的横线以及点都不合法,选项D)中的case为C语言关键字。(13)A【解析】C语言中的函数可以进行递归调用,但是不能在函数中定义函数,函数不用有返回值,若有返回值,则返回值类型必确定。(14)D【解析】在内存中,实参单元与形参单元是不同的单元。在C语言中,仅在调用函数时,给形参分配存储单元,并将实参对应的值传递给形参,调用结束后,形参单元被释放,实参单元仍保留并维持原值。(15)B【解析】双目运算中两边运算量类型转换规律:运算数1运算数2转换结果类型短整型长整型短整型->长整型整型长整型整型->长整型字符型整型字符型->整型有符号整型无符号整型有符号整型。无符号整型整型浮点型整型->浮点型在a/b的时候,a、b的类型不一致,根据类型转换规则,把整型转换成double类型,之后的加、减类似。转化规则为char,short->int->unsigned->long->double<—float»(16)D【解析】在ANSI标准中Jong、int和short分别占用4、2和2个字节。但实际上对于某些C编译系统,int和short都占用4个字节,所以说各种类型数据占用内存大小是由选择何种C编译系统决定的。(17)B【解析】本题考查通过scanf函数输入数据时的格式控制问题。变量j的格式控制为“%2d”,即只接收输入数据的前两位,从第三位开始直到空格之间的输入都会被保存到变量y中,因为y为浮点型数据,所以输出结果为选项B)o(18)B【解析】对于do...while循环,程序先执行一次循环体,再判断循环是否继续。本题先输出一次i的值"0,",再接着判断表达式i++的值,其值为0,所以循环结束。此时变量i的值经过自加已经变为1,程序再次输出i的值"1"。(19)D【解析】if…else语句的执行过程如下,首先计算if后面一对圆括号内表达式的值,

119若表达式的值为非0,执行if子句,然后跳过else子句,去执行if语句后的下一条语句;若表达式的值为0,跳过if子句,去执行else子句,接着去执行if语句后的下一条语句。C语言的语法规定,else子句总是与前面最近的不带else的if匹配,与书写格式无关,本题目的后一个if-else相当于嵌套在第一个if子句里,相当于x=0时,z=z+l。(20)A【解析】本题主要考查switch语句的使用方法。switch语句的执行过程为:进入switch结构后,对条件表达式进行运算,然后从上至下去找与条件表达式值相匹配的case,以此作为入口,执行switch结构中后面的各语句,直到遇到break语句,则跳出switch语句,如果各case都不匹配时,则执行default后面的语句。(21)A【解析】本题考查用于多分支选择的switch语句,其一般形式为:switch(表达式){case常量表达式1:语句1;case常量表达式2:语句2;case常量表达式n:语句n;default:语句n+1;)其语义是:计算表达式的值,并逐个与其后的常量表达式值进行比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句;如表达式的值与所有case后的常量表达式均不相等时,则执行default后的语句。(22)D【解析】在C语言中,定义一维数组的语句一般形式如下:类型名数组名[常量表达式];一维数组的引用形式为:数组名[下标表达式]。count表示能被2整除或被5整除的个数,i则计算有多少个数组元素。(23)D【解析】在C语言中,数组元素下标是从0开始的;指针变量p指向数组的首地址。for循环语句中,指针变量p始终指向数组的首地址,因而执行循环赋值语句后数组各元素的值均变为21,(24)B【解析】本题考查循环语句的嵌套以及条件的判断问题。在程序中,内层循环判断条件为"j<=i",而j的初值为3,故当i的值为1和2时,内层循环体都不会被执行。只有当i和j都等于3时才会执行一次。m的值为55对3取模,计算结果为1.(25)C【解析】在C语言中,字符型数据在内存中的存储形式是ASCH码值。当需要以整型格式输出字符时,输出的也是ASCII码值。字符A和D的ASCII码值分别为65和68。(26)D【解析】本题中直接使用指针变量k,但在使用时要注意对k的指针运算。此外,一开始应知道*k的值为数组中的某一下标值,即*k=0,本函数的功能是找出数组中的最大元素的位置及最大元素的值。(27)B【解析】argc中存入的是命令行中字符串的个数。argv是一个指向字符型的指针数组的指针。(28)C【解析】p=&a[3]将指针指向数组a的第4个元素,p[5]指向数组a的第9个元素,而a[8]=9,所以b=9。29)C【解析】函数形参和实参分别占用不同的内存单元,改变形参的值不会影响对应实参的值,选项A)正确。指针类型的函数可以返回地址值,选项B)正确。在文件stdio.h中,NULL被定义为void型的指针,选项D)也正确。指针变量的值只能是存储单元地址,而不能是一个整数,选项C)错误。(30)C【解析】此题考查了指针引用一维数组元素的方法。*p+9因为运算符"*"的优先级高于所以输出结果为P指向的元素1,然后加9,值为10。(31)B【解析】字符串连接函数strcat的调用形式如下:strcat(sl,s2)。此函数将s2所指字符串的内容连接到S1所指的字符串后面,并自动覆盖S1串末尾的尾标,函数返回S1的地址值。(32)A【解析】本题综合考查字符数组的赋值和strcpy函数的用法。C语言不允许用赋值表达式对字符数组赋值,如下面的语句就是非法的:strl="China",如果想把"China"这5个字符放到数组strl中,除了逐个输入外,还能使用strcpy函数,该函数的功能是将一个字符串复制到一字符数组中。例如:strcpy(strl,"China")或strcpy(strl,str2);注意,不能企图用以下语句来实行赋值(将str2的值传给strl):strl=str2;不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。

120strcpy函数的结构是:strcpy(字符数组1,字符串2)其中,需要注意的是,字符数组1的长度不应小于字符串2的长度,”字符数组1”必须写成数组名形式,如(strl),"字符串2"可以是字符数组名,也可以是字符串常量,不能用赋值语句将一个字符串常量或字符数组宜接给一个字符数组。(33)C【解析】在fun函数中,while循环的功能是:逐个取字符数组s的字符判断其是否是数字。若是则将其作为个位数字保存到变量n中,n的原数据的各个数位将相应左移一个10进制位。当指针s指向数组的第3位时,循环条件不成立,循环结束,返回n的值,输出n的值为61。(34)A【解析】在本题中,p和q同为指向字符类型数据的指针。*q和p[0]同为字符型数据。选项B)、C)和D)都符合题目的要求;选项A)计算得出的是指针类型数据所占的内存字节数。(35)A【解析】循环开始前,指针t和s都指向字符串的起始位置,然后通过while循环判断t指向的位置是否为空,同时让t向右移动一位。while循环结束时,t自减1,此时t指向的位置是字符串的结束标志处,故t-s的值是字符串的长度,并不包括结束标志。(36)C【解析】本题综合考查了输入函数的使用。scanf函数会将空格视为分隔符,getchar函数只能输入单个字符,getc函数是文件操作函数,显然都不符合题意。通过gets函数输入字符串时,输入的空格被认为是字符串的一个字符。(37)D【解析】通过赋初值的方式给一维数组赋字符串,可以用给•般数组赋初值的相同方式给一维字符数组赋字符串,也可以在赋值时直接赋字符串常量。选项B)和C)后面的VT是多余的,在C语言中,系统会自动在字符串的结尾处加上一个字符V)作为串的结束标记。(38)D【解析】函数的静态局部变量在编译时就赋初值,即只赋初值一次,在程序运行时它已有初值,以后每次调用函数时不再重新赋值,而只是保留上次函数调用结束时的值。(39)C【解析】带参数的宏定义命令行形式如下:#define宏名(形参表)替换文本在编译的时候编译预处理程序用"替换文本"来替换宏,即M(n,m)被替换为n%m,之后计算,将计算的结果赋给a。注意,宏替换是在编译时由预处理程序完成的,宏替换不占用运行的时间,而函数调用是在程序运行时进行的,在函数的调用过程中需要占用一系列的处理时间。(40)A【解析】本题的功能是顺序的读两个文本文件,依次输出。当打开文件时出现错误,fopen函数将返回NULL。二、填空题(1)[I]可行性研究【解析】软件生命周期一般包括可行性研究与需求分析、设计、实现、测试、交付使用以及维护等,还可以将软件生命周期分为三个阶段:①软件定义阶段:可行性研究和需求分析;②软件开发阶段:设计、实现和测试;③软件运行维护阶段:交付使用和维护。(2)[2]完善性【解析】软件维护活动包括以下几类:改正性维护、适应性维护、完善性维护和预防性维护。改正性维护是指在软件交付使用后,为了识别和纠正软件错误、改正软件性能上的缺陷、排除实施中的误使用,应当进行的诊断和改正错误的过程;适应性维护是指为了使软件适应变化,而去修改软件的过程;完善性维护是指为了满足用户对软件提出的新功能与性能要求,需要修改或再次开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性;预防性维护是为了提高软件的可维护性、可靠性等,为以后的进一步改进软件打下良好基础。(3)[3]非线性结构【解析】数据的逻辑结构有线性结构和非线性结构两大类。(4)[4]n+1【解析】在任意一棵二叉树中,度为O多结点(即叶子结点)总是比度为2多结点多一个。(5)[51实体【解析】在E-R图中用矩形表示实体;椭圆形表示属性;菱形表示联系。(6)[6]3【解析】C语言的语法规定:else子句总是与前面最近的不带else的if相结合。因为x不大于y,所以执行printf("%d

121”,z);语句。(7)[7]852【解析】循环前,变量y的值为9,其中,循环语句在y大于0情况下循环,每次循环后y的值都减1.循环体是当y能被3整除时输出表达式--y,输出的是减1后的y值。这样,第一次循环因y为9,能被3整除,输出8,y也变成8。又经两次循环,y的值变为6,又让y减1变成5,并输出5;又经两次循环,y的位变成3,让y减1变成2,输出2;再经两次循环后,y的值变成0,结束循环,所以程序输出852o(8)[8]k<=n[9]k++【解析】本题要求将一个for循环改成while循环。首先要保证循环条件相同,在for循环中,每次执行循环之后,循环控制变量k都会加1,而while循环

122则没有,故需在循环体中增加改变k数值的语句“k++;"o(1)[10]60【解析】本题中,代码定义3行2列的二维数组a,定义指向两个元素的一维数组指针p,并让p指向两维数组a的首行,则代码*(*(p+2)+l)中的p+2指向两维数组a的第三行a⑵,*(片2)指向a[2][0],*(p+2)+1指向a⑵[l],*(*(p+2)+l)是引用a⑵[1],其值是60(10)[11]ACE【解析】在本题中,for循环体每执行完一次,变量i的值自加两次。i的初值为宜,执行一次循环后变为匕之后再变成或当其变为g时,循环条件若不满足,循环终止,故本题共输出3个字符。表达式"i」a'+'A'"即表示输出i对应的大写字母,结果为ACE。(11)[12]x[0][13]x[0]【解析】函数f()通过for循环逐个比较数组x中的元素,循环结束后,凶和pl分别表示最大值和最小值在数组中的下标位置,然后按照题意将最大值x[p0]和数组的最后一个元素x[n-l]交换位置,再将最小值x[pl]和第一个元素(x[0])进行交换,所以空白处应该填入(12)[14]*(str+I)或str[I]【解析】str是指针变量,它指向字符型数据,在循环过程中,可以用*(str+I)来访问字符串中的第I个元素,判断是否为结束标志,如果不是,1=1+1,继续取下一个元素进行判断,直到*(str+I)的值为V)为止,也可以用下标的方式引用字符,如*(str+l)相当于str[I]o(13)[15130x【解析】本题的参数传递属于值传递,所以被调用函数内不能改变调用函数中的数据。一、选择题在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题上相应位置上,答在试卷上不得分。(1)算法的空间复杂度是指A)算法程序的长度B)算法程序中的指令条数C)算法程序所占的存储空间D)执行算法需要的内存空间(2)在结构化程序设计中,模块划分的原则是A)各模块应包括尽量多的功能B)各模块的规模应尽量大C)各模块之间的联系应尽量紧密D)模块内具有高内聚度、模块间具有低耦合度(3)下列叙述中,不属于测试的特征的是A)测试的挑剔性B)完全测试的不可能性C)测试的可靠性D)测试的经济性(4)下面关于对象概念的描述中,错误的是A)对象就是C语言中的结构体变量B)对象代表着正在创建的系统中的一个实体C)对象是一个状态和操作(或方法)的封装体D)对象之间的信息传递是通过消息进行的(5)下列关于队列的叙述中正确的是A)在队列中只能插入数据B)在队列中只能删除数据C)队列是先进先出的线性表D)队列是先进后出的线性表(6)已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是A)acbedB)decabC)deabcD)cedba(7)某二叉树中有n个度为2的结点,则该二叉树中的叶子结点数为A)n+1B)n-1C)2nD)n/2(8)设有如下三个关系表RSTABCABCm13m13nn13下列操作中正确的是A)T=RCISB)T=RUSC)T=RxSD)T=R/S(9)下列叙述中,正确的是A)用E-R图能够表示实体集间一对一的联系、一对多的联系和多对多的联系B)用E-R图只能表示实体集之间一对一的联系C)用E-R图只能表示实体集之间一对多的联

123系D)用E-R图表示的概念数据模型只能转换为关系数据模型(10)下列有关数据库的描述,正确的是A)数据处理是将信息转化为数据的过程B)数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变C)关系中的每一列称为元组,一个元组就是一个字段D)如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字(11)C语言规定,在一个源程序中,main函数的位置A)必须在最开始B)必须在系统调用的库函数的后面C)可以任意D)必须在最后(12)以下叙述中错误的是A)计算机不能直接执行用C语言编写的源程序B)C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件C)后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件D)后缀为.obj和.exe的二进制文件都可以直接运行(13)下列选项可以正确表示字符型常量的是A)VB)"a"C)"\897"D)296(14)以下叙述中正确的是A)构成C程序的基本单位是函数B)可以在一个函数中定义另一个函数C)main()函数必须放在其他函数之前D)C函数定义的格式是K&R格式(15)设变量均已正确定义,若要通过scanf("%d%c%d%c",&al,&cl,&a2,&c2);语句为变量al和a2赋数值10和20,为变量cl和c2赋字符X和丫。以下所示的输入形式中正确的是(注:口代表空格字符)A)lOcXn2OaY<0^>B)l(tiX20oY<回车>C)dMK回车〉口2»:回车〉D)10X<回车〉20丫<回车〉(16)若有说明: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;(17)在执行下述程序时,若从键盘输入6和8,则结果为main(){inta,b,s;scanf("%d%d",&a,&b);s=aif(a

124M,k);}A)5B)3C)2D)0(19)在C语言中,函数返回值的类型最终取决于A)函数定义时在函数首部所说明的函数类型B)return语句中表达式值的类型C)调用函数时主调函数所传递的实参类型D)函数定义时形参的类型(20)已知大写字母A的ASCII码是65,小写字母a的ASCH码是97。以下不能将变量c中的大写字母转换为对应小写字母的语句是A)c=(c,A')%26+'a'B)c=c+32C)c=c,A'+'a'D)c=('A'+c)%26・'T(21)以下选项中,当x为大于I的奇数时,值为。的表达式是A)x%2==1B)x/2C)x%2!=0D)x%2==0(22)有以下程序main(){intk=5,n=0;

125do{switch(k){case1:case3:n+=l;k-;break;default:n=0;k—;case2:case4:n+=2;k—;break;)printf(,'%d,,,n);)while(k>0&&n<5);}程序运行后的输出结果是A)235B)0235C)02356D)2356(23)有如下程序main(){intn=9;while(n>6){n-;printf(n%d",n);}}该程序的输出结果是A)987B)876C)8765D)9876(24)有以下程序#includemain(){intc;while((c=getchar())

126){switch(c-,2/){case0:casel:putchar(c4-4);case2:putchar(c+4);break;case3:putchar(c4-3);case4:putchar(c+3);break;}}printf(n

127H)}从第•列开始输入以下数据vCR>代表一个回车符。2743程序的输出结果是A)66877B)66896606677877D)6688766(25)有以下程序main(){intx=0,y=0,i;for{if(i%2==0){x++;continue;}if(i%5==0){y++;break;}}print""%d,%d”,x,y);}程序的输出结果是A)2,lB)2,2C)2,5D)5,2(26)有以下程序main(){inta[4][4]={{lA3,2}48A5J},{3,7,2,5},{4,8,6,l}},ijXt;for(i=0;iv4;i++)for(j=0;j<3;j++)for(k=j+1;k<4;k++)1地[)]国“闪回){1=2皿”;前]口]=2回国间1€皿5}/*按列排序*/for(i=0;i<4;i++)printf(n%d;',a[i][i]);)程序运行后的输出结果是A)l,6,5,7,B)8,7,3,l,C)4,7,5,2,D)l,6,2,1,(27)有以下程序intf(intn){if(n==l)retum1;elsereturnf(n-l)+l;}main(){intij=0;fbr(i=l;i<3;i++)j+=f(i);

128printf(,'%d

129,(,j);)程序运行后的输出结果是A)4B)3C)2D)1(28)当运行以下程序时,从键盘输入AhaMA(空格)AhavCRz则下面程序的运行结果是#includemain(){chars[80],Ua';inti=0;scanf(,,%s,',s);while(s[i]H{if(s[i]==c)s[i]-32;elseif(s[i]==c-32)s[i]=s[i]+32;i++;)puts(s);}A)ahaMaB)AbAMaC)AhAMa[空格]ahAD)ahAMa[空格]ahA(29)下面程序输出的结果是main(){inti;inta[3][3]={1,2,3,4,5,67,8,9};for(i=0;i<3;i++)printf(M%dH,a[2-i][i]);}A)159B)753C)357D)591(30)现有如下程序段#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

130n,*(&a[0][0]+2*i+j-2));}则程序的输出结果为A)21B)78C)23D)28(31)请选出正确的程序段A)int*p;scanf("%d';p);B)int*syk;*s=100;C)int*s,k;char*p,c;s=&k;p=&c;D)int*s,k;char*p,e;s=&k;p=&c;s=p;*s=l;(32)下面程序段的运行结果是chara[]="lanuage\*p;p=a;while(*p!Wu){printfC%c”,*p-32);p++;}A)LANGUAGEB)languageC)LAND)langUAGE(33)以下程序的输出结果是#includeinta[3][3]={l,2,3,4,5,6,7,8,9,},*p;

131main(){p=(int*)malloc(sizeof(int));ftp,a);printf("%d

132",*p);free(p);}f(int*s,intp[][3]){*s=p[l][l];)A)1B)4C)7D)5(34)有以下程序voidf(int*q){inti=0;for(;i<5;i++)(*q)++;)main(){inta[5]={123,4,5},i;f(a);for(i=0;i<5;i++)printf("%d,",a[i]);)程序运行后的输出结果是A)2,2,3,4,5,B)6,2,3,4,5,C)1,2,3,4,5,D)2,3,4,5,6,(35)以下合法的字符型常量是A)^1^B)'\08rC)3D)"

133"(36)有以下语句,则对a数组元素的引用不正确的是inta[l0]={0,1,2,34,5,6,7,8,9},*p=a;A)a[p-a]B)*(&a[i])C)p[i]D)*(*(a+i))(37)有以下程序#includemain(){charp[20]=fa;b,'c','d'},q[]=Habc';r[]=Habcden;strcat(p,r);strcpy(p+strlen(q),q);printf("%d

134",strlen(p));}程序运行后的输出结果是A)9B)6C)llD)7(38)在C语言中,变量的隐含存储类别是A)autoB)staticC)extemD)无存储类别(39)以下程序的输出结果是main(){intc=35;printf("%d

135H,c&c);}A)0B)70C)35D)1(40)有以下程序#includemain(){FILE*fp;inti=20,j=30,k,n;fp=fopen(,'dl.dat,,,,,w,');fprintf(fp/,%d

136,',i);fprintf(fp,,,%d

137'\j);fclose(fp);fp=fopen(,,dl.dat,,,,,rn);fscanf(fp,"%d%d”,&k,&n);printf(M%d%d

138M,k,n);fclose(fp);}程序运行后的输出结果是A)2030B)2050C)3050D)3020二、填空题请将每一个空的正确答案写在答题卡序号的横线上,答在试卷上不给分。(1)设一棵完全二叉树共有700个结点,则在该二叉树中有【1】个叶子结点。(2)常用的黑箱测试有等价类划分法、【2】和错误推测法3种。(3)数据库管理系统常见的数据模型有层次模型、网状模型和[313种。

139(4)通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为【4】(5)数据库保护分为:安全性控制、【5】、并发性控制和数据的恢复。(6)执行以下程序后的输出结果是【6】。main(){inta=10;a=(3*5,a+4);printf("a=%d

140",a);}(7)以下程序的输出结果是[7].#includemain(){printf(M%d

141M,strlen('!BM

142012\}(8)已定义charch^$r;int执行j!=ch&&i++以后,i的值为【8】。(9)以下程序的运行结果是[9]o#includelongfib(intg){switch(g){case0:return0;case1:case2:return1;}return(fib(g-1)+fib(g-2));}main(){longk;k=fib⑸;printf(,,k=%5ld

143",k);}(10)下面程序的功能是输出数组s中最大元素的下标,请填空。main(){intk,p,s[]={l,-9,7,2,-10,3);fbr(p=O,k=p;p<6;p++)if(s[p]>s[k])[10]printf("%d

144”,k);}(11)以下程序的功能是:求出数组x中各相邻两个元素的和依次存放到a数组中,然后输出。请填空。main(){intx[10],a[9],I;foKI=0;I<10;I++)scanf("%d",&x[I]);for([11];I<10;I++)a[I-l]=x[I]+[12]for(l=0;I<9;I++)printf("%d",a[I));printfC'");)(12)设有以下程序,为使之正确运行,请在横线中填入应包含的命令行。(注:try_me()函数在a:\rnyfile.txt中有定义。)[13]main(){printf(M

145n);try_me();printf(',

146H);}(13)以下程序的功能是建立一个带有头结点的单向链表,链表结点中的数据通过键盘输入,当输入数据为时,表示输入结束(链表头结点的data域不放数据,表空的条件是ph・>next=NULL),请填空。#includestructlist{intdata;structlist*next;};structlist*creatlist(){structlist*p,*q,*ph;inta;ph=(structlist*)malloc(sizeof(structlist));p=q=ph;printf("Inputanintegernumber;entre-1toend:

147n);scanf(H%d",&a);while(a!=-l){p=(structlist*)malloc(sizeof(structlist));

148[13]=a;q->next=p;[15]=p;scanf(u%dn,&a);}p->next=\0;retum(ph);}main(){structlist*head;head=creatlist();}(1)D【解析】算法的复杂度主要包括算法的时间复杂度和算法的空间复杂度。所谓算法的时间复杂度是指执行算法所需要的计算工作量;算法的空间复杂度是指执行这个算法所需要的内存空间。(2)D【解析】在结构化程序设计中,一般较优秀的软件设计尽量做到高内聚、低耦合,这样有利于提高软件模块的独立性,也是模块划分的原则。(3)C【解析】软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定。它有3个方面的看要特征,即测试的挑剔性、完全测试的不可能性及测试的经济性。其中,没有测试的可靠性这一说法。(4)A【解析】对象是由数据和容许的操作组成的封装体,与客观实体有直接的对应关系,对象之间通过传递消息互相联系,从模拟现实世界中不同事物彼此之间的联系,B)、C)、D)是正确的,对象的思想广泛应用于C++、Java等语言中,因此A)错误。(5)C【解析】队列是一种操作受限的线性表。它只允许在线性表的一端进行插入操作,另一端进行删除操作。其中,允许插入的一端称为队尾(代ar),允许删除的一端称为队首(front)。队列具有先进先出的特点,它是按“先进先出”的原则组织数据的。(6)D【解析】依据后序遍历序列可确定根结点为c;再依据中序遍历序列可知其左子树由deba构成,右子树为空;又由左子树的后序遍历序列可知其根结点为e,由中序遍历序列可知其左子树为d,右子树由ba构成,如下图所示,求得该二叉树的前序遍历序列为选项D)。(7)A【解析】对于任何一棵二叉树T,如果其终端结点(叶子)数为nl,度为2的结点数为n2,则nl=n2+l,所以该二叉树的叶子结点数等于n+1。(8)C【解析】对于两个关系的合并操作可以用笛卡尔积表示。设有n元关系R和m元关系S,它们分别有p和q个元组,则R与S的笛卡儿积记为RxS它是一个m+n元关系,元组个数是pxq由题意可得,关系T是由关系R与关系S进行笛卡尔积运算得到的。(9)A【解析】两个实体之间的联系实际上是实体集间的函数关系,这种函数关系可以有下面几种,即一对一的联系、一对多(或多对一)的联系和多对多的联系;概念模型便于向各种模型转换。由于概念模型不依赖于具体的数据库管理系统,因此,容易向关系模型、网状模型和层次模型等各种模型转换。(10)D【解析】数据处理是指将数据转换成信息的过程,故选项A)叙述错误;数据的物理独立性是指数据的物理结构的改变,不会影响数据库的逻辑结构,故选项B)叙述错误;关系中的行称为元组,对应存储文件中的记录,关系中的列称为属性,对应存储文件中的字段,故选项C)叙述错误。(11)C【解析】不论main函数在整个过程中的位置如何,一个C程序总是从main函数开始执行的。(12)D【解析】一个C语言的源程序(后缀名为©在经过编译器编译后,先生成一个汇编语言程序,然后由编译程序再将汇编语言程序翻译成机器指令程序,即目标程序(后缀名为Qbj),目标程序不可以宜接运行,它要和库函数或其他目标程序连接成可执行文件(后缀名为.exe)后方可运行。(13)A【解析】C语言中,一个字符常量代表ASCII字符集中的一个字符,在程序中用单引号括起来作为字符常量,字符常量的的范围是0~127o由于字符常量用单引号括起来,所以选项B),C)错误,选项D)超过了字符常量的表示范围。(14)A【解析】本题考查C语言的综合基础知识。构成C程序的基本单位是函数,不论main函数在整个程序中的位置如何,一个C程序总是从main函数开始执行,C语言的函数定义都是互相平行、独立的,在定义函数时,一个函数内不能定义另一个函数。C函数定义的一般格式有两种:传统格式和现代格式。传统格式也称K&R格式,是早期编译系统使用的格式;现代格式又称ANSI格式,是现代编译系统使用的格式。(15)D【解析】本题中,scanf函数的格式控制没有空格,所以,对于选项A)、B)、C),输入的第一个空格会作为字符赋值给变量cl,而不会被解释成分隔符。(16)D【解析】是求址运算符是指变量说明符。选项A)、B)应改为scanf("%d",p);选项C)中指针变量p未指向一确定的内存单元,不能为其赋值,并且这样做很危险,建议不使用。

149(17)B【解析】本题中a的值为6,b的值为8,最后s的值为8,s*=s等价于s=s*s。(18)C【解析】本题考查简单的if...else语句。先执行条件if(a6可以知道,最后一次循环开始时,n的值应该为7,所以最后一次执行循环时,输出为6,由此可以排除选项C)»(24)A【解析】本题主要考查了字符输入输出函数getchar和putchar的使用。getchar函数用来从标准输入设备上读入一个字符,pulchar(c)函数是将字符变量c中的字符输出到标准输出设备上,并且字符可以看作整数参与运算。(25)A【解析】本题考查了continue和break语句在循环语句中的作用。break语句的作用是结束本层循环,而continue语句的作用是结束本次循环直接进入到下次循环。(26)A【解析】本题利用多重for循环的嵌套来实现对二维数组元素的按列排序。利用最外层循环来实现对列的控制。内部循环利用选择法对数组元素按照从小到大的顺序进行排列,最后输出对角线上的元素值。(27)B【解析】在main函数中,对f⑴和f(2)的值进行了累加。f(D=lf(2)=f(l)+l=2最后,j的值为1+2=3(28)A【解析】本题主要考查的知识点是大写字母比它对应的小写字母ASCII码值小32,并且字符可以看作整数进行算术运算等操作。(29)B【解析】本题用循环的方法考查对数组概念的掌握。首先,当i=0时,数组中的位置是a[2H0]=7,当然,如果用排除法,就不用考虑后面的循环,因为在4个选项中,第1个数为7的选项只有B),本题执行第2次循环时,i的值为1,则printf函数中的数组指向为a[l][l]=5,依次循环,可求出答案。(30)A【解析】通过地址来引用二维数组,若有以下定义:inta[3H4],i,j;且当0

150比它将要实际存放的最长字符多一个元素,以存放W。(33)D【解析】本题考查了二维数组元素引用的方法。题中用动态存储分配函数malloc分配了一个int型数据长度大小的内存,然后指针p指向了这段内存,函数f()中对p所指向的数据进行了赋值,为二维数组第二行第二列的元素,时应于实参a的元素5,所以输出结果为5。(34)B【解析】调用函数f()时,将数组a的地址传递给了指针q,此时q指向的就是数组a的第一个元素a[0].在5次循环过程中,q始终指向a[0],因此a[0]的值增加了5.最后的输出结果为“6,2,3,4,5"。(35)A【解析】C语言的字符常量是用单引号(即撇号)括起来的一个字符。除此之外,在C语言中还允许用一个开头的字符序列来表示字符常量。其中,形式'、ddd”表示I到3位8进制数所代表的字符;形式"\xhh”表示1到2位16进制数所代表的字符。在本题中,“13,表示回车符,是一个字符常量;1081用8进制数所代表的字符,但形式不正确,因为8进制数所代表的字符中不会出现数字"8";65,不是一个字符,而是一个十进制数字;',n"是用双引号括起来的一个字符,表示一个字符串,而不是字符常量。(36)D【解析】本题考查数组指针的应用。选项D)第一层括号中为数组a中第i项元素的值,外面再加指针运算符没有意义。(37)B【解析】strcpy()函数的功能是将字符串q复制到从p[3]位置开始的存储单元,同时复制字符串结束标志V)'到p[6]中。函数strlen。返回的是字符串中不包括VT在内的实际长度,故本题答案为B)(38)A【解析】auto变量:无static声明的局部变量。用auto作存储类别的声明时,可以不写auto,存储类别隐含确定为auto(自动存储类别),是动态存储方式。大多数变量是自动变量。用static声明的局部变量是静态局部变量。函数调用结束后静态局部变量占据的内存存储单元空间不糅放,局部变量保留原值,下次调用时可以继续使用该值。用extern声明外部变量,外部变量即全局变量,可以用extern声明来改变全局变量的作用域,实际上,关健字"auto"可以省略,aut。不写则隐含确定为"自动存储类别",属于动态存储方式。(39)C【解析】本题考查按位与因为1&1=1,0&0=0,所以任何数与自身按位与,结果仍为此数,不发生变化。(40)A【解析】本题中,最主要的是掌握儿个有关文件函数的应用。函数名:fopen功能:打开一个文件调用方式FILE*fp;fp=fopen(文件名,使用文件方式);函数名:fprintf功能:传送格式化输出到一个文件中调用方式:fprintf(文件指针,格式字符串,输出表列);函数名:fclose功能:关闭一个文件调用方式:fclose(文件指针);函数名:fscanf功能:从磁盘文件执行格式化输入调用方式:fscanf(文件指针,格式字符串,输入列表)。二、填空题(1)[1]350【解析】完全二叉树中,设高度为n,则除h层外其它层结点数都到达最大,可以算出h=10,l至9层结点个数为2-9-1=511,最后一层结点个数为700-511=189个,189/2=95,除最后一层外共有结点2-(9-1)-95=161个,所以所有的结点个数为:189+161=350个。⑵【2】边界值分析法【解析】黑箱测试法完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例。常用的黑箱测试有等价类划分法、边界值分析法和错误推测法3种。(3)[3]关系模型【解析】数据库管理系统是位于用户与操作系统之间的一层系统管理软件,属于系统软件是用户与数据库之间的一个标准接口,其总是基于某种数据模型,可以分为层次模型、网状模型和关系模型。(4)[4]软件生命周期【解析】软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。一般包括可行性研究与需求分析、设计、实现、测试、

151交付使用以及维护等活动。(3)[5]完整性控制【解析】安全性控制:防止未经授权的用户有意或无意存取数据库中的数据,以免数据被泄露、更改或破坏;完整性控制:保证数据库中数据及语义的正确性和有效性,防止任何对数据造成错误的操作;并发控制:正确处理好多用户、多任务环境下的并发操作,防止错误发生;恢复:当数据库被破坏或数据不正确时,使数据库将其恢复到正确的状态。(4)[6]a=14【解析】本题考查的是表达式的优先级问题。先计算表达式3*5=15,再计算a+4=14,将数据14赋值给A根据printf()函数内的输出格式控制串,最后的输出结果应为"a=14"«⑺【7】9【解析】本题的字符串中共有9个字符,它们分别是T、B,、、n,、。、'l\'2\\l\N',其中,"

152"表示换行,"\\"表示反斜杠字符所以本题的最后输出结果为9。(8)[8]1【解析】在执行逻辑表达式"j=!ch&&i++"时,首先判断j=!ch的值,因为"ch=$"不为0,所以"j=!ch=O”,编译系统便不再计算表达式“i++”的值,i的值不变,仍为k(9)[9]k=5【解析】本题主要考查了函数的递归调用方法。g=0或g=l或g=2是递归的终止条件,然后用回代的方法从一个已知值推出下一个值,直到计算出最终结果。(10)[10]k=p;【解析】为寻找数组中最大元素的下标,需先预设1个临时最大元素的下标,并顺序逐一考查数组的元素,当发现当前元素比临时最大元素更大时,就用当前元素的下标更新临时最大元素下标。宜至考查了数组的全部元素后,这临时最大元素下标就是数组的最大元素下标。通常预设的最大元素下标是数组的首元素下标,考查通常从首元素开始顺序向后继元素考查。程序中,存储临时最大元素下标的变量是k,变量p控制顺序考查的循环控制变量。当发现当前元素s[p]比临时最大元素s[k]更大时,应该用p更新k,所以在空框处应填入代码"k=p;"。(11)[11]1=1[12]x[I-l]【解析】对于10个数,相临的两个数相加取和,总共要进行9次加法运算,所以空14处应填入1=1o相临的两个数相加取和,放在数组a中,x[0]与x[l]的和存放在a⑼中,所以空15处应填入x[I-l].(12)[13]#include【解析】本题考查了函数的存储分类的概念。如果没有特别说明,函数的存储范围是从定义函数的位置到文件的结尾,如果其他文件想使用这个函数,需要用#include文件包含命令将定义函数的文件包含进来。(13)[14]p->data[15]q【解析】本题考查的是链表这一数据结构对结构体变量中数据的引用。链表的特点是结构体变量中有两个域,一个是数据,另一个是指向该结构体变量类型的指针,用以指明链表的下一个结点。一、选择题在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。(1)程序流程图中带有箭头的线段表示的是A)图兀关系B)数据流C)控制流D)调用关系(2)结构化程序设计的基本原则不包括A)多态性B)自顶向下C)模块化D)逐步求精(3)软件设计中模块划分应遵循的准则是A)低内聚低耦合B)高内聚低耦合C)低内聚高耦合D)高内聚高耦合(4)在软件开发中,需求分析阶段产生的主要文档是A)可行性分析报告B)软件需求规格说明书C)概要设计说明书D)集成测试计划(5)算法的有穷性是指A)算法程序的运行时间是有限的B)算法程序所处理的数据量是有限的C)算法程序的长度是有限的D)算法只能被有限的用户使用(6)对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-l)/2的排序方法是A)快速排序B)冒泡排序C)直接插入排序D)堆排序(7)下列关于栈的叙述正确的是

153A)栈按"先进先出"组织数据B)栈按“先进后出"组织数据C)只能在栈底插入数据D)不能删除数据(8)在数据库设计中,将E-R图转换成关系数据模型的过程属于A)需求分析阶段B)概念设计阶段C)逻辑设计阶段D)物理设计阶段(9)有三个关系R、S和T如下:RBCDa0klb1nlSBCDf3h2a0kln2xlTBCDa0kl由关系R和S通过运算得到关系T,则所使用的运算为A)并B)自然连接C)笛卡尔积D)交(10)设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为A)课号,成绩B)学号,成绩C)学号,课号D)学号,姓名,成绩(11)以下叙述中正确的是A)C程序中的注释只能出现在程序的开始位置和语句的后面B)C程序书写格式严格,要求一行内只能写一个语句C)C程序书写格式自由,一个语句可以写在多行上D)用C语言编写的程序只能放在一个程序文件中B)FORC)&a(12)以下选项中不合法的标识符是A)printD)_00(13)以下选项中不属于字符常量的是A)CB)"C"C八xCC'D)A072'(14)设变量已正确定义并赋值,以下正确的表达式是A)x=y*5=x+zB)int(15.8%5)C)x=y+z+5,++yD)x=25%5.0(15)以下定义语句中正确的是A)inta=b=0;B)charAb^5+l,b=C)floata=l,*b=&a,*c=&b;D)doublea=0.0;b=l.l;(16)有以下程序段charch;intk;ch='a';k=12;printf("%c,%d,",ch,ch,k);printf("k=%d

154",k);已知字符a的ASCII码值为97,则执行上述程序段后输出结果是A)因变量类型与格式描述符的类型不匹配输出无定值B)输出项与格式描述符个数不符,输出为零值或不定值C)a,97,12k=12D)a,97,k=12(17)已知字母A的ASCII码值为65,若变量kk为char型,以下不能正确判断出kk中的值为大写字母的表达式是A)kk>='A'&&kk<='Z'B)!(kk>='A'||kk<='Z')C)(kk+32)>='a'&&(kk+32)<='Z'D)isalpha(kk)&&(kk<91)(18)当变量c的值不为2、4、6时,值也为"真"的表达式是A)(c==2)ll(c==4)ll(c==6)B)(c>=2&&c<=6)ll(c!=3)ll(c!=5)C)(c>=2&&c<=6)&&!(c%2)D)(c>=2&&c<=6)&&(c%2!=l)(19)若变量已正确定义,有以下程序段inta=3,b=5,c=7;if(a>b)a=b;c=a;if(c!=a)c=b;

155printf(,,%d,%d,%d

156M,a,b,c);其输出结果是A)程序段有语法错B)3,5,3C)3,5,5D)3,5,7(20)有以下程序#includemain(){intx=l,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;)case2:a++;b++;break;case3:a++;b++;)printf(ua=%d,b=%d

157',,a,b);)程序的运行结果是A)a=l,b=0B)a=2,b=2C)a=l,b=lD)a=2,b=l(21)有以下程序#includemain(){intx=8;fbr(;x>0;x—){if(x%3){printf(M%d,M,x—);continue;}printf(M%d,\-x);}}程序的运行结果是A)7,4,2,B)8,7,5,2,C)9,7,6,4,D)8,5,4,2,(22)以下不构成无限循环的语句或语句组是A)n=0;do{++n;}while(n<=0);B)n=0;while(l){n++;}C)n=10;while(n);{n—;)D)for(n=0,i=l;;i++)n+=i;(23)有以下程序#includemain(){inta[]={l,2,3,4},y,*p=&a[3];-P;y=*p;printf(Hy=%d

158n,y);)程序的运行结果是A)y=0B)y=lC)y=2D)y=3(24)以下错误的定义语句是A)intx[][3]={{0},{1},{1,2,3}};B)intx[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};C)intx[4][]={{1,2,3),{1,2,3},{1,2,3},{1,2,3}};D)intx[][3]={1,2,3.4);(25)设有如下程序段chars[20]="Beijing",*p;P=s;则执行p=s;语句后,以下叙述正确的是A)可以用*p表示s[0]B)s数组中元素的个数和p所指字符串长度相等C)s和p都是指针变量D)数组s中的内容和指针变量p中的内容相同(26)若有定义:inta[2][3];,以下选项中对a数组元素正确引用的是A)a[2][!l]B)a[2][3]C)a[0][3]D)a[l>2][!l](27)有定义语句:char若要从终端给s输入5个字符,错误的输入语句是A)gets(&s[O]);B)scanf(',%s,,,s+1);C)gets(s);D)scanf(,,%s,',s[l]);(28)以下叙述中错误的是A)在程序中凡是以“#"开始的语句行都是预处理命令行B)预处理命令行的最后不

159能以分号表示结束C)#defineMAX是合法的宏定义命令行D)C程序对预处理命令行的处理是在程序执行的过程中进行的(29)以下结构体类型说明和变量定义中正确的是A)tupedefstrct{intn;charc;}REC;RECtl,t2;B)tupedefstrct{intn;charc;};RECtl,t2;C)tupedefstrctREC;{intn=0;charc='A';}tl,t2;D)strct{intn;charc;}REC;RECtl,t2;(30)以下叙述中错误的是A)gets函数用于从终端读入字符串B)getchar函数用于从磁盘文件读入字符Ofputs函数用于把字符串输出到文件D)fwrite函数用于以二进制形式输出数据到文件(31)有以下程序#includemain(){ints[12]={l,23A4,3,2,l,l,l,2,3},c[5]={0},i;for(i=0;i

160H);)程序的运行结果是A)1234B)2344C)4332D)1123(32)有以下程序#includevoidfun(int*s,intnl,intn2){inti,j,t;i=nl;j=n2;while(i

161M);)程序的运行结果是A)0987654321B)4321098765Q5678901234D)0987651234(33)有以下程序#include#includevoidfun(char*s[],intn){char*t;inti,j;fbr(i=0;i

162if(strlen(s[i])>strlen(s[j])){t=s[i];s[i]:s[j];s[j]=t;}main(){char*ss[]={"bcc","bbcc",“xy”,"aaaacc”,"aabcc"};fun(ss,5);printf("%s,%s

163”,ss[0],ss[4]);)程序的运行结果是A)xy,aaaaccB)aaaacc,xyD)aabcc,bcc(34)有以下程序#includeintf(intx){inty;if(x=Ollx==l)return(3);y=x*x-f(x-2);returny;}main(){intz;z=f(3);printf("%d

164”,z);)程序的运行结果是A)OB)9C)6D)8(35)有以下程序#includevoidfun(char*a,char*b){while(*a=^3a-H-;while(*b=*a){b++;a++;)}main(){char*s=,,*****a*b******,t[8O];ftin(s,t);puts(t);)程序的运行结果是y^)*****a*bB)a*b^^)a*b****(36)有以下程序#include#includetypedefstruct{charname[9];charsex;floatscore[2];}STU;voidf(STUa){STUb={”Zha*85.0,90.0};inti;strcpy(a.name,b.name);a.sex=b.sex;fbr(i=0;i<2;i+4-)a.score[i]=b.score[i];)main(){STUc={,'Qiatf';95.0,92.0};f(c);printf(,,%s,%c,%2.0f,%2.0f

165,,»c.name,c.sex,c.scoreI}程序的运行结果是A)Qian,f,95,92B)Qian,m,85,90D)Zhao,m,85,90(37)有以下程序#includeD)abC)bcc,aabccc.score[11);C)Zhao,f,95,92main(){FILE*fp;inta[10]={l,2,3),i,n;fp=fopen(nd1.dat","w");for(i=0;i<3;i++)fprintf(fp,"%d",a[i]);fprintfCfp/An1');fclose(fp);

166fp=fopen(,,dl.datM;,r");fscanf(fp,n%d",&n);fclose(fp);printf("%d

167”,n);)程序的运行结果是A)12300B)123C)1D)321(38)变量a中的数据用二进制表示的形式是01011101,变量b中的数据用二进制表示的形式是11110000。若要求将a的高4位取反,低4位不变,所要执行的运算是A)aAbB)albC)a&bD)a«4(39)在C语言中,只有在使用时才占用内存单元的变量,其存储类型是A)auto和registerB)extem和registerC)auto和staticD)static和register(40)设有定义语句int(*f)(int);,则以下叙述正确的是A)f是基类型为int的指针变量B)f是指向函数的指针变量,该函数具有一个int类型的形参C)f是指向int类型一维数组的指针变量D)f是函数名,该函数的返回值是基类型为int类型的地址二、填空题请将每一个空的正确答案写在答题卡序号的横线上,答在试卷上不给分。(I)测试用例包括输入值集和【1】值集。(2)深度为5的满二叉树有【2】个叶子结点。(3)设某循环队列的容量为50,头指针front=5(指向队头元素的前一位置),尾指针但a=29(指向队尾元素),则该循环队列中共有13】个元素。(4)在关系数据库中,用来表示实体之间联系的是【4】o(5)在数据库管理系统提供的数据定义语言、数据操纵语言和数据控制语言中,【5】负责数据的模式定义与数据的物理存取构建。(6)已有定义:chard=,;inta=l,b;(此处c的初值为空格字符),执行b=!c&&a;后b的值为[6]o(7)设变量已正确定义为整型,则表达式n=i=2,++i,i++的值为【7】.(8)若有定义:intk;,以下程序段的输出结果是[8】ofor(k=2;k<6;k++,k++)printf("##%d",k);(9)以下程序的定义语句中,x[l]的初值是[9】,程序运行后输出的内容是【10】o#includemain(){intx[]={1,23,4,5,6,7,8,9,10,11,12,13,14,15,16),*p[4],i;for(i=0;i<4;i++){p[i]=&x[2*i+l];printf("%d",p[i][O]);)printf("

168");)(10)以下程序的输出结果是[11].#includevoidswap(int*a,int*b){int*t;t=a;a=b;b=t;main(){inti=3,j=5,*p=&i,*q=&j;sw叩(p,q);printf("%d%d

169u,*p,*q);(ID以下程序的输出结果是[12].#includemain(){inta[5]={2,4,6,8,10},*p;p=a;p++;prinlf("%d",*p);)(12)以下程序的输出结果是[13].#includevoidfun(intx){if(x/2>0)fun(x/2);printf("%d”,x);

170)main(){fun(3);printfCAn1');}(13)以下程序中函数fun的功能是:统计person所指结构体数组中所有性别(sex)为M的记录的个数,存入变量n中,并作为函数值返回。请填空。#include#defineN3typedefstruct{intnum;charnam[10];charsex;}SS;intfun(SSperson[]){intI,n=0;for(I=0;I

171M,n);)(14)以下程序的功能是从名为fileadat的文本文件中逐个读入字符并显示在屏幕上。请填空。#includemain(){FILE*fp;charch;fp=fopen([15]);ch=fgetc(fp);while(!feof(fp)){putchar(ch);ch=fgetc(fp);}putcharC

172r);fcIose(fp);)一、选择题(DC【解析】程序流程图是人们对解决问题的方法、思路或算法的一种描述。其中,图框表示各种操作的类型,图框中的文字和符号表示操作的内容,流程线表示操作的先后次序。带箭头的线段在数据流程图中表示数据流。带箭头的线段在程序流程图中表示控制流。题中给出的选项中,在图元之间用带有箭头的线段表示图元关系。在模块之间用带有箭头的线段表示调用关系。构成程序流程图的基本图符及含义:T或表示控制流;□表示加工步骤;表示逻辑条件。(2)A【解析】结构化程序设计的原则包括:"自顶而下,逐步求精”的设计思想,"独立功能,单出、入口"的模块化设计等。多态性是面向对象程序语言的特征。(3)B【解析】模块划分应遵循的准则包括模块之间的耦合和内聚。一般来说,要求模块之间的耦合尽可能地低,即模块尽可能独立,要求模块的内聚程度尽可能地高,即高内聚、低耦合的原则。(4)B【解析】需求分析阶段的工作主要包括需求获取、需求分析、编写需求规格说明书和需求评审等四方面。产生的主要文档为软件需求规格说明书,可以为用户、分析人员和设计人员之间的交流提供方便,可以直接支持目标软件系统的确认,又可以作为控制软件开发进程的依据。(5)A【解析】算法具有6个特性:①有穷性:一个算法必须总是(对任何合法的输入值)在执行有穷步之后结束,且每一步都可在有限时间内完成,即运行时间是有限的;②确定性:算法中每一条指令必须有确切的含义,读者理解时不会产生二义性。③可行性:一个算法是可行的,即算法中描述的操作都是可以通过已经实现的基本运算执行有限次来实现。④输入:一个算法有零个或多个输入,这些输入取自于某个特定的对象的集合。⑤输出:一个算法有一个或多个输出。(6)D【解析】在最坏情况下,快速排序、冒泡排序和宜接插入排序需要的比较次数都n(n-1)/2,堆排序需要比较的次数为nlog2n。(7)B【解析】在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的一端称为栈底。栈顶元素总是最后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。即栈是按照"先进后出"或"后进先出”的原则组织数据的。(8)C【解析】数据库的逻辑设计分为:①将概念模型转换成一般的数据模型;②将一般

173的数据模型转换为特定的数据库管理系统所支持的数据模型。把概念模型转换成关系数据模型就是把E-R图转换成一组关系模式。(9)D【解析】在关系运算中,交的定义如下:设R1和R2为参加运算的两个关系,它们具有相同的度n,且相对应的属性值取自同一个域,则为交运算,结果仍为度等于n的关系,其中,交运算的结果既属于R1又属于R2。(10)C【解析】"选课SC"表是"学生S"表和"课程C"表的映射表,主键是两个表主键的组合。(11)C【解析】在C语言中,注释可以加在程序中的任何位置,选项A)错误;C程序可以分模块写在不同的文件中,编译时在将其组合在一起,选项D)错误。C程序的书写风格很自由,不但一行可以写多个语句,还可以将一个语句写在多行中。所以正确答案选C).(12)C【解析】C语言合法标识符的命名规则是:标识符只能由字母、数字和下划线组成,并且第一个字符必须为字母或下划线。因为选项C)中的标识符的第一个字符为所以C)为本题的正确答案。(13)B【解析】在C语言程序中,用单引号把一个字符或反斜线后跟一个特定的字符括起来表示一个字符常量。选项A)、C)和D)为正确的字符常量。而选项B)是用双引号括起来的字符,表示一个字符串常量。所以正确答案为B)。(14)C【解析】求余运算符"%”两边的运算对象必须是整型,而选项B)和D)中"%"两边的运算对象有浮点整数据,所以选项B)和D)是错误的表达式。在选项A)中赋值表达式的两边出现相同的变量x,也是错误的。选项C)是一个逗号表达式,所以正确答案为C)。(15)B【解析】本题考查变量的定义方法。如果要一次进行多个变量的定义,则在它们之间要用逗号隔开。因此选项A)和C)错误。在选项C)中,变量c是一个浮点型指针,它只能指向一个浮点型数据,不能指向指针变量bo所以正确答案为B)。(16)D【解析】输出格式控制符%c表示将变量以字符的形式输出;输出格式控制符%d表示将变量以带符号的十进制整型数输出,所以第一个输出语句输出的结果为a,97;第二个输出语句输出的结果为k=12。所以选项D)为正确答案。(17)B【解析】C语言的字符以其ASCII码的形式存在,所以要确定某个字符是大写字母,只要确定它的ASCII码在A和Z之间就可以了,选项A)和C)符合要求。函数isalpha用来确定一个字符是否字母,大写字母的ASCII码值的范围为65到90,所以如果一个字母的ASCII码小于91,那么就能确定它是大写字母。本题答案选B)。(18)B【解析】满足表达式(0=2&&°<=6)的整型变量©的值是2,3,4,5,6。当变量<:的值不为2,4,6时,其值只能为3或5,所以表达式c!=3和C!=5中至少有一个为真,即不论C为何值,表达式B)都为“真"。正确答案为B)。(19)B【解析】两个if语句的判断条件都不满足,程序只执行了c=a这条语句,所以变量c的值等于3,变量b的值没能变化,程序输出的结果为3,5,3。所以正确答案为B)o(20)D【解析】本题考查了switch结构的内容。C语言中,程序执行完一个case标号的内容后,如果没有break语句,控制结构会转移到下一个case继续执行,因为case常量表达式只是起语句标号作用,并不是在该处进行条件判断。本题程序在执行完内部switch结构后,继续执行了外部switch结构的case2:分支。最后a和b的值分别为2和1。(21)D【解析】本题中,程序每执行一次循环x的值减2,循环共执行4次。当x的值为8,4,2时,printf语句先输出x的值,再将x的值减1。而当x为6时,if语句条件成立,程序先将x的值减1,再将其输出。所以输出结果为选项D)。(22)A【解析】选项A)中变量n的值,先自加1,再进行循环条件判断,此时循环条件n<=0不成立,跳出循环。所以正确答案为A。(23)D【解析】在程序中指针变量p初始指向a[3],执行p减1后,p指向a[2],语句y=*p的作用是把a⑵的值赋给变量y,所以输出为y=3。正确答案为D)。(24)C【解析】本题考查的是二维数组的定义和初始化方法。C语言中,在定义并初始化二维数组时,可以省略数组的第一维的长度,但是不能省略第二维的长度。故选项C)错误。(25)A【解析】语句p=s的作用是把字符数组s的首地址作为初值赋给了指针变量p,并且使p指向了字符数组s的第一个字符s[0]o(26)D【解析】C语言中数组下标是从0开始的,所以二维数组a[2][3]的第一维下标取值为0、1;第二维的下标取值为0、1、2,因而选项A)、B)、C)都是错误的,选项D)表示是数组元素a[0][0]。

174所以正确答案为D)。(27)D【解析】在格式输入中,要求给出的是变易的地址,而D)答案中给出的s川是一个值的表达式。(28)D【解析】C语言中的预处理命令以符号#开头,这些命令是在程序编译之前进行处理的,选项D)的描述错误。故答案选D)。(29)A【解析】本题考查的是typedef的用法和结构体变量的定义方法。typedef可用于声明结构体类型,其格式为:typedefstruct{结构元素定义}结构类型;本题正确答案为A)。(30)B【解析】getchar函数的作用是从终端读入一个字符。⑶)C【解析】在for(i=0;i<12;i++)c[s[i]]++中,数组元素s[i]的值作为数组c的下标,当退出循环时,数组c的4个元素的值分别为4、3、3、2.所以输出结果为选项C)。(32)C【解析】函数fun(int*s,intnl,intn2)的功能是对数组s中的元素进行首尾互相调换。所以在主函数中,当fun(40,3)执行完后,数组批12]={4,3,2,1,5,6,7,8,9,0};再执行fun(a,4,9),数组2[12]={4,3,2,1,0,9,8,7,6,5};再执行fun(a,0,9)后,数组a[12]={5,6,7,8,9,0,l,2,3,4)。所以正确答案为C)。(33)A【解析】函数fun(char*s[],intn)的功能是对字符串数组的元素按照字符串的长度从小到大排序。在主函数中执行fun(ss,5)语句后,*ss[]={"xy","bcc","bbcc","aabcc","aaaacc"},ss[0],ss[4]的输出结果为xy,aaaacc。所以选项A)为正确答案。(34)C【解析】函数intf(intx)是一个递归函数调用,当x的值等于0或1时,函数值等于3,其它情况下y=x2-f(x-2)o所以在主函数中执行语句z=f(3)时,y=3*3-f(3-2)=9-f(l)=9-3=6。所以正确答案为C).(35)C【解析】在函数fun(char*&char*b)中,while(*a='*')a++的功能是:如果*a的内容为“,则a指针向后移动,直到遇到非阳字符为止,退出循环进入下一个while循环,在while(*b=*a){b++;a++;}中,把字符数组a逐个字符的赋给字符数组b。所以在主函数中,执行ftm(s,t)语句后,字符数组t中的内容为"a*b****”,所以选项C)为正确答案。(36)A【解析】本题考查的是函数调用时的参数传递问题。程序在调用函数f时,传给函数f的参数只是结构变量c在栈中的一个拷贝,函数f所做所有操作只是针对这个数据拷贝进行的修改,这些都不会影响变量c的值。(37)B【解析】在函数中首先把整型数组a[10]中的每个元素写入文件dl.dat中,然后再次打开这个文件,把文件dl.dat中的内容读入到整型变量n中,最后输出变量n的值。所以正确答案为B)o(38)A【解析】本题考查的是位运算的知识,对于任何二进制数,和1进行异或运算会让其取反,而和。进行异或运算不会产生任何变化,故本题答案选A)o(39)A【解析】在C语言中只有自动变量和寄存器变量在使用时才占用内存单元。所以正确答案为A),(40)B【解析】本题考查的是指向函数的指针。语句int(*f)(int);是对一个函数的声明,其中f是指向该函数的指针,该函数有一个整型的参数,函数返回值类型为整型。故答案选B)。二、填空题(1)[1]预期输出【解析】输入数据是指被测试函数所读取的外部数据及这些数据的初始值。预期输出是指:返回值及被测试函数所写入的外部数据的结果值。(2)[2]16【解析】在满二叉树中,叶子结点数目的计算公式为2n-l,其中n为树的深度。(3)[3]24【解析】实现循环队列时,头指针指向第一个元素的前一个空间,尾指针指向最后一个元素。因此,此时队列中6,7,8,...,29这二十四个空间存有元素,即队列中有29-5=24个元素。(4)[4]关系【解析】在关系数据库中,用关系(二维表结构)表示实体及其之间联系的模型称为关系数据模型。(5)[5]数据定义语言【解析】数据定义语言:负责数据的模式定义与数据的物理存取构建;数据操纵语言:负责数据的操纵,如查询与增、删、改等;数据控制语言:负责数据完整性、安全性的定义与检查以及并发控制、故障恢复等。(6)[6]1【解析】字符空格的ASCH码不为0,所以本题中表达式!c的值为O,b=O&&l的结果显然为0。(7)[7]3【解析】本题考查的是C语言逗号表达式的相关知识。程序在计算逗号表达式时,从左到右计算由逗号分隔的各表达式的值,整个逗号表达式的值等于其中的最后一个表达式的值。本题中,首先i被赋值为2,再自加1,最后i++的值计算为3.(8)[8]##2##4【解析】在for循环语句中,自变量k的自增表达式为k++,k++,这是一个逗号表达式,所以输出结果为##2##4。

175(7)[9]2[10]2468【解析】在主函数中根据整型数组x[]的定义可知,x⑴的初值等于2。在for循环语句中,当i=0时,p[0]=&x[l],p[0][0]=2;当i=l时,p[l]=&x[3],p[l][0]=4;当i=2时,p[2]=&x[5],p[2][0]=6;当i=3时,p[3]=&x[7],p[3][0J=8。所以程序输出的结果为2468.(10)[11]35【解析】函数swap(int*a,int*b)的功能是实现*a和*b中两个数据的交换,在主函数中调用swap(p,q)后渗形指新变量a和b分别指向i和j,在swap(int*a,int*b)执行完后,指针变量a和b分别指向j和i,而指针变量p.q所指向变量的值没有发生变化,所以输出结果为35。(11)[12]4【解析】在主函数中,语句p=a;p++使用指针p指向数组a[l],所以输出结果为4<1(12)[13]13【解析】在主函数中调用fun(3)时,实参3传递给形参X。在ftm(x)内,执行第一条语句,输出1,然后执行第二条语句,输出3,所以结果为13。(13)[14]person[I].sex【解析】在函数fun(SSperson]])对person」的性别进行判断,所以其正确的调用格式为person[I].sexo(14)[15]"filea.dat","r"【解析】fopen函数的调用方式通常为fopen(文件名,使用文件方式)。本题中要求程序可以打开filea.dat文件,并且是要读取文件中的内容。所以空白处应当填入"filea.dat","r".2012年3月全国计算机等级考试二级C语言上机题库第一套1.程序填空程序通过定义学生结构体数组,存储了若干个学生的学号、姓名和三门课的成绩。函数fun的功能是将存放学生数据的结构体数组,按照姓名的字典序(从小到大排序)。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。第一处structstudentt;第二处for(i=0;i0)2程序修改给定程序MOD11.C中函数fun的功能是:在p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向上顺序移动。/**found**/q=p+i;/**found**/while(q>p)3程序设计学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写了函数fun,它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。intfun(STREC*a,STREC*b,intl,inth){inti,j=O;for(i=0;i=l&&a|i].s<=h)b[j++]=a[i];returnj;}第二套2.程序填空给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序连接。函数fun的功能是:删除链表中数据域值相同的结点,使之只保留一个。

176第一处free(q);第二处q=p->next;第三处q=q->next;1.程序修改给定程序MODI1.C中函数fun的功能是:用选择法对数组中的n各元素按从小到大的顺序进行排序。/♦♦found**/P=j;/**found**/p=i;2.程序设计请编写一个fun函数,它的功能是:求出1到m之间(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。voidfun(intm,int*a,int*n)(inti;*n=0;fbr(i=7;i<=m;i+4-)if((i%7==0)||(i%ll==0))a[(*n)++]=i;}第三套1.程序填空函数fun的功能是:逆置数组元素是的值。例如:若a所指数组中的数据依次为:1、2,3、4、5、6、7、8、9,则逆置后依次为:9、8、7、6、5、4、3、2、1。形参n给出数组中数组中数据的个数。第一处for(i=0;i

177for(i=0;idata==ch)returnn;第三处k=fun(head,ch);2.程序修改给定程序MODI1.C中函数fun的功能是:删除p所指字符串的所有空白字符(包括制表符、回车符及换行符)。输入字符串时用‘#'结束输入。/**found**/for(i=0,t=0;p|i];i++)/**found**/c[t]=>\0,;3.程序设计请编写一个函数fun,将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。voidfiin(char*ss)(inti;for(i=1;i='a,&&ss[i]<=,z!)ss[i]-=32;第五套1.程序填空给定程序中,函数fun的功能是:计算下式前n项的和作为函数值返回。例如:当形参n的值为10的时,函数返回:9.6125588。第一处s=0;第二处for(i=l;i<=n;i++)第三处s=s+(2.0*i-1)*(2.0*i+1)/(t*t);2.程序修改给定程序MODI1.C中函数fun的功能是:统计substr所指字符串在str所指字符串中出现伯次数。/**found**/

178fbr(i=O;str[i];i++)/♦♦found**/if(substr[k+l]=,\O,)3.程序设计请编写一个函数fun,它的功能是:根据以下公式求JI的值(要求满足精度0.0005,即某项小于06005时停止送代):程序运行后,如果输入精度为0.0005,则程序输出为3.14-。doublefun(doubleeps){doubles=l,t=l./3;intn=1;while(t>=eps){s+=t;n4-4-;t=t*n/(2.0*n+l):}return(s*2.0);}第六套1.程序填空给定程序中,函数fun的功能是:将形参s所指定字符串中所有的字母字符顺序前移,其他字母顺序后移,处理后字符串的首地址作为函数值返回。第一处t[j]=s[i]y-H-;第二处for(i=0;i

179a->score[i]+=l;第三处returna;1.程序修改给定程序MODI1.C中函数fun的功能是:从N个字符串中找出最长的那个串,并将其地址作为函数值返回。各字符串在主函数中输入,并放在一个字符串数组中。/**found**/char*fun(char(*sq)[M])/**found**/returnsp;2.程序设计函数fun的功能是:将a、b中的两位正整数合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位依次放在变量c的百位和个位上,b中的十位和个位数依次放在变量c的十位和千位上。#includevoidfun(inta,intb,long*c){*c=(b%10)*1000+(a/10)*100+(b/10)*10+a%10;)第八套1.程序填空函数fiin的功能是:将形参观者工所指数组中的前半部分元素中的值和后半部分元素中的值对换。形参n中存放数组中数据的个数,若n为奇书,则中间元素不动。第一处p=(n%2==0)?n/2:n/2+1;第二处a[i]=a[p+i];第三处a[p+i]=t;2.程序修改给定程序MODI1.C中函数fun的功能是:把主函数中输入的三个数,最大的放在a中,最小的放在c中,中间的放在b中。/**found**/floatk;Z**found**/if(*a<*c)3.程序设计学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写了函数fun,它的功能是:把分数最高的学生数据放在b所指的数组中,注意:分数最高的学生可能不止一个,函数返回分数最高的学生的人数。intfun(STREC*a,STREC*b){inti,max=a[0].s,n=0;for(i=l;i

180第九套1.程序填空给定程序中,函数fun的功能是:计算形参x所指数组中N个数的平均值,(规定所有数均为正数),将所指数组中小于平均值的数据移至数据的前部,大于等于平均数的移至x所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。第一处for(i=0;i

181假定整数数列中的数不重复,并存放在数组中。给定程序MODI1.C中函数fun的功能是:删除数列中值为x的元素。N中存放的是数列中元素的个数。/♦♦found**/if(p=n)return-1'/♦♦found**/a[i]=a[i+l];3.程序设计学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写了函数fun,它的功能是:把分数最低的学生数据放在b所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生的人数。intfun(STREC*a,STREC*b)(inti,j=0,min=a[0].s;for(i=0;ia[i].s){j=0;b|j++]=a[i];min=a[i].s;)elseif(min==a[i].s)b|j++]=a[i];}returnj;}第十一套1.程序填空给定程序中,函数fun的功能是:计算形参x所指数组中N个数的平均值,(规定所有数均为正数),将所指数组中大于平均值的数据移至数据的前部,小于等于平均数的移至x所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。第一处av=s/N;第二处y[j++]=x[i];x[i]=-l;}第三处if(x[i]!=-l)y[j++]=x[i];2.程序修改给定程序MODI1.C中函数fun的功能是:读入一行英文文本行,将其中每个单词的第一个字母改成大写,然后输出次文本行(这里的“单词”是指由空格隔开的字符串)。/**found**/#include/**found**/upfst(char*p)3.程序设计程序定义了NXN的二级数组,并在主函数中赋值,请编写函数fun,函数的功能是:求出数组周边元素的平均值并作出函数值饭给主函数中的s.doublefun(intw|)|N|){inti,j,n=O;doublesum=O;

182for(i=0;ivN;i++){sum+=w[O][i]+w[N-l][i];n+=2;Jfor(i=1;i

183",i,sqrt((double)i));第二处fclose(fp);第三处if((fp=fopen(fname,"r"))=NULL)2.程序修改给定程序MODI1.C中函数fun的功能是:将n个无序整数从小到大排序。/**found**/fbr(i=j+l;ivoidfiin(inta,intb,long*c)(*c=(b%10)*1000+(a%10)*100+(b/10)*10+(a/10);}第十三套1.程序填空给定程序中,函数fun的功能是:找出N*N矩阵中每列元素中的最大值,并按顺序一次存放于形参b所指的一维数组中。第一处b[i]=a[0][i];第二处if(b[i]

184t=*x;*x=*y;*y=t;1.程序设计编写函数fun,函数的功能是求出小于或等于lim的所有素数并放在aa数组中,函数返回所求出的素数的个数。函数fun中给出的语句仅供参考。#include#defineMAX100intfun(intlim,intaa[MAX]){inti,j,k=0;fbr(i=2;i<=lim;i++){for(j=2;j<=(i/2);j++)if(i%j==0)break;if(j>(i/2))aa(k-H-]=i;}returnk;}第十四套1.程序填空函数fun的功能是进行字母转换。若形参ch中小写英文字母,则转换成相应的大写英文字母;若形参ch中是大写英文字母,则转换成相应的小写英文字母;并将转换的结果作为函数值返回。第一处if((ch>='a')&&(ch<='z'))第二处returnch+'a'-'A'第三处returnch;2.程序修改给定程序MODI1.C中函数fun的功能是:给一维数组a输入任意四个整数并按下列的规律输出。例如输出1、2、3、4,程序输出一下方阵。a)123341243411234/**found**/voidfun(int*a)/**fdund**/a|j]=a|j-l];3.程序设计请编写函数fun,函数的功能是:计算并输出给定整数n的所有因子(不包过1和n本身)之和。规定n的值不大于1000.intfun(intn)(ints=0,i;fbr(i=2;i

185returns;第十五套1.程序填空给定程序中,函数的功能是:把形参S所指字符串下标为奇数的字符右移到下一个奇书位置,最右边呗移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动(注:字符串的长度大于等于2)。例如,形参s所指的字符串为:abcdefgh,执行结果为:ahcbedgo第一处if(n%2==0)k=n-l;第二处c=s[k];第三处s[l]=c;2.程序修改给定程序MODI1.C中函数fun的功能是:求s=aa…aa—…一aaa—aa—a(此处aa…aa表示n个a,a和n的值在1至9旗)。/**found**/longs=O,t=O;/**found**/t=t/10;3.程序设计请编写一个函数voidfun(char*tt,intppl]),统计在tt所指字符串中‘a'至'z'26个小写字母各自出现在的次数,并依次放在pp数组中。voidfun(char*tt,intpp[])(char*p=tt;inti;for(i=0;i<26;i+4-)PP[i]=0;while(*p){if(*p>='a'&&*p<='z')pp[*p-‘a']+=l;P++;))第十六套1.程序填空人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中,且编号唯一。函数fim的功能是:找出指定编号人员数据,作为函数值返回,由主函数输出,若指定编号不存在,返回数据中编号为空串。第1处STUfun(STU*std,char*num)第2处if(strcmp(std[i].num,num)==0)第3处return(std[i]);4.程序修改给定程序M0DI1.C中函数fun的功能是:从s所指字符串中,找出与t所指字符串相同的子串的个数作为函数值返回。/**found**/r++;p++;/**found**/if(*r==0)5.程序设计函数fun的功能是:将s所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指数组中。#include

186#includevoidfun(char*s,chart[]){inti,j=0;for(i=0;i=>0,&&s[i]<=,9,)n++;第3处*t=n;2.程序修改给定程序MODI1.C中函数fun的功能是:通过某种方式实现两个变量的交换,规定不允许增加语句和表达式。例如变量a中的值原为8,b中的值原为3,程序运行后a中值为3,b中的值为8./**found**/t=*x;*x=y;/**found**/return(t);3.程序设计请编写函数ftm,函数的功能是:求出1到1000之间能被7或11整除,但不能同时被7和11整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。#includeviodfun(int*a,int*n){inti;*n=0;for(i=7;i

187的值由主函数传给fun函数。/**found**/while((2<=high)&&(n<10))/**found**/yes=0;break;1.程序设计请编写函数fun,函数的功能是:利用一下所示的简单迭代方法求方程求方程:cos(x)-x=0的一个实根。xn+,=cos(xn)迭代步骤如下:(1)取xl的初值为0.0:(2)x0=xl,把xl的值赋给x0;(3)xl=cos(x0),求出一个新的xl;(4)若xdxl的绝对值小于0.000001执行步骤(5)否则执行步骤(2);(5)所求xl就是方程cos(x)-x=0的一个实根作为函数值返回。程序将输出结果为:Root=0.739058»floatfun()(floatx0,x1=0.0;do{x0=x1;xl=cos(x0);}while(fabs(x0-xl)>0.000001);returnxl;)第十九套1.程序填空给定程序中,函数fun的功能是:将a所指的3X5矩阵中第k列的元素左移到第0列,第k列以后的每列元素行依次左移,原来左边的各列依次绕到右边。第1处for(p=l;p<=k;p++)第2处for(j=0;j

188给定程序中,函数fun的功能是:对形参s所指字符串中下标为奇数的字符ASCII码大小递增排序,并将排序后的下标为奇数的字符取出,形成一个新串。第1处t=i;第2处for(j=i+2;j=num)/**found**/t=s/n2.程序设计请编写一个函数voidfun(chara[],charb[],intn),其功能是:删除一个字符串指定下标的字符。其中,a指向原字符串,删除指定字符后的字符串放在b所指的n中存入指定的下标。viodfun(chara[],charb[],intn)(strncpy(b,a,n);b[n]=0;strcat(b,a+n+l);)第二十一套1.程序填空给定程序中,函数fun的功能是:在形参ss所指字符串数组中,将所有串长超过k的字符串右边的字符删去,只保留左边的k个字符。ss所指字符串数组中共有N个字符串,且串小于Mo第•处voidfun(char(*ss)[M],intk)第二处while(i

189if(k>n)(i=n;j=k;for(;a[j]!=O;j++)a[i++]=a[j];a[i]=0;})第二十二套1.程序填空给定程序中,函数fun的功能是:a所指4X3矩阵中第k行的元素与第0行元素交换。例如:有下列矩阵123456789101112若k为2,程序执行结果为789456123101112第一处voidfun(int(*a)[N],intk)第二处for(i=0;itLj+U)3.程序设计请编写函数fun,函数的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。voidfun(char*ss)(char*p=ss;inri=0;while(*p){if((i%2)&&(*p>=,a,&&*p<='z'))*p-=32;P++;i++;1)第二十三套1.程序填空给定程序的功能是:调用函数fun将指定源文件中的内容复制到指定的目标文件中,复制成功时函数的返回值是1,失败是返回值是0.在复制的过程中,把复制的内容输出到终端屏幕。主函数源文件名放在变量sfname中,目标文件放在变量tfname中。第一处

190if((fs=fopen(source,,,r,,))==NULL)第二处while(!feof(fs))第三处fputc(ch,ft);1.程序修改给定程序MODI1.C中函数fun的功能是:将长整型中每一位上为偶数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。/**found**/if(d%2==0)/**found**/s/=10;2.程序设计函数fun的功能是:将两位正整数a、b合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位依次放在变量c的十位和千位上,b中的十位和个位数依次放在变量c的百位和个位上。voidfun(inta,intb,long*c)(*c=(a%10)*1000+(b/10)*100+(a/10)*10+(b%10);第二十四套1.程序填空程序通过定义学生结构体变量,存储了学生的学号、姓名和三门课的成绩。函数ftin的功能是将形参a所指结构体变量中的数据赋给函数中的结构体变量b,并修改b中的学号和姓名,最后输出修改后的数据。第一处b=a;第二处strcpy(b.name,MLiSiw)第三处for(i=0;i<3;i++)printf(t4%6.2f\b.score[i]);2.程序修改给定程序MODI1.C中函数fun的功能是:从s所指字符串中删除所有小写字母Co请改正程序中的错误,使它能计算出正确的结果。/**found**/s|j++]=s[i];/**found**/3.程序设计假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串的前导*号全部移到字符串的尾部。函数fun中给出的函数仅供参考。voidfun(char*a){char*p,*q;intn=0;p=a;while(*p=='*'){n++;p++;)q=a;while(*p){*q=*p;P++;q++;

191)fbr(;n>O;n-)*q+4-=,*,;*q='\0';}第二十五套1.程序填空用筛选法可得到2—n(n<10000)之间的所有素数,方法是:苜先从素数2开始,将所有2的倍数的数从数表中删去(把数表中相应位置的值置成0);接着从数表中找下一个非0数,并从数表中删去该数的所有倍数,依此类推,宜到所找的下一个数等于n为止。这样会得到一个序列:2、3,5、7、11、13、17、19、23……函数fun用筛选法找出所有小于等于n的素数,并统计素数的个数作为函数值返回。第一处for(j=a[i]*2;j<=n;j+=a[i])第二处while(a[i]==0)第三处if(a[i]!=0)2.程序修改给定程序MODU.C中函数fun的功能是:为一个偶数寻找两个素数,这两个素数之和等于该偶数,并将这两个素数通过形参指针传回主函数。/**found**Zy=l;/**foune**/d=a-i;3.程序设计请编写函数fun,它的功能是:计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。doublefun(intn)(inti;doublesum=0.0;fbr(i=l;i

192进制数,并按高位到低位顺序输出。/**found**/aa[i]=m%k;/**found**/printf("%d”,aa[i-l]);1.程序设计编写一个函数,从num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址。(注意:主函数中用****作为结束输入的标志,函数fun中给出的语句仅供参考)。fun(char(*a)[81],intnum,char**max)(inti,k=O,maxlen;maxlen=strlen(a[k]);for(i=1;imaxlen){maxlen=strlen(a[i]);k=i;*max=a|k];)第二十七套1.程序填空函数fun的功能是计算f(x)=l+x-2/2!+3/31-4/4!+的前n项和。若x=2.5,n=15时,函数值为1.91791数第一处f=l;第二处t*=(-l)*x/i;第三处f+=t;2.程序修改给定程序MODI1.C中函数fun的功能是:从三个红球,5个白球,6个黑球中任意取出8个作为一组,进行输出。在没组中,可以没有黑球,但必须要有红球和白球。组合数作为函数值返回。正确的组合数应该是15.程序中i的值代表红球数,j代表白球数,k代表黑球数。/**found**/for(i=l;i<=3;i++)/**found**/if(k>=0&&k<=6)3.程序设计请编写函数fun,它的功能是:计算并输出下列多项式的值:sn=l+l/l!+1/2!+1/3!+1/4!+1/n!.例如:在主函数中从键盘给n输入15,则输出为:s=2.718282.注意:要求n的值大于1但不大于100。doublefun(intn)(doubles=rlongt=l;inti;for(i=l;i<=n;i++){t=t*i;s+=l.0/t;}

193returns;)第二十八套1.程序填空给定程序中,函数fun的功能是:计算N*N矩阵的主对角线元素和方向时角线元素之和,并作为函数值返回。注意:要求先累加主对角线元素中的值,然后累加反响对角线元素的值。第一处sunFO;第二处sum+=t[i][i];第三处sum+=t[i][n-i-1];2.程序修改给定程序MODI1.C中函数fun和funx的功能是:用二分法求方程2x3-4x2+3x-6=0的一个根,并要求绝对误差不超过0.001。/**found**/doubler;/**found**/while(fabs(n-m)>0.001)3.程序设计假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导和尾部的*号之外,将串中其他*号全部删除。形参h已指向字符串中的第一个字母,形参p已指向字符串中最后一个字母。在编写函数时,不得使用c语言提供的字符串函数。voidfun(char*a,char*h,char*p){intj=0;char*q=a;while(*q&&q=0;j—)第三处t[j][N-l]=r[j];2.程序修改给定程序MODH.C中函数fun的功能是:计算s=f(・n)+f(-n+1)++f(0)+f(1)+f(2)+……f(n)的值。例如,当n为5时,函数值应该是:10.407143。/**found**/doublef(doublex)/**found**/returns;

1941.程序设计编写一个函数fun,它的功能是计算:s=根号下(In(1)+ln(2)+ln(3)+In(m))S作为函数返回,在C语言中可以调用log(n)求In(n)olog函数引用说明是:Doublelog(doublex)例如,若m的值为:20,firn函数值为:60506583odoublefun(intm)(doubles=0.0;inti;for(i=0;i<=m;i++)s+=log(l.0*i);s=sqrt(s);returns;}第三十套1.程序填空函数fun的功能是:反形参a所指数组中的奇数按原顺序依次存放到a[0]、a[l],a[2]……中,把偶数从数组中删除,奇数个数通过函数值返回。例如:若a所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7,删除偶数后a所指数组中的数据为:9、1、3、5、7,返回值为5,第一处if(a[i]%2=l)第二处j++;第三处returnj;2.程序修改给定程序MODU.C中函数fun的功能是:求出两个非零正整数的最大公约数,并作为函数值返回。/**found**/t=a;a=b;b=t;/**found**/return(b);3.程序设计假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:删除字符串中所有的*号。在编写函数时,不得使用C语言提供的字符串函数。voidfun(char*a)(intj=0;char*p=a;while(*p){if(*p!='*')a[j++]=*p;p++;}a[j]=0;}第三H•套1.程序填空给定程序中,函数fun的功能是:在形参ss所指字符串数组中,删除所有串长超过k的字符串,函数返回所剩字符串的个数。Ss所指字符串数组中共有N个字符串,旦串长小于M。第一处for(i=0;i

1951.程序修改给定程序M0DI1.C中函数fun的功能是:逐个比较p、q所指两个字符串对应位置中的字符,把ASCII值或相等的字符依次存放在c所指数组中,形成一个新的字符串。/**found**/intk=0;/**found**/while(*p||*q)2.程序设计假定输入的字符串中只包含字母和*号。请编写函数ftm,它的功能是:除了字符串前导*号之外,将串中其它*号全部删除。在编写函数时,不得使用C语言提供的字符串函数。函数fun中给出的语句仅供参考。voidfun(char*a)(inti=0,k;while(a[i]!==,**)i++;k=i;while(a[i]!=,\0,)(if(a[i]!=+)a[k++]=a[i];i++;}a[k]=、(r;}第三十二套1.程序填空给定程序中已建立一个带头结点的单向链表,链表中的各结点按结点数据域中的数据递增有序链接。函数fun的功能是:把形参x的值放入一个新结点并插入到链表中,插入后各结点数据域的值仍保持递增有序。第一处s->data=x;第二处q=p;第三处q->next=s;2.程序修改给定程序MODI1.C中函数fun的功能是:计算正整数num的各位上的数字之积。/**found**/longk=l;/**found**/num/=103.程序设计请编写函数ftin,它的功能是:计算n门课程的平均分,计算结果作为函数返回。floatfun(float*a,intn)(inti;floatave=0.0;

196for(i=0;i

197第三处if(n=="l)printf("

198Don'tfound!

199M);1.程序修改给定程序MODI1.C中函数fun的功能是:从整数1到55之间,选出能被3整除、且有一位上的数是5的那些事,并且把这些数放在b所指的数组中,这些数作为函数值返回。规定,函数中al放个位数,a2放十位数。/**found**/a2=k/10;/**found**/returni;2.程序设计假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串尾部的*号全部删除,前面和中间的*号不删除。voidfun(char*a){char*p=a;while(*p)p++;p-;while(*p==,*,)p-;p++;*p=0;}第三十五套1.程序填空给定程序中,函数fun的功能是:统计出带有头结点的单向链表中结点的个数,存放在形参n所指的存储单元中。第一处*n=0;第二处p=p->next;第三处fun(head,&num);2.程序修改给定程序MODI1.C中函数fun的功能是:求出s所指字符串最后一次出现的t所指字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值NULLo/**found**/a=NULL;/**found**/if(*r==*p)3.程序设计函数fun的功能是:将s所指字符串中除了下标为偶数,同时ASCH指也为偶数的字符外,其余的全部都删除:串中剩余字符所形成的一个新串放在t所指的数组中。voidfun(char*s,chart[])(inti,j=0;for(i=0;i=,0,&&ch<=*9,)第三处return*9,-(ch-40,);2.程序修改给定程序MODI1.C中函数fun的功能是:将p所指字符串中所有字符复制到b中,要求复制第三个字符之后插入个空格。/**found**/b[k]=*p;/**found**/b[k++]=…;3.程序设计N名学生的成绩已在主函数中放入•个带头结点的链表结构中,h指向链表的头结

200点。请编写函数fun,它的功能是:求出平均分,有函数值返回。doublefun(STREC*h)|STREC*p=h->next;doubleav=0.0;intn=o;while(p!=NULL){av=av+p->s;p=p->next;n++;}av/=n;returnav;}第三十七套1.程序填空函数fun的功能是:把形参a所指数组中的偶数按原顺序依次存放a[0]、a[l]、a[2]……中,把奇数从数组中删除,偶数个数通过函数值返回。第一处if(a[i]%2=0){第二处a[j]=a[i];j++;第三处returnj;2.程序修改给定程序MODI1.C中函数fun的功能是:按以下递推公式求函数值。例如,当给n输出5时,函数值为18;当给n输入3时,函数值为14./**found**/fun(intn)/**found**/if(n==l)3.程序设计假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串中尾部的*号不得多于n个:若多于n个则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和前面的*号不删除。voidfun(char*a,intn)(char*p=a;intj=0;while(*p)p++;p-;while(*p=='*')p-;P++;while(j

201if(strlen(ps[k])

202(inti,j;for(i=0;i

203|(k%17==0))/**found**/}1.程序设计请编写函数fun,它的功能是:求小于形参n同时能被3和7整除的所有自然数之和的平方根,并作函数的返回值。doublefun(intn){doublesum=0.0;inti;fbr(i=21;i<=n;i-H-)if((i%3==0)&&(i%7==0))sum+二i;returnsqrt(sum);}第四十二套1程序填空给定程序中,函数fun的功能是:将不带头结点的单向链表结点数据域中的数据从小到大排序。即若原链表节点数据域从头到位的数据为10、4,2,8,6,排序后链表结点数据域从头至尾的数据为2、4、6、8、10.第1处q=p->next;第2处while(q)第3处p=p->next;2程序修改给定程序MODI1.C中函数fun的功能是:将s所指字符串中的字母转换为按字母顺序的后续字母(但Z转化成A,z转换为a),其它字符不变。/♦♦found**/while(*s)/**found**/s++;3程序设计voidfun(int*w,intp,intn)(inti,j=O,b[N];for(i=p+l;i

204第1处row=colum=0;第2处if((row!=colum)||(row!=ml))retum0;第3处return1;2程序修改给定程序M0DI1.C中函数fun的功能是:根据整型形参m计算如下公式的值。/**fbund**/t=t-1.0/i;/**found**/returnt;3程序设计请编写一个函数,函数的功能是:删除字符串中所有的空格。intfun(char*str)(char*p=str;inti=0;while(*p){if(*p!=,)str[i++]=*p;P++;)str[i]=O;)第四十四套1程序填空给定程序中,函数hin的功能是:将N乘以N矩阵中元素的值按列右移一个位置,右边被移出矩阵的元素绕回左边。第1处for(i=0;i

205}while(fnext;第2处if(p==0)return;第3处p=q;q=r;2程序修改给定MODIl.Cfun函数的功能是:计算s所指字符串中含有t所指字符串的数目,并作为函数值返回。请改正函数fun中指定部位的错误,使它能得出正确的结果。/**found**/E;/**found**/if(*==0)3程序设计请编写函数fun,函数的功能是:将放在字符串数组中的M个字符串(每串的长度不超过N),按顺序合并组成一个新的字符串,函数fun中给出的语句提供参考。voidfun(chara[M][N]),char*b){inti;*b=0;for(i=0;i=xa)3程序设计编写函数fun,其功能是:根据以下公式求p的值,结果由函数值带回。m与n为两个正整数且要求m>nop=m!/(n!*(m-n)!)floatfun(intm,intn)(floatp;p=1.0*jc(m)/jc(n)/jc(m-n);returnp;)

206第四十七套1程序填空函数fun的功能是:计算f(x)=l+x-x"2!+x"3!-X74!直到|x"/n!|<106若x=2.5,函数值为:1.917915«第1处t=x第2处t*=(-1.0)*x/n;第3处while(fabs(t)>=1e-6)2程序修改给定程序MODI1.C中函数fun的功能是:求整数x的y次方的低3位值。例如,整数5的6次方为15625,此值的低3位值为625。/**found**/fbr(i=l;i<=y;i4-4-)/**found**/t=t%1000;3程序设计请编写函数ftm,其功能是:计算并输出当x<0.97时下列多项式的值,直到Sn-Sn-l<0.000001为止。doublefun(doublex){intn=1;doublesn=1;doublexn=l,xnl=0;while(fabs(xn-xn1)>=0.000001)(xn=xn*x*(0.5-n+1)/n;n+=l;sn+=xn;}return(sn);}第四十八套1程序填空给定程序中,函数fun的功能是:计算出带有头节点的单向链表中各节点数据域中值之和作为函数值带回。第1处s+=p->data;笫2处p=p->next;第3处printf('

207sum=%d

208”,fun(head));2程序修改给定程序M0DILC中函数fun的功能是:将s所指字符串中出现的与tl所指字符串相同的子串全部替换成t2所指字符串,所形成的新串放在w所指的数组中。在此处,要求tl和t2所指字符串的长度相同。/**found**/while(*r)/**found**/

209*a=*r;a++;r++;3程序设计函数fun的功能是:将s所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在t所指数组中。voidfiin(char*s,chart[])(inti,j=0;for(i=1;i=len)strcpy(t,s);第2处t[j++]=s[i];第3处t|j]=O;2程序修改给定程序M0DI1.C中函数fun的功能是:找出一个大于形参m目.紧随m的素数,并作为函数值带回。/**found**/if(i%k==0)/**found**/if(k>=i)3程序设计编写函数fun,它的功能是:求出能整除形参x切不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。voidfun(intx,intpp[],int*n)(inti;*n=0;for(i=l;i<=x;i++)if((x%i=0)&&(i%2))pp[(*n)++]=i;}第五十套1程序填空给定程序中,函数fun的功能是:将形参s所知字符串中的所有数字字符顺序前移,其他字符顺序后移,处理后新字符串的首地址作为函数值返回。第1处Plj]=s[i];j++;}第2处for(i=0;i

2102程序修改给定程序MODI1.C中函数fun的功能是:首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到c所指数组中,过长的剩余字符接在c所指数组的尾部。/**found**/while(i

211第五十二套1程序填空给定程序中,函数fun的功能是:在3X4的矩阵中找出在行上最大,列上最小的那个元素,若没有符合条件的元素则输出相应信息。第1处max=a「皿;c=j;}第2处find=0;第3处i++;2程序修改给定程序MODI1.C中函数ftm的功能是:根据整形形参m的值:计算如下公式的值?……例如:若m中的值为5,则应输出:0.536389./♦♦found**/for(i=2;i<=m;i++)/**found**/y-=1.0/(i*i);3程序设计m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。intfun(intscore[],intm,intbelow[])(floatav=0.0;inti,j=0;for(i=O;iscore[i])below[j++]=score[i];returnj;}第五十三套1程序填空给定程序中,函数fun的功能是将形参指针所指结构体数组中的三个元素按num成员进行升序排列。第1处voidfun(PERSON*std)笫2处PERSONtemp;第3处fun(std);2程序修改给定程序M0DI1.C中函数fun的功能是:将m(IWmWIO)个字符串连接起来,组成一个新串,放入pt所指存储区中。/**found**/intk,q,i;/**found**/

212pt[i]=str[k][i];3程序设计程序定义了NXN的二维数组,并在主函数中自动赋值。请编写函数fun(inta[][N]),瞰的功能是:使数组左下三角元素中的值全部置成0。intfun(inta[][N])(inti,j;fbr(i=O;ia[i].s){j二i;min=a[i].s;}*s=a[j];}第五十五套1程序填空给定程序中,函数fun的功能是:判断形参s所指字符串是否是“回去"(Palindeme)若是,函数返回值为1;不是,函数返回值为0,“回文”是正读和反读都是•样的字母串(不区分大小写字母)。第1处lp=s;第2处1p++;rp—;}第3处if(lp

2132/1+372+5/3+8/5+13/8+21/13+和值通过函数值返回main函数。例如n=5,则应输出:8.391667c/**found**/doublefun(intn)/**found**/c=a;a+=b;b=c;3程序设计请编写函数fun,函数的功能是:将大于形参m且紧靠m的k个素数存入xx所指的数组中。19,23,29,31,37,函数fun中给出的语句仅供参考。voidfun(intm,intk,intxx|])(inti,j=l,t=m+l;while(j<=k)(for(i=2;i

214",fw);第3处printf("%s”,str);2程序修改给定程序M0DI1.C中函数fun的功能是:从低位开始取出长整形变量s中奇数位上的数,依次构成一个新数t中。高位仍在高位,低位仍在低位。/**found**/voidfiin(longs,long*t)/**found**/sl=sl*10;3程序设计函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的十位和百位上,b数的十位和个位数依次放在c数的千位和十位上。voidfun(inta,intb,long*c)(

215*c=(b/10)*1000+(a%10)*100+(b%10)*10+(a/10);}第五十七套1程序填空给定程序中,函数fun的功能是:计算出形参s所指字符串中包含的单词个数,作为函数值返回。为便于统计,规定各单词之间用空格隔开。第1处n++;flag=l;}第2处if(*s==,')flag=0;第3处s++;2程序修改给定程序M0DI1.C中函数fun的功能是:从n(形参)个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。/**found**/t+=s[k];/**found**/*aver=ave;3程序设计请编写函数fun,其功能是求出数组的最大元素在数组中的下标并存放在k所指的存储单元。intfun(int*s,intt,int*k)(inti,pos=0,max=*s;fbr(i=l;ie)第3处x=(2*i+l)/(t*t);2程序修改给定程序MODI1.C中函数fun的功能是:求出以下分数序列的前n项之和。271,3/2,5/2,8/5,13/8,31/13…和值通过函数值返回到main函数。/**found**/doublefun(intn)/**found**/s=s+(double)a/b;3程序设计请编写函数fun,它的功能是:求出一个2XM整型二维数组中最大元素的值,并将此值返

216回调有函数。fun(inta[][M])(inti,j,max=a[0][0];for(i=0;iv2;i++)for(j=0;ja[j])2程序修改给定程序MOD".C中函数fun的功能是:用递归算法计算列中第n项的值。从第一项起,斐波拉契数列为:I、1、2、3、5、8、13、21、/**found**/switch(g)/**found**/case1:return1;case2:return1;3程序设计某学生的记录由学号、8门课程和平均分组成,学号和8门课程成绩已在主函数中给出。请编写函数fun,它的功能是;求出该学生的平均分放在记录的ave成员中。voidfun(STREC*a){inti;for(i=0;iave=a->ave+a->s[i];a->ave/=N}第六十套1程序填空给定程序中,函数fun的功能是:有NXN矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素来。第1处voidfun(int)(*t)[N]第2处t[i]U]=t[i]U]+tU][i];第3处t[j][i]=O;2程序修改

217给定程序MODI1.C中函数fun的功能是:计算函数值,F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)其中x和y的值不等,z和y的值不等。例如,当x的值为9、y的值为11、z的值为15时,函数位[为-3.50。/**found**/#defineFU(m,n)((m)/(n))/♦♦found**/return(value);)3程序设计规定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部删除,中间和尾部的*号不删除。voidfun(char*a)(intj=0;char*p=a;while(*p=='*')p4-+;while(*p){a[j++]=*p;p++;)a|j]=O;)第六十一套1程序填空人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中。函数fun的功能是:找出指定出生年份的人员,将其数据放在形参k所指出的数组中,由主函数输出,同时由函数值返回满足指定条件的人数。第1处if(std[i].year==year)第2处k[n++]=std[i];第3处return(n);2程序修改给定程序M0DILC中函数fun的功能是:读入一个整数k(2《kW10000)打印它的所有质因子(即所有为素数的因子)。/**found**/IsPrime(intn)/**found**/if(!(n%i))3程序设计已知学生的记录由学号和学习成绩构成,N名学生的数据已存入结构体数组a中。请编写给函数fun,函数的功能是:找出成绩最高的学生的记录,通过形参指针传回主函数(规定只有一个最高分),已给出函数的首部,请完成函数。fun(STUa[],STU*s)(inti,max=a[0].s,j=0;

218for(i=l;ihigh,查找结束。/**found**/fun(inta[],intm)/♦♦found**/elseif(m>a(mid|)3程序设计假定输入的字符串中只包含字母和*号,请编写函数fun,它的的功能是:除了尾部的*号之外,将字符串中其他*全部删除。形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。

219voidfun(char*a,char*p){char*q=a;intj=0;while(*q&&q

222第六十七套I程序填空给定程序中,函数fun的功能是:找出100〜999之间(含100和999)所有整数中个位上数字之和为x(x为一正整数)的整数,然后输出:符合条件的整数个数作为函数值返回。第1处while(t<=999)第2处s1=t%10;s2=(t/10)%10;s3=t/100;第3处if(sl+s2+s3==x)2程序修改给定程序M0DI1.C中函数ftm的功能是:低位开始取出长整形变量s中偶数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。/**found**/voidfun(longs,long*t)/**found**/while(s>0)3程序设计学生的记录由学号和学生成家组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数ftin,它的功能是;按分数的高低排列学生的记录,高分在前。intfun(STRECa[]){STRECtmp;inti,j;for(i=0;i

223voidfun(charp|),charp2[]){char*p=pl;while(*p)p++;while(*p2)*p++=*p2++;*p=0;}第六十九套1程序填空甲乙丙丁四人同时开始放鞭炮,甲每隔tl秒放一个,乙每隔t2秒放一个,丙每隔t3秒放一个,丁每隔t4秒放一个,每人各放n次。函数fun的功能是通过形参提供的信息,求出总共听到多少次鞭炮声作为函数值返回。注意,当几个鞭炮同时炸响,只算一声响声,第一声响是在第。秒。1第1处maxt=tl;第2处for(t=l;t

224第2处case1:cl++;break;第3处case2:c2++;break;2程序修改给定程序modil.c中函数fun函数功能是:统计一个无符号整数中各位数字值为零的个数,通过形参传回主函数并把该整数中各位上最大的数字值作为函数值返回。/**found**/if(t==O)/**found**/*zero=count;3程序设计请编写一个函数fun,它的功能是:计算并输出下列多项式的值:doublefun(intn){doubles=0,t=l;inti;for(i=l;i<=n;i++){t*=l;s+=l.0/t;}returns;}第七H^一套1程序填空给定程序中,函数fun的功能是:反形参a所指数组中的最大值放在a[0]中,接着求出a所指数组中的最小值放在a[l]中:再把a所指数组元素中的次大值放在a[2]中,吧a组元素中的次小值放在a[3]中,依此类推。第1处voidfun(int*a,intn)第2处for(i=0;i

225*n=0;for(i=0;i2)的素数的个数,素数的个数作为函数值返回。第1处for(j=2;j=i)2程序修改数列中,第一项值为3,后一项都比前一项的增5;给定程序modil.c中函数fun函数功能是:计算前n(4l&&n<=100){for(i=l;i<=n;i++)sum+=1.0/(2*i-l)-1.0/(2*i);)returnsum;)第七十三套1程序填空

226给定程序中,函数fun的功能是:f(x)=l+x+x2/+…+x%)!直到Ix/nklO",若x=2.5,函数值为:12,182494,第1处f=l.0+x;第2处t*=x/n第3处f+=t;2程序修改给定程序MODI1.C中fun函数的功能是:计算n的5次方的值(规定n的值大于2小于8),通过形参指针传向主函数,并计算该值的个位、十位、百位上的数字之和作为函数值返回。/**found**/d=l;s=0;/**found**/d=d/10;3程序设计请编写一个函数fun,它的功能是:计算并输出给定数组(长度为9)中每相邻两个元素之平均值的平方根之和。doublefun(doublex[9])(inti;doubleavg=0.0,sum=0.0;for(i=0;i<8;i++){avg=(x[i]+x[i+l])/2;sum+=sqrt(avg);)rtumsum;}第七十四套1程序填空给定程序中,函数程n的功能是:计算f(x)=l+x+x?/+…+x*Vn!的前n项。若x=2.5,函数值为:12.182340c第1处t=l;第2处for(i=l;i56.0、1输出为s=H.730729.doublefun(doublex[10])

227Inti;doubleavg=0.0,sum=0.0,abs=0.0,fc;for(i=0;i<10;i++)sum+=x[i];avg=sum/10;for(i=0;i<10;i++)abs+=(x[i]-avg)*(x[i]-avg);fc=sqrt(abs/10);returnfc;}第七十五套1程序填空给定程序中已经建立一个带有头结点的单项链表,在main函数中将多次调用fun函数,每调用一次fun函数,输出链表尾部结点中的数据,并释放该结点,使链表缩短。第1处t=t->next;第2处printf(M%dn,t->data);第3处free(t);2程序修改给定程序MODI1.C中fun函数的功能是:将字符串中的字符按逆序输出,但不改变字符串中的内容。/♦♦found**/fun(char*a)/**found**/printf(M%cn,*a);3程序设计编写一个函数fun,它的功能是:比较两个字符串的长度(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。char*fun(char*s,char*t)(inti;char*p=s,*q=t;for(i=0;*p&&*q;i++){P++;q++;)if(*p==O&&*q==O)returns;if(*p)returns;elsereturnt;)第七十六套1程序填空在给定程序中,函数fun的功能是在形参s所指字符串中寻找与参数c相同的字符,并在其后插入•个与之相同的字符,若找不到相同的字符则函数不做任何处理。第1处for(i=0;s[i]!=\0,;i++)第2处n=0;第3处s[j+l]=c;2程序修改在主函数中键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。给定程序

228MODI1.C中函数fun的功能是:计算数组元素中值为正数的平均值(不包括零)/**found**/doublesum=0.0;/**found**/sum/=c;3程序设计编写程序fun,它的功能是:根据以下分工计算s,计算结果作为函数值返回:n通过形参传入。floatfun(intn)(inti,j,t;floats=0;for(i=l;i<=n;i++){t=0;for(j=l;j<=i;j++)t+=j;s=s+l.0/t;)returns;)第七十七套1程序填空给定程序中,函数fun的功能是:将形参n所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。如输入一个数:27638496,新的数为729第1处{t=*n%10;第2处if(t%2!=0)第3处*n=x;2程序修改给定程序modil.c中函数fun函数功能是:计算n!。例如,给n输入5,则输出120.000000。/**fbund**/if(n==0)/**found**/result*=n—;3程序设计请编写一个函数fun,它的功能是:将一个数字字符转换为一个整数(不得调用C语言提供的将字符转换为整数的函数)。例如,若输入字符串”・1234”,则函数将它转换为整数值・1234.longfun(char*p)(inti,len,t;longx=0;len=strlen(p);if(p[O]='.'){t=-l;len-;p++;)elset=1;While(*p)

229x=x*10-48+(*p++);returnx*t;}第七十八套1给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数写到的文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕匕请在程序的下划线处填入正确的内容分并把下划线删除,使得程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。第1处FILE*fp;第2处while(!feof(fp)){第3处putchar(ch);ch=fgetc(fp);)2程序修改给点那个程序MODI1.C中函数fun的功能是:依次取出字符串中所有的数字字符,形成新的字符串,并取代原字符串。/**found**/SU++]=S[i];/**found**/s[j]=,\O,;3程序设计题请编写函数ftm,函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。voidfun(chars[][N],char*b)(inti,j,n=0;for(i=0;inext;第2处q=p->next;第3处if(p->data>=q->data))

2302程序修改给定程序MODI1.C是建立一个带头结点的单项链表,并用随机函数为各节点数据赋值。函数fun的作用是求出单项链表结点(不包括头结点)数据域中的最大值,并且作为函数值返回。请改正函数fun中所指部位的错误,使它能得出正确结果。/**found**/p=h->next;/**found**/p=p->next;3程序设计请编写函数fun,函数的功能是:将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中。一维数组中数据的个数存在形参n所指的存储单元中。voidfun(int(*s)[10],int*b,int*n,intmm,intnn){inti,j,k;for(i=0;inext;/**found**/p=p->next;3程序设计请编写函数fun,函数的功能是:判断字符串是否为回文?是,函数返回1,主函数中输出:YES,否则返回0,主函数中输出NO。回文是指顺读t和倒都都一样的字符串。

231intfun(char*str){inti,j=strlen(str);for(i=0;i

232第3处returnf2(x,y);2程序修改给定程序MODI1.C中函数fun的功能是:比较两个字符串,将长的那个字符串的首地址作为函数值返回。/**found**/char*fun(char*s,char*t)/**found**/ss++;/**found**/tt++;3程序设计请编写函数ftm,函数的功能是,移动字符串中的内容,移动的规则如下:把第一到m个字符,平均移到字符串的醉最后,把m+1个到最后的字符移到字符串的前部。voidfun(char*w,intm)(inti;for(i=0;ia[m])m=k;3程序设计请编写一个unsignedfun(unsignedw),w是一个大雨于10的无符号整数,若w是n(n>=2)位的整数,函数求出w的后n-l位的数作为函数值返回。例如:w值为5923,则函数返回923;w值为923,则函数返回23.unsignedfun(unsignedw)if(w>=10000)returnw%10000;if(w>=1000)returnw%1000;if(w>=100)returnw%100;returnw%10;

233}第八十四套1程序填空程序通过定义学生结构体变量,存储了学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所指的文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其他学生的数据不变。第1处fp=fopen(filename,"rb+")第2处fseek(fp,-lL*sizeof(STU),SEEK.END);第3处fwrite(&n,sizeof(STU),1,fp);2程序修改给定程序MODI1.C中函数Creatlink的功能是创建带头结点的单向链表,并为各结点数据域赋0到m-l的值。请改正函数C代atlink中指定部位的错误,使它能得出正确的结果。/**found**/p=(NODE*)malloc(sizeof(NODE));/**found**/returnh;3程序设计请编写函数fun,函数的功能是,统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词有小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。intfun(char*s)(intk=1;while(*s){if(*s=='')k++;s++;}returnk;)第八十五套1程序填空程序通过定义学生结构体变量,存储了学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生书数据,并按照从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。第1处fp=fopen(filename,"rb");第2处if(s[i].sno>s[j].sno)第3处fwrite(s,sizeof(STU),N,fp);2程序修改给定程序MODI1.C中函数fun的功能是:在字符串的最前端加入n个*号,形成新串,并且覆盖原串。注意:字符串的长度最长允许为79./♦♦found**/p=s;

234/**found**/while(*p++)3程序设计请编写函数fun,函数的功能是:统计各年龄段的人数,N个年龄能通过调用随机函数获得,并放在主函数的age数组中:要求函数把0到9岁的年龄段的人数放在d[0]zhong把10—19岁的年龄段的人数放在d[l]中,其余依此类推,把100岁(含100岁)的年龄段的人数放在d[10]中。结果在主函数中输出。voidfun(int*a,int*b){inti,j;for(i=0;i10)b[M-l]++;elseb[j]++;}}第八十六套1程序填空给定程序中,函数fun的功能是将不代头结点的单向链表逆置。即若原链表中从头至尾结点数据域依次为:2、4、6,8、10,逆置后,从头至尾结点数据域依次为:10、8、6、4、2.请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。第1处NODE*fun(NODE*h)第2处r=q->next;第3处q=r;2程序修改给定程序MODI1.C中函数fun的功能是:将s所指字符串中位于奇数位置的字符或ASCII码为偶数的字符放入t所指数组中(规定第一个字符放在第0位中)/**found**Zif(i%2Ils[i]%2=0)/**found**/3程序设计请编写函数fun,函数的功能是:将M行N列的二维数组中的数据,按列的顺序依次放到一维数组中。函数fun中给出的语句仅供参考。#includevoidfun(int(*s)[10],int*b,int*n,intmm,intnn)inti,j,np=0;for(i=0;i

235}*n=np;)第八十七套1程序填空程序通过定义学生结构体变量,存储了学生的学号、姓名和三门课的成绩。所有学生数据均以二进制方式输出到student.dat文件中。函数fun的功能是从指定文件中找出指定学号的学生数据,读入此学生数据,对该生的分数进行修改,使每门的分数加3分,修改后重写文件中该学生的数据,即用该学生背后的数据覆盖原数据,其他学生数据不变;若找不到,则什么都不做。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。第1处while(!feof(fp))第2处if(n.sno==sno)break;第3处fseek(fp,-lL*sizeof(STU),SEEKCUR);2程序修改给定程序MODI1.C中函数firn的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序,插入法的基本算法是:先对字符串中的头两个元素进行排序,然后把第三个字符插入到前两个字符中,插入后前三个字符依然有序;再把第四个字符插入到前三个字符中,……。待排序的字符串已在主函数中赋予。请改正函数fun中指定部位的错误,使它能得出真确结果。/**found**/n=strlen(aa);/**found**7ch=aa[i];3程序设计N名学生的成绩已在主函数中放入•个带头结点的链表结构中,h指向链表的头结点。请编写函数fun,它的功能是:找出学生的最高分,由函数值返回。doublefun(STREC*h){doublemax=h->s;STREC*p;p=h->next;while(p){if(p-s>max)max=p->s;p=p->nest;)returnmax;第八十八套1程序填空给定程序中,函数fun的功能是调用随机函数产生的20个互不相同的整数放在形参a所指数组中(此数组在主函数中已置0)。第1处while(n

236第3处if(i=n){a[n]=x;n++;}2程序修改给定程序MODI1.C中函数fun的功能是:先从键盘上输入一个3行3列矩阵的各个元素的值,然后输出主对角线元素之和。/**found**/sum=0/♦♦found**/scanf("%d",&a[i][j]);3程序设计编写程序,实现矩阵(3行3列)的转置(即行列互换)intfun(intarray[3][3])(inti,j,arr[3][3];memcpy(arr,array,9*sizeof(int));for(i=0;i<3;i++)for(j=0;j<3;j++)array[i][j]=arr[j][i];第八十九套1程序填空给定程序中,函数fun的功能是:求ss所知字符串数组中长度最长的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中。Ss所指字符串数组中共m个字符串,且串长>N。第1处intfun(char(*ss)[N],int*n)第2处if(i=0)*n=len;第3处*n=len;2程序修改给定程序MODI1.C中函数fun的功能是:根据形参m计算如下公式的值。例如,若输入5,则应输出2.283333/**found**/t+=1.0/i;/**found**/returnt;3程序设计编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。intfun(char*str,char*substr)intent=0;char*p=str,*q;while(*p){q=strstr(p,substr);if(q==NULL)break;p=q+strlen(substr);

237cnt-H-;}第九十套1程序填空给定程序中,函数的功能是:求出形参ss所指字符串数组中最长字符串的长度,将其余字符串右边用字符*补齐,使其与最长的字符串等长。Ss所指字符串数组中有M个字符串,且串长

238Name:%s,Age:%d

239”,max.name,max.age);2程序修改

240给定程序MODI1.C中函数fun的功能是:实现两个整数的交换。例如给a和b分别输入:60和65,输出为:a=65b=60/**found**/voidfun(int*a,int*b)/**found**/t=*b;*b=*a;*a=t;3程序编写请编写一个函数voidfun(inttt[M][N],intpp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指唯一数组中。二维数组中的数已在主函数中赋予。voidfun(inttt[M][N],intpp[N])(inti,j,min,k;for(i=0;itt|j][i]){min=tt[j][i];k=j;)pp[i]=tt[k][i];第九十二套1程序填空给定程序中,函数fun的功能是:将a和b所指的两字符串转达换成面值相同的整数,并进行相加作为函数值返回,规定字符串只含9个以下数字字符。第一处d=d*10+*s-40,;第二处S++;第三处returnctod(a)+ctod(b);2程序修改给定程序MODI1.C中函数fun的功能是:分别统计字符串大写字母和小写字母的个数和。/**found**/*a=*a+l;/**found**/*b=*b+l;3程序设计请编写函数fun,函数的功能是:使用实型整数保留2位小数,并对第三位进行四舍五入(规定实型数为正数)floatfun(floath)(longw;w=h*100+1.5:

241return(float)w/100;)第九十三套1程序填空给定程序中,函数fun的功能是:找出100—x(x<=999)之间各位上的数字之和为15的所有整数,然后输出,符合条件的整数个数作为函数值返回。第一处n=0;第二处while(t<=x)第三处t++;2程序修改给定程序MODI1.C中函数fun的功能是:先将s所指字符串中的字符按逆序放到t所指字符串中,然后把s所指的字符串中的字符按正序连接到t所指串的后面。/**found**/inti,sl;/**found**/t[i]=s[sl-i-l];3程序设计请编写函数ftrn,函数的功能是:将a、b中的两个两位整数合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的百位和个位上,b中的十位和个位依次放在变量c的千位和十位上。voidfiin(inta,intb,int*c)(*c=(b/10)*1000+(a/10)*100+(b%10)*10+(a%10);)第九十四套1程序填空给定程序中,函数fun的功能是:从三个形参a、b、c中找出中间那个数,作为函数值返回。第一处t=a>b?(b>c?b:(a>c?c:a)):((ac)?c:b));2程序修改给定程序MODI1.C中函数fun的功能是:首先将大写字母转换为对应的小写字母:若小写字母为a—u,则将其转换为其后的第五个字母;若小写字母为v—z,使其值减21。转换后的小写字母作为函数值返回。/**found**/c=c+32;/**found**/c=c+5;3程序设计请编写函数fun,函数的功能是:计算并输出……例如,在主函数中从键盘给n输入20后,输出为s=534.188884o注意:要求n的值大于1但不大于100.doublefun(intn)(inti;doublefac=l.0;doublesum=1.0;

242fbr(i=2;i<=n;i4-+){fac+=sqrt(i);sum+=fac;)returnsum;}第九十五章1程序填空给定程序中函数fun的功能是:调用fun函数建立班级通讯录。通讯录中记录每位同学的编号、姓名和电话号码。班级的人数和学生信息从键盘读入,每个人的信息作为一个数据块写到名为mylife5.dat的二进制文件中。第--处intfiin(STYPE*std)第二处FILE*fp;inti;第三处fwrite(&std{i},sizeof(STYPE),l,fp);2程序修改给定程序MODI1.C中函数fun的功能是:先将在字符串s中的字符按正顺序放到t串中,然后把s中的字符按逆顺序放到他串后面。/**found**/for(i=0;isno=10004;第二处strcpy(b->name;'LiJie");第三处fun(&t);2程序修改给定程序MODI1.C中函数fun的功能是:应用递归算法求形参a的平方根。求平方根的迭代公式如下:例如:a为2时平方根值为1.414214/♦♦found**/doublefun(doublea,doublexO)/**found**/if(fabs(xl-x0)>0.00001)3程序设计学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数

243fun,它的功能是:把高于等于平均分数的学生数据放在b所指的数组中,并把人数通过形参n传回。doublefun(STREC*a,STREC*b,int*n)(doublet=0;inti;*n=0;for(i=0;it)b[(*n)++]=a[i];returnt;}第九十七套1程序填空给定程序中函数fun的功能是:找出形参s所指字符串中出现频率最高的字母(不区分大小写),并统计其出现的次数。第一处ch=tolower(*s);第二处k[n]+=l;第三处if(max

2442程序修改给定程序MODII.C中函数fun的功能是:输出M行N列的整数方阵,然后求两条对角线上元素之和,返回此和数。/**found**/intfun(intn,intxx[][M])/♦♦found**/printf('*%d,,,xx[i][j]);3程序设计请编写函数ftin,函数fun的功能是:将a、b中的两位正整数合并形成一个新的整数放在c中。合并的方式为:将a中的十位和个位数依次放在变量c的千位和十位上,b中的十位和个位数依次放在变量c的各位和百位上。voidfun(inta,intb,long*c)(*c=(a/l0)*1000+(b%10)*100+(a%10)*10+(b/10);第九十九套1程序填空给定程序中函数fun的功能是:求出形参aa所指字符串数组中最长的字符串长度,其余字符串左边用字符*补齐,使其与最长字符串等长。字符串数组中共有M个字符串,且串长=0;j-)第三处ss[i][j]='*';2程序修改给定程序MODI1.C中函数firn的功能是:计算整数n的阶乘。请改正程序中错误或在下划线处填上适当内容,删掉下划线,使它能计算出正确结果。/**found**/result*=n—;/**found**/returnresult;3程序设计请编写函数fun,函数fun的功能是:从s所指的字符串删除给定的字符。同一字母的大小写按不同字符处理。intfun(chars[],charc)(char*p=s;inti=0;while(*p)if(*p!=c)s[i++]=*p;P++;}s[i]=O;}第一百套1程序填空给定程序通过定义并赋值的方式,利用结构体变量存储了一名学生的学号姓名和3门课的成

245绩。函数fun的功能是将该学生的各科成绩都乘以一个系统a。第一处voidmodify(STU*ss,floata)第二处ss->score[i]*=a;第三处modify(&std,a);2程序修改给定程序MODIl.C中函数fun的功能是:求K<13>,所求阶乘的值作为函数值返回。例如,若K=10,则应输出3628800/**found**/if(k>0)/**found**/elseif(k==0)3程序设计程序定义了N*N的二维数组,并在主函数中自动赋值。请编写函数fun(inta[][N],intn),函数的功能是:使数组左下三角元素中的值乘以n。intfun(inta[][N],intn){inti,j;for(i=0;i

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

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

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