还剩36页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
2021年江苏省扬州市全国计算机等级考试C语言程序设计测试卷含答案学校:班级:姓名:考号:
一、
2.填空题10题.若有以下程序maininta=4b=3c==5t=0;ifabt=a;a=b;b=t;ifact=a;a=c;c=t;printf%d%d%d\n\abC;执行后输出结果是【】.在数据的存储结构中,不仅需要存储各数据元素的信息,还要存放各元素之间的信息.一棵二叉树第6层根结点为第一层的结点最多为个.在关系模型中,把数据看成一个二维表,每一个二维表称为一个.有如图所示的双链表结构,请根据图示完成结构体的定义於includeVn«didSiocluitrroiio.braidprocCchar•a«mtnvoid9MincharMftSlJiiftim1l»niiif*Rnier•Mnngi\nMigct»iitriEntermimiprocN”.E》|lnntfaTbeAtnAgafirrdrlrt«i\n*t
26.使用VC++2010打开考生文件夹下progl中的解决方案此解决方案的项目中包含一个源程序文件progl.co在此程序中,请编写函数fun该函数的功能是求出二维数组周边元素之和,作为函数值返回二维数组中的值在主函数中赋予例如,若二维数组中的值为13579299946999813570则函数值为61注意部分源程序在文件progl.c中请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句试题程序l#include2#include3#include4#defineM45#defineN56intfuninta[m][n]7{89}10voidmain11{12FILE*wf;13intaa[M][N]={{13579}{29994}{69998}{13570}};14intijy;15systemnCLSn;l6printfnTheoriginaldatais:\nn;17fori=0;im;i++18{forj=0;jn;j++19printfn%6df\aa[i][j];20printfn\nn;21}22y=funaa;23printfH\nThesum:%d\nMy;24printf\rT;25/******************/26wf二fopenout.datJw;27fprintfwf%dy;28fclosewf29/******************/30}
27.请编写fun函数,其功能是计算并输出3〜m所有素数的平方根之和例如,若主函数从键盘给m输入50后,则输出为s=
68.665791o请勿改动main函数与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句注意m的值要大于2但不大于100部分源程序给出如下试题程序#includemath.h#includestdio.hdoublefunintmvoidmainintm;doubles;FILE*out printfn\n\nlnputm;scanf%dm;s=funm;printf\n\ns=%f\n\ns;ut=fopenoutfile.datw;form=0;m10;m++fprintfoutn%f\nnfunm+80;feloseout;
28.请编写一个函数intprocint*sinttint*k用来求出数组的最小元素在数组中的下标并存放在k所指的存储单元中例如,输入如下整数27393445362489342111831527246则输出结果为489o注意部分源程序给出如下请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句试题程序£mdvdrVadhb.*includrVcoimckIOBincludezdio.k3dprxim•t«im•kroidmammt•rr屹
273.
934.453342111M.527tywtcmC*CLSaiprocarr«IO»kapnnfa»d«%f\u、k.arr{k}i/n;j++/m;i++
29.使用VC++2010打开考生文件夹下progl中的解决方案此解决方案的项目中包含一个源程序文件progl.c在此程序中,已知学生的记录由学号和学习成绩构成,N名学生的记录已存入a结构体数组中请编写函数fun该函数的功能是找出成绩最高的学生记录,通过形参将其返回主函数规定只有一个最高分已给出函数的首部,请完成该函数注意部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句试题程序#includestdlib.h#includestdio.h#includestring.h#includeconio.h#defineN10typedefstructss/*定义结构体*/{charnum
[10];ints;}STU;funSTUa[]STU*svoidmainSTUa[N]={{uA0r\81}9{“A0289}{“A03”66}{“A04”87}{“A05”77}{“A06”90}{“A07”79}{“A08”61}A09”80}{“A10^71}}m;inti;system“CLS”;printf****Theoriginaldata*****;fori=0;iN;i++printfNo=%sMark=%d\n”a[i].num5a[i].s;funam;printf*****THERESULT****\iT;printfThetop:%s9%d\n\m.num9m.s;
30.假定输入的字符串中只包含字母和*号请编写函数proc它的功能是.•将字符串尾部的*号全部删除前面和中间的*号不删除例如,若字符串中的内容为****a*bc*def*g***删除后,字符串中的内容则应当是****a*bc*def*g注意.•部分源程序给出如下请勿改动主函数mam和其他函数中的任何内容,仅在函数的花括号中填入所编写的若干语句试题程序・vnciudcVMghnincludeVcofeh♦YxdproHchdif•5,ciuirptihtft*Enter•1pfocpnntfTbrMrmfafterdr|Krdt\ne)।
四、
2.程序修改题(io题):给定程序MODU.C中函数好的功能是计算n的§次方的值(规:n的值大于
2、小于》通过形参指针传回主函数并计算该值的个位、十位、百位上数字之和作为函数值返回例如,7的5次方是16807其低3位数的和值是15请改正函数fun中指定部位的错误,使它能得出正确的结果注意・•不要改动mam函数不得增行或删行也不得更改程序的结构!12345678910111213141516tincludestdio.h*includemath.hintfunintn9int*value{intdrsi;d*0;s-0;fori«l;i«5;i++.dd*n;*value-d;fori*l;i3;i++{s-s^d%10;WWWWWW*******founcj*«**w***ww**«d-d\10;returns;main17181920212223intn.sumv;do{printfw\nEntern2n8:w;scanfw%dwrin;whilen»21In»8;sum-funnrv;printfw\n\nTheresult:\nvalue*%dsum-%d\n\nnrv#sum;
32.下列给定的程序中,函数fun的功能是;将s所指字符串中出现的n所指字符串全部替换成t2所指字符串,所形成的新的字符串放在w所指的数组中在此处,要求H和t2所指字符串的长度相同例如当s所指字符串中所指的内容为abcdabfab11所指字符串中的内容为abt2所指字符串中的内容为99时,结果在w所指的数组中的内容应为99cd99f99请改正程序中的错误,使它能得出正确的结果注意不要改动main函数,不得增行或删行,也不得更改程序的结构试题程序:/*1^1*_£71vlxvt*k!*JkJkJ*//个个不不不不不不不不不不不『ci]n「不不不不不不不不不不不不不不/intfunchar*schar*tlchar*t2char*winti;char*p*r*a;strcpyws;while*w{p=w;r=tl;/kI^XIkIKE^//不不,、个不不小小个不不不不『ci】nc个个不不不小不不个个个不/whilerif*r=二*p{r++;p++;}elsebreak;if*r==f\0f{a=w;r=t2;/kL*vt*vtvt*kL*vl*vf*1vt*kL*vt*vt*vt**1*//不不不不不不不不不不不不不tcimd不不不不不不不不不不不不不♦、/while*r{*a=*r;a++;r++}w+=strlent2;elsew++;main{chars
[100]tl
[100]t2
[100]w
[100];clrscr;printfn\nPleaseenterstringS:;scanfn%sHs;printfn\nPleaseentersubstringtl:;scanfn%sn9tl;printfn\nPleaseentersubstringt2:;scanfn%sM2;ifstrlcntl==strlent2funstlt2w;printfu\nTheresultis:%s\nw;elseprintfnError:strlent2\nn;.下列给定程序中,函数fun的功能是计算并输出high以内的素数之和high由主函数传给fun函数若high的值为100则函数的值为1060请改正程序中的错误,使它能得到正确结果注意不要改动main函数,不得增行或删行,也不得更改程序的结构试题程序#includeconio.h#includestdio.h#includemath.hintfuninthighintsum=0n=0jyes;whilehigh=2yes=l;forj=2;j=high/2;j++/1//不不不不不不不不不不不不不tciind不不不不不不不不不不不不不不/ifhigh%j==Oyes=0;break;/7777,7,7,777,7,77”「17,77,7777777777,//不小不个不不小小小不不小不tmind不个不小不不不不不不不不个不/ifyes==0sum+=high;n++;high-;returnsum;mainclrscr;printf%d\nfunlOO;.下列给定程序中,函数fun的功能是从s所指字符串中,找出t所指字符串的个数作为函数值返回例如,当S所指字符串中的内容为abcdabfabt所指字符串的内容为ab则函数返回整数3请改正程序中的错误,使它能得出正确的结果注意不要改动main函数,不得增行或删行,也不得更改程序的结构.试题程序#includeconio.h#includestdio.h#includestring.hintfunchar*schar*t{intn;char*p*r;n=0;while*s{P=s;r=t;while*r/1//个个不不不小个不不不不个个不tciinc不不不不个不不不不不不不不不/if*r==*p{r++;p++}elsebreak;/kL*vt*kL*kL*1vt*kL*vt*vL*//不不不不不不不不不不不不不tciind不不不不不不不不不不不不々、不/ifr==,\O,n++;s++;returnn;main{chars
[100]t
[100];intm;clrscr;printfn\nPleaseenterstrings:;scanfn%sns;printfn\nPleaseentersubstringt:;scanfn%sHt;m=funst;printfn\nTheresultis:m=%d\rTm;.给定程序MODE.C中函数fun的功能是将p所指字符串中的所有字符复制到b中,要求每复制三个字符之后插入一个空格例如,在调用fun函数之前给a输入字符串ABCDEFGHIJK调用函数之后,字符数组b中的内容则为ABCDEFGHIJKO请改正程序中的错误,使它能得出正确结果注意不要改动main函数,不得增行或删行,也不得更改程序的结构structaa{intdata;[]}node;.有以下程序prtint*mintn{inti;fori=0;in;i++m[i]++;}main{inta口={12345}i;prta5;fori=0;i5;i++printf%da[i];程序运行后的输出结果是【】.以下程序运行后的输出结果是o#includestring.hmain{charch[]=abcx
[3]
[4];inti;fori=0;i3;i++strcpyx[i]ch;fori=0;i3;i++printf%sx[i][i];printf\n;}.以下程序的定义语句中,x[l]的初值是,程序运行后输出的内容是o#includestdio.hmain{intx[]={123456789tincludestdio.hvoidfuncharchar*bintik-0;while*p{i»l;whilei«3・p{/***♦♦*****found**********bk]-p;k++;p++;if*p**********found**********b[k++]«w,}b[k]-f\0f;main{chara
[80]rb80;printfHEnterastring:w;getsa;printfTheoriginalstring:;putsa;funab;printfM\nThestringafterinsertspace:“;putsb;printfW\n\nw;
36.给定程序MOD
11.C中函数fun的功能是根据整型形参m计算如下公式的值1111y=11+・■+,+■••+—・100*100200♦ZOO300M00m.m例如若m=若00则应输出
0.000160请改正程序中的语法错误,使它能计算出正确的结果注意不要改动main函数,不得增行或删行,也不得更改程序的结构!
16.下列给定程序中,函数fun的功能是;求出两个数的最大公约数并作为函数值返回例如,若给numl和num2输入49和21则输出的最大公约数为7若给numl和num2分别输入27和81则输出最大公约数为270请改正函数fun中的错误,使它能得出正确的结果注意不要改动main函数,不得增行或删行,也不得更改程序的结构试题程序#includestdio.hintfunintaintb{intrt;ifab/1//不干不个不不不不个不不不不不个不个不丁ciinc不个不不不不不个个个干不个不下不不/{t=a;b=a;a=t;}r=a%b;whiler!=0{a=b;b=r;r=a%b;}/*1**1**1^7/■[、/],0]、T«,■]、]、—卜—「■[、rj—1returna;main{intnumlnum2a;printfnInputnumlnum2:n;scanfn%d%dnumlnum2;printfnnuml=%dnum2=%d\n\nnumlnum2;a=funnumlnum2;printfHThemaximuncommondivisoris%d\n\n\a;.给定程序MODU.C中函数fun的功能是;从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中高位仍在高位,低位仍在低位例如,当s中的数为7654321时,t中的数为642请改正程序中的错误,使它能得出正确的结果注意不要改动main函数,不得增行或删行,也不得更改程序的结构!longst;printfn\nPleaseenters:w;scanfIds;funst;printfMTheresultis:%ld\nwrt;.下列给定程序中,函数fun的功能是对N名学生的学习成绩,按从高到低的顺序找出前叫m01O名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回请改正程序中的错误,使它能得出正确的结果注意不要改动main函数,不得增行或删行,也不得更改程序的结构.试题程序#includeconio.h#includestring.h#includestdio.h#includealloc.h#defineN10typedefstructss{charnum
[10];ints;}STU;STU*fun{STUa[]intm{STUb[N]*t;intijk;/Ik1k1^1#//不不不小不可不不不不可不不tci】nc不不不可不不不不不不不不不不/*t=callocmslzeofSTU;fori=0;iN;i++b[i]=a[i];fork=0;km;k++{fori=j=0;iN;i++ifb[i].sb[j].sj=i;/7*7*q777*7f*[q*2*7*//不不不不不不不不々、不不不不tciinri不不不不不不不不不不不不不小/t[k].num=b[j].num;t[k].s=b[j]s;b[j].s=O;returnt;outresultSTUa[]FILE*pf{inti;fori=0;iN;i++fprintfpfJNo=%sMark-%d\n\a[i].numa[i].s;fprintfpfn\n\n;main{STUa[N]={{nA01f;81}{nA02189}{“A03”66}{“A04”87}{“A05,77}{nA06”90}{“A07”79}{“A08:61}{nA09n80}{nA10”71}};STU*pOrder;intim;clrscr;printf”*****THERESULT*****\nn;outresultastdout;printfn\nGivethenumberofthestudentswhohavebetterscore:;scanfn%dnm;whilem10{printfnlnGivethenumberofthestudentswhohavebetterscore:;scanfn%dn%m;pOrder=funam;printf”*****THERESULT*****kn”;printfHThetop:\nn;fori=0;im;i++printf%s%d\npOrder[i].numpOrder[i].s;freepOrder;
40.给定程序M0D
11.C中函数fun的功能是找出100至n不大于1000之间三位数字相等的所有整数,把这些整数放在s所指数组中,个数作为函数值返回请改正函数fun中指定部位的错误,使它能得出正确的结果注意不要改动main函数,不得增行或删行,也不得更改程序的结构!♦includestdio.h♦defineN100intfunintintn{intirj9krabrc;j»0;fori«100;in;i++{/…………/found…/k*n;a-k%10;k/-10;b«k%10;k/-10;/…■★……•■found•…………/c-k%10main{inta[N]9nnum-0ri;do{printfw\nEntern*1000:ecanfw%dHrn;}whilen1000;num■funan;printfw\n\nTheresult:\nw;
五、程序改错题(2题)
41.程序改错题(共18分)下列给定程序中,函数fun的功能是传人一个整数m计算如下公式的值i=1/2-1/31/m例如,若输入5则应输出一.283333请改正程序中的错误,使它能得出正确的结果注意不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序#includestilib.h#includeconio.h#incJudestdio.hdoublefunintm{double£=
1.0;inti;for]-2;i^m;++/*****************^und***************未*/LO-\/i;/***************京*bund*率*****东********垂/、oidmainIintm;printfN\nPlea6eenter1integernumber:3;scanf7%dm;printfn\n\nTheresult运%lf\nHfunm;}
42.下列给定程序中,函数proc的作用是将字符串str中的大写字母都改为对应的小写字母,其他字符不变例如,若输入“abDdFAD”,则输出“abddfad\请修改函数proc中的错误,使它能得出正确的结果注意不要改动main函数,不得增行或删行,也不得更改程序的结构试题程序smcludcVzdto.brincludrVzdHhh9Edudestring.h9mdudrVcomo.hchar♦procicKarurrjini!i//••••otind••••曲《AVMi{l]|l3fIjVNrvtara«tr■voidmainteiuif”
[81].•ywt«niMCLS^•primEler•Mnngi-•gem»irspeiotfC*\n1*hemolt«ringUbprocRtri
六、操作题2题
43.以下程序的功能是输出a、b、c三个变量中的最小值#includestdio.hmain{intabctlt2;scanf%d%d%d”abc;tl=ab[];t2=ctl[];printfH%d\n\t2;
44.请编写函数proc其功能是计算并输出下列多项式值S=M/2+1/3-1/4+...+1/2n-l-l/2n例如,若主函数从键盘给n输入20后,则输出为S=
0.680803o注意部分源程序给出如下请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句试题程序#includet stdio.hdoubleprocintnvoidmainintn;doublesum;printfn\nlnputn;scanf%dn;sum=procnoprintf\ns=%f\nsum;}参考答案
1.503503解析先判断表达式ab为假,不执行1=2但执行“a=b;b=t;,a的值为3b的值为0再判断表达式aC值为真,所以执行后面的10111213141516}*p
[4]i;fori=0;i4;i++{p[i]=x[2*i+l]printfq%dp[i]
[0];}printf\n;}.以下程序运行后的输出结果是【】#includestdio.hmain{inta⑷
[4]={{1234}{5678}{1112T314}{15161718};inti=0j=0s=0;whilei++4ifi==2[[i==4continue;j=0;do{s+=a[i][j];j++;}whilej4;pdnffn%d\n,s;.排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序和选择排序
二、单选题10题.成功的测试是指A.A.运行测试实例后未发现错误B.发现程序的错误C.证明程序正确D.软件产生3条语句”=2;@土;©=俨,结果2的值为5c的值为3所以最后输出的结果为
5、0和
32.前后件关系前后件关系解析在数据存储结构中,除了要存储数据还要存储数据的前后件关系,对于顺序存储的数据结构,前后件之间的关系,是通过存储空间的位置来实现的,而对于链式存储来说,数据元素之间的前后件关系是通过指针来实现的
3.3232解析二叉树第k层上,最多有2k-lkNl个结点第6层的结点数最多是26-1=32注意区别“二叉树的结点最多数”和“某一层的结点最多数”前者的计算是深度为m的二叉树最多有2m-1个结点
4.关系关系解析关系模型用;维表表示,则每个;维表代表一种关系
5.structaa*lhead*rchild;structaa*lhead*rchild;解析结构体对链表的定义
6.2345623456解析函数prta5的功能是使得a数组中,从a
[0]~a
[4]中元素均增
107.abcbcc
8.2246822468解析p为指向数组的指针变量,数组x[l]为数组x口的第二个元素,值为2;进入for循环i=0时,p[O]=x[l]…直到循环完毕,指针分别指向数组x口中的第
2、
4、
6、8个元素,所以第二个空白处应填
24689.9292解析本题考查循环的嵌套
①当i=0时执行while语句,i++4成立这时i=l不执行continue语句,继续执行户0;然后执行do-while语句,共循环4次aj=OH\ts=0+a[l]
[0]=5j=j+l=lobj=l时,s=5+a[l][l]=5+6=llj=j+l=2cj=2时s=ll+a[l]
[2]=ll+7=18j=j+l=3odj=3时,s=18+a[l]
[3]=18+8=26j=j+l=4o终止循环
②当i=l时执行while语句,i++4成立,这时i=2执行continue语句,结束本次循环
③当i=2时执行while语句,i++4成立这时i=3不执行continue语句,继续执行j=0;然后执行do-while语句,共循环4次as=26+a
[3]
[0]=26+15=41j+l=lobs=41+a
[3][l]=41+16=57j+l=20cs=57+a
[3]
[2]=57+17=74j+l=3ods=74+a
[3]
[3]=74+18=92j+l=4终止循环
④i=3时,执行while语句i++4成立,这时i=4执行continue语句结束本次循环
⑤当i=4时,执行while语句,i++4不成立,结束while循环输出s的结果
9210.交换排序交换排序解析所谓排序是指将一个无序序列整理成按值非递减顺序排列成的有序序列,常用的排序方法有交换排序、插入排序和选择排序其中交换排序包括冒泡排序和快速排序,插入排序包括简单插入排序和希尔排序,选择排序包括直接选择排序和堆排序
11.B软件测试的目的主要有以下几个方面
(1)软件测试是为了发现错误而执行程序的过程一个好的测试用例能够发现至今尚未发现的错误一个成功的测试是发现了至今尚未发现的错误的测试另外,即使经过了最严格的测试,可能仍然还有没被发现的错误藏在程序中,测试只是找出程序中的错误,不能证明程序中没有错误
12.C解析当for循环执行到第30次时i的值为30能被5整除然后继续执行两次if语句i经过两次自加1运算值变为32能被8整除故此时第一次执行‘printf%di;话句,即输出
3213.B对于题干中的宏,替换如下S1a+ba+b+1等价于a+b*a+b即2+5*2+5等于17;Sla+bb+a等价于a+b*b+a即2+5*5+2等于29;S2a+ba+b等价于a+b*a+b即2+5*2+5等于49;S2a+bb+a等价于a+b*b+a即2+5*5+2等于49本题答案为B选项.D解析算法的复杂度主要包括算法的时间复杂度和算法的空间复杂度所谓算法的时间复杂度是指执行算法所需要的计算工作量•算法的空间复杂度一般是指执行这个算法所需要的内存空间.A.C.A树形结构是一类重要的非线性数据结构树是nn0个结点的集合,对应任意一棵非空树,它具有以下几点重要的性质
①有且仅有一个特定的称为根的结点
②当nl时,其余结点可分为mm0个互不相交的有限集TiT
2...Tm其中每一个集合本身又是一棵树,称为子树因此,本题的正确答案有且只有一个
18.D
19.D.DD【解析】二分法查找只适用于顺序存储的有序表,表中的元素按值从小到大排列.【解析】要求该学生的平均成绩,首先要求出其各科成绩之和,然后求出其平均成绩并放在成员变量ave中.intfchars口{inti=Oj=O;whiles[j]j++;;forj—;ijsli]==s[j];i++j-;.voidfunintaintblong*c/*b%10获取b的个位数,a/10获取a的十位数,a%10获取a的个位数,b/10获取b的十位数*/*c=b%10+a/10*10+b/l0*100+a%10*1000;本题主要考核如何取出a和b的个位数和十位数,取出后如何将其表示成c中相应的位数由于a和b都是只有两位的整数,因此分别对它们除以10可得到它们的十位数,分别用1对它们求余可得到它们的个位数将得到的数对应乘以
1000、
100、
10、1即可得到c的千位数、百位数、十位数、个位数注意使用C时要进行指针运算.voidprocint*s
[10]int*bint*nintmmintnnintijk=0;fori=0;ilt;mm;i++//i是表示其行的下标forj=0;jlt;nn;j++//j是表示其列的下标b[k++]=s[i][j];//把其放到b的一维数组中*n=k;//把b数组的长度通过形参n传回到主函数中【解析】要将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中,可以通过首先行循环,然后列循环取出二维数组中的每一个元素,并将其放入一维数组中最后,将一维数组的长度通过形参返回到主函数当中
25.【解析】题目中要求字符串前部的*不得多于m首先要计算出字符串前部的*号的个数,与变量m进行比较当字符串前部的*多于m个时,删除多余的*规定不能用字符串函数处理,可以通过移动字符串的首指针来实现
26.1intfuninta[M][N]2{3intijsum=0;4fori=0;im;i++5forj=0;jn;j++6ifi==o||i==M-l||j==0||j==N-l/*只要下标中有一个为或M-1或N-L则它一定是周边元素*/7sum=sum+a[i][j];/*将周边元素相加*/8returnsum;9}本题采用逐一判断的方式求数组周边元素和二维数组周边元素的规律是,其两个下标中一定有一个是或M-1或N-1程序中循环语句用来控制数组的行和列,条件语句用来判断数组元素是否为周边元素.\r\n\tintnki;doublesum=
0.0;forn=3;n=m;n++//判断n是否为素数k=sqrtn;//求n平方根fori=2;i=k i++ifn%i==0break;//如果n不是素数,跳出ifi=k+lsum+=sqrtn;//求平方根的和returnsum;【解析】首先判断循环中n是否为素数,如果不是素数,求其平方根的累加和,并返回计算结果,否则跳出判断循环其中,对于平方根的求解可以使用C语句中的sqrt函数.【解析】要求出数组中最小的数,需要比较数组中的每一个元素将最小的元素的下标存放在变量k中,通过形参返回到主函数中.funSTUa口,STU*sinti;*s=a
[0];fori=0;iN;i++/*找出成绩最高的学生记录*/ifs-sa[i].sp=nnx/a[i].s*s=a[i];先使指针变量s指向第1名学生通过循环语句遍历所有学生的成绩,利用条件语句判断当前学生成绩是否最高所以if条件表达式为s-sS,,等价于,,*s.s,,.【解析】要删除字符串尾部的所有*只要将尾部所有*中的第一个改为字符串结束符即可首先,将字符串指针移动到字符串最后一个位置检查最后一个字符,是*则将指针前移,否则将指针后移一个位置赋值作为结束符.ld=1;s=0;2d=d/10;ld=1;s=0;2d=d/10;解析本题中函数的功能是计算n的5次方的值规定n的值大于
2、小于8通过形参指针传回主函数;并计算该值的个位、十位、百位上数字之和作为函数值返回本题解题过程首先是求5次方,然后对结果进行截取以及求和.⑴错误intfunchar*schar*tlchar*t2char*w正确voidfunchar*schar*tlchar*t2char*w2错误whiler正确while*r3错误r++正确r++;l错误intfunchar*schar*tlchar*t2char*w\r\n正确voidfunchar*schar*tlchar*t2char*w\r\n2错误whiler正确while*r\r\n3错误r++正确r++;解析在intfunchar*schar*tlchar*t2char*w中,用int型定义指针数组ANSI标准要求动态分配系统返回void指针void指针具有一般性,它们可以指向任何类型的数据但目前绝大多数C编译所提供的这类函数都返回char指针无论以上两种情况的哪一种,都需要强制类型转换的方法把char指针转换成所需的类型该程序段应该是voidfunchar*schar*tlchar*t2char*w另外,whiler和r++都是简单的逻辑和语法错误,只要加强了C语言的基础,这样的错误明显是“送分”的.1错误ifhigh%j=0正确ifhigh%j==O2错误ifyes==0正确ifyes⑴错误ifhigh%j=0正确ifhigh%j==0\r\n2错误ifyes==O正确ifyes解析错误1if语句的两侧要加括号错误2yes为1时,说明被判断的数为素数,要加入总和.1错误:if*r==*p{r++;p++}正确if*r==*p{r++;p++;}⑵错误;ifr==\O正确if*r==\O⑴错误if*r==*p{r++;p++}正确if*r==*p{r++;p++;}\r\n2错误;ifr==N0正确if*r==N0解析从字符串s中找出于串t的方法是从第一个字符开始,对字符串进行遍历;若s串的当前字符等于t串的第1个字符,两字符串的指针自动加1继续比较下一个字符;若比较至字符串t的结尾,则跳出循环,•若s串的字符和t串的字符不对应相同,则继续对下一个字符进行处理.lb[k]=*p;2b[k++尸,;lb[k]=*p;2b[k++-;解析本题中函数的功能是将字符串P中的所有字符复制到字符串b中,要求每复制三个字符之后插入一个空格本题可以利用一个计算数器统计复制字符的个数,根据计数器的值决定什么时候输入空格.ldoublefunintm2fori=100;i=m;i+=100ldoublefunintm2fori=100;i=m;i+=100解析本题中函数的功能是计算公式的值关于题干公式的求解过程,首先根据题干中给出的公式推出每一项之间的关系,求出每一项的表达式,然后求得数列的值.1错误{t=a;b=a;a=t;}正确{t=a;a=b;b=t;}2错误returna;正确returnb;⑴错误{t=a;b=a;a=t;正确{t=a;a=b;b=t;}\r\n2错误returna;正确returnb;解析若求两个数的最大公约数如果b除a的非零余数能够整除a那么该余数就是最大公约数;若余数为0则最大公约数为a该题程序中采用了循环语句,若b除以a的余数不等于0则继续用a除以所得余数,直至余数为0如此可以得到ab的最大公约数关于“交换原则”我们在前面已经讲述过了,这里就不再赘述.1voidfun1Ongslong*t2whiles0lvoidfun10ngslong*t2whiles0解析该题中函数功能是取出长整型变量s中偶数位上的数,组成新数从已给定源程序的main主函数开始入手,t;”语句调用函数fun来实现题目要求.1错误:*t=callocmsizcofSTU;正确t=callocmsizeofSTU;2错误t[k].num=b[j].num;正确:t[k]=b[j];l错误:*t=callocmsizcofSTU;正确:t=callocmsizeofSTU;\r\n2错误:t[k].num=b[j].num;正确:t[k]=b[j];解析calloc也用于分配内存空间调用形式类型说明符*callocnsize功能在内存动态存储区中分配n块长度为“size”字节的连续区域函数的返回值为该区域的首地址类型说明符*用于强制类型转换calloc函数与malloc函数的区别仅在于一次可以分配n块区域例如ps=struetstu*calloc2sizeofstructstu;其中的sizeofstructStu是求Stu的结构长度因此该语句的意思是按Stu的长度分配两块连续区域,强制转换为Stu类型,并把其首地址赋予指针变量ps在本例中我们可别考虑那么复杂厂,根据定义类型STUb[N]*t;就可以看出*t=callocmsizeofSTU;中的错误,t[k].num=b[j].num;的错误旨在考查对结构体概念的掌握和灵活应用程度.lk=i;2c=k%10;lk=i;2c=k%10;解析本题中函数的功能是找出10至n不大于1000之间三位数字相等的所有整数,把这些整数放在s所指数组中分解三位数的正整数n的个位和十位数和百位,可用n%10求得个位数,n/10然后n%10求得十位数,百位数也可依此计算.【答案】12returnC【解析】】公式的和存放在变就,中・运算通过循环语句进行,并要进行类型转换.因此应改为卜2循环结束后将和值作为函数值返回
42..有以下程序main{inti;fori=l;i=40;i++{ifi++%5=0if++i%8==0printfn%d\i;printfn\nn;执行后的输出结果是A.5B.24C.32D.
40.有下列程序:#includestdio.h#defineSIxfyx♦y#defineS2xyx♦ymaininia=2b=5;printf%d%d%d%d”,Sla+ba+bSla+bb+aS2a+ba+bS2a.bb+a;程序执行后的输出结果是A.17174949B.17294949C.29294949D
49494949.算法的空间复杂度是指oA.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.执行算法需要的内存空间.在n个结点的顺序表中,算法的时间复杂度是01的操作是A.访问第i个结点l=i=n和求第i个结点的直接前驱2=i=n.a:bc:tla:b\r\nc:tl解析本题考查的知识点是条件表达式条什表达式类似于if语句,根据前面子表达式的逻辑值来判断应该计算:”前面的子表达式还是后面的作为整个条件表达式的结果题目要求输出a、b、c三个变量中的最小值,所以当ab时,应该选a否则选b故前一空应填a:b同样的道理,后一空应填c:tl.\r\n\tdoubleprocintninti;doubles=
0.0;//s为其和的变量fori=1;i=n;i+十S=s+
1.0/2*i-l-l.O/2*i;//计算s=1-1/z+l/3-1/4+…+1/2n-l-l/2nreturns;//最后把所得到的和返回到主函数中【解析】由题目中所给表达式可知,多项式的值为n项表达式的和可以利用n次循环求出n项表达式的值,求和放在变量s中最后将多项式的值返回到主函数当中/n;j++B.在第i个结点之后插入一个新结点l=iv=nC.删除第i个结点l=i=nD.将n个结点从小到大排序23下列程序的输出结果是•#includestdio.hvoidmain{inta=0b=ltc=2;priEfT%d%d%d\abc;}.A012B123C113D
1.
22.树是结点的集合,它的根结点数目是A.有且只有1B.1或多于1C.0或1D.至少
2.已知ab均被定义为double型,则表达式b=la=b+5/2的值为A.lB.3C.
3.0D.
3.
5.合法的常量是A.programB-e8C.03xD.Oxfl.下列数据结构中,能用二分法进行查找的是A.无序线性表B.线性链表C.二叉链表D.顺序存储的有序表
三、程序设计题10题.某学生的记录由学号、8门课成绩和平均分组成,学号和8门课的成绩已在主函数中给出请编写proc函数,它的功能是求出该学生的平均分并放在记录的ave成员中请自己定义正确的形参例如,若学生的成绩是
65.
575889090.
56664589.5则他的平均分应当是
78.625注意部分源程序给出如下请勿改动main0函数和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句试题程序sincludeVidg.bSdefineM8typedef»trurtcharnomL10JidouMeMJIdoubleaveiSTRECivoidprocXSTkEC•praidtnainCSTREChu*IeGA00S••65・
8.
5.—・
5.tS.Shmtiiproczuiprint*nS*♦Rtudrnt八f.fwmi〃■出学号forti-Oii;♦print”•%4•sfiji〃・由各科printff*\fMive-M
7.3f\nw«Mu.avei〃・出▼均分.下列程序判断字符串s是否对称,对称则返回1否则返回;如fCabba返回1f“abab返回
0.使用VC++2010打开考生文件夹下progl中的解决方案此解决方案的项目中包含一个源程序文件progl.c在此程序中,编写函数fun其功能是将两个两位数的正整数a、b合并成一个整数放在c中合并的方式是将a中的十位数和个位数依次放在c数的十位和千位上,b中的十位数和个位数依次放在c数的百位和个位上例如,当a=45b=12时调用该函数后,c=5142o注意部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入编写的若干语句试题程序#includestdlib.h#includeconio.h#includestdio.hvoidfunintaintblong*cmainintab;longc;printfflnputab;scanf“%d%d”ab;funabc;printfTheresultis:%ld\n\c;.请编写函数proc该函数的功能是将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中,一维数组中数据的个数存放在形参n所指的存储单元中例如,若二维数组中的数据为132333431424344415253545则一维数组中的内容应该是132333431424344415253545注意部分源程序给出如下请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句试题程序#includelt;stdio.hgt;voidprocint*s[103int*bint*nintrain.intnnvoidmainintarr
[10]
[10]={{33333333{44444444{55555555}ij;inta
[100]={on=o;printfnThematrix\rT;fori=0;ilt;3;i++for(j=0;jlt;4;j++)printf%3darr[i][j]printf\n;procarran34printfTheAarray\n;fori=0;ilt;n;i++printf%3da[i]printf\n\n;
25.假定输入的字符串中只包含字母和*号请编写函数proc它的功能是使字符串中前部的*号不得多余m个;若多余m个,则删除多余的*号;若少于或等于m个,则什么也不做,字符串中间和尾部的*号不删除例如,字符串中的内容为****A*BC*DEF*G****若m的值为2删除后,字符串中的内容则应当是**A*BC*DEF*G****;若m的值为4则字符串中的内容仍为****A*BC*DEF*G****°n的值在主函数中输入在编写函数时,不得使用c语言提供的字符串函数注意部分源程序给出如下请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句试题程序。