还剩39页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
2023年广东省佛山市全国计算机等级考试C语言程序设计测试卷含答案学校:班级:姓名:考号:
一、
2.填空题10题I.下列程序段是从键盘输入的字符中统计小写字母的个数用换行符结束循环请填空intn=0c;c=getchar;whilec!=\n{ifn++;.以下程序中,for循环体执行的次数是【#defineN2#defineMN+l#defineKM+PM/2maininti;fori=l;iK;i++.以下程序运行后的输出结果是funinta号中填入你编写的若干语句试题程序#includeconio.h#includestdio.h#includestdlib.h#defineN5voidfuninta[][N]voidmaininta[N][N]ij;system“CLS”;printf****Thearray****\rT;fori=0;in;i++p=n/n;i++/*产生一个随机的5x5矩阵*/forj=0;j=np=na[i][j]=rand0%10;printf%4d”a[i][j];printf\n”;funa;printfuTheResult\n‘;fori=0;in;i++p=M/n;i++forj=0;j=np=nprintf%4d”a[i皿;printfCt\n^^;.请编一个函数funchar*str该函数的功能是把字符串中的内容逆置例如,字符串中原有的字符串为asdfg则调用该函数后,串中的内容为gfdsa请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句试题程序gmcludcstnng.h=uwludrVcofuahSincludeudio.PdefiiwN100•otdfuneh«r・Mrvo*d0Mnch«r•[N]ini.E«MtipnntEnter«Mnnfi*i«1iprintkThe»tnngbt*ifimaipntMTheurm*aftermodifiedtipuf»ai•trepy«.aWe*rofne!a।Owl»fopee.使用VC++2010打开考生文件夹下progl中的解决方案此解决方案的项目中包含一个源程序文件progl.co在此程序中,编写函数fun其功能是将s所指字符串中ASCH值为奇数的字符删除,将剩余字符形成的新字符串放在I所指数组中例如若s所指字符串中的内容为“ABCDEFG12345”其中字符A的ASCII值为奇数,字符1的ASCII值也为奇数,都应当删除,其他依此类推最后t所指的数组中的内容应是“BDF24”注意部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句试题程序#includeconio.h#includestdio.h#includestring.hvoidfunchar*schart[]mainchars
[100]t
[100]Msg[]=4tPleaseenterstrings:“;printfMsg;scanf%s”s;funst;printft4\nTheresuitis:%s\rTt;.n个人的成绩存放在score数组中,请编写函数proc它的功能是将低于平均分的人数作为函数值返回,将低于平均分的分数放在down所指的数组中例如当score数组中的数据为{9980405659846076100}时,函数返回的人数应该是4down中的数据应为405659600注意部分源程序给出如下请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句试题程序9includeVadlib.h29inrltMkcoeto.b9indudeC*tdMx9include»tnn.hiniprormmacoc*[J«mi・♦mikwni]voidmaiaint!•n.down
[9]imt*corc9]—《9f・10・
40.5・59・S4・eO.TS.IOOliprocMor««
9.down।pnntfCa\ndowntotheaveraffcxorr・regk,i・Oiy4+*4-pnntf*Sd-.downiiprint*\o-i
28.N名学生的成绩已在主函数中放人一个带头节点的链表结构中,h指向链表的头节点请编写函数fun其功能是求出平均分,并由函数值返回例如,若学生的成绩是8576698591726487则平均分应当是
78.625注意部分源程序在文件PROGl.C中请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句♦includestdio.h#includeadlibh#ddineN8■trad«lislIdouble•;•tractdi«t•next;I;typcdefstructslutSTREC;doublefunSTREC■hSTREC•cre«tdouble••|STREC•h.•p•q;inti=0;h■p■STREC•nudlocsixeofSTREC;p-»=0;whileiN|q=STREC*maUocaixeofSTREC;q-•=»[i];i.♦;p-next=q;p=q;Ip-next=0;returnh;IoutlistSTREC•h|STREC•p;p=h-next;printfhead;do|printf-%
4.irp-«;p=p-next;|whilep[=0;printf\n\n*।ImainIdouble»[N]=
185766985.
91.
72.
64.871ave;voidNONO;STREC«hth=creals।outli8th;ave»funh;printfave=%
6.3f\n.ave;NONOIvoidNONO1/•本雨敷用于打开文件,,入数据调用函数输出数据关闭文件*FILE•in♦out;inii.j;double•[N]«ve;STREC・h;in=fopenCin.dar/r-;outsfopen*out.datw;fori=0;i10;i♦•♦Iforj«0jjN;j++f8canfins[j];h=creats;ave■funh;fjxintfoutt%
6.31Anave;I£clo«ein;fcloaeout;I
29.请编写函数proc它的功能是求出17000中能被5或13整除但不能同时被5和13整除的所有整数,并将它们放在arr所指的数组中,通过n返回这些数注意部分源程序给H{如下请勿改动main0函数和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句试题程序5includeconio.hAincludeV*ldio.h£includehvoidprocint«arr.int•nvoidmainCintarr!000].n.ktsystcmC-CI.S।procarr.^--n fork»0«knik++ifk+l%10--0・printf%5d.»rr{k»printf-\ni〃一行写10个数print%5d.arr[k]i.请编写一个函数proc它的功能是将一个数字字符串转换为一个整数不得调用C语言提供的将字符串转为整数的函数例如,若输入字符串“1234”,则函数把它转换为整数值1234o注意部分源程序给出如下请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句试题程序:sinclude*id*ah$includeMnn.hloniproHdur•pvoidmaincharIon*Q«prmtfC*Enf*ra»tnni\nige»Mrin-proc«tripnntf*Mld\a**««i
四、
2.程序修改题(10题).给定程序MOD
11.C中函数fun的功能是应用递归算法求形参a的平方根求平方根的迭代公式如下xl=!80+白)2x0例如,a为2时平方根值为
1.414214请改正程序中的错误,使它能得出正确结果注意不要改动main函数,不得增行或删行,也不得更改程序的结构♦includestdio.hfincludemath.h/**♦****♦♦*found*****♦♦**♦/doublefundoubleadounlexO{doublexly;xl®x0a/xO/
2.0;/*♦****♦♦♦♦found*♦***♦*♦**/iffabsxl-xo
0.00001y=funaxl;elsey-xl;returny;}main{doublex;printfEnterx:**;scanfprintfThesquarerootof%lfisxrfunxr
1.0;.给定程序MOD
11.C中函数fun的功能是根据整型形参m的值计算如下公式的值!!_2・23・3例如,若m中的值为:5则应输出
0.536389请改正程序中的错误,使它能得出正确的结果注意不要改动main函数,不得增行或删行,也不得更改程序的结构!*includestdio.hdoublefunintmdoubley-
1.0;inti;,***********found*mfori-2;im;i++…………found……y1/i♦i;returny;main{intn-5;printfn\nTheresultis%lf\nnrfunn;.下列给定程序中,函数fun的功能是根据整型形参m的值,计算如下公式的值t=1-1/2x2-l/3x3-...-l/mxm请改正函数fun中的错误,使它能得出正确的结果注意不要改动main函数,不得增行或删行,也不得更改程序的结构试题程序#includeconio.h#includestdio.hdoublefunintm{doubley=l.O;inti;^1**1**1**1*=_J*£**2*//小可、小不不不不不不不不刁、司、]n不不不不不不不不不不彳、小小
4、/fori=2;im;i++/「/*T**T**T**T**T**T**T**T**T**T**T**T*|/~\1y-=l/i*i;returny;main{intn=5;clrscr;printfn\nTheresultis%lf\nMfunn;.下列给定的程序中,函数fun的功能是判断字符ch是否与str所指字符串中的某个字符相同;若相同,则什么也不做,若相同,则将其插在申的最后请改正程序中的错误,使它能得出正确的结果注意不要改动main函数,不得增行或删行,也不得更改程序的结构试题程序#includeconio.h#includestdio.h#includestring.h/不不不不不不不不不不不不不toun[不不不不不不不不不不不不不不/voidfuncharstrcharch{while*str*str!=chstr++;/不小不小小不不不不小小不不]nd不不不不不不不不可、司、小小小不/if*str==ch{str[Ol=ch;t1//不不不不不不不不不不不不不|011Hfi年小不不不不不不不不不不不不/str[l]=O;main{chars
[81]c;clrscr;printfM\nPleaseenterastrzng:;getss;printfH\nPleaseenterthecharactertosearch:;c=getchar;funsc;{intb=0;staticintc=3;b++;C++;returna+b+c;main{intia=5;fori=0;i3;i++printf%d%difiina;printfn\nH;.下列程序的功能是将字符串s中所有的字符c删除请填空#includestdio.hmain{chars18OJ;intij;getss;fori=j=0;s[i]!=\0;i4-+ifsfi]!=cputss;.设有以下定义和语句,则*设p+2+l的值为[]ointa
[3]
[2]={102030405060*p
[2];p=a;.在面向对象方法中,类之间共享属性和操作的机制称为.下面程序的运行结果是#includestdio.hintfinta[1intnprintfM\nTheresultis%s\ns;
35.给定程序MOD
11.C中函数fun的功能是在字符串的最前端加入“个*号,形成新串,并且覆盖原串注意字符串的长度最长允许为79请改正函数fun中指定部位的错误,使它能得出正确的结果注意不要改动main函数,不得增行或删行,也不得更改程序的结构!123456789101112131415161718♦includestdio.h#includestring.hvoidfunchars[]intnchara
[80]*p;inti;/………*found………*s-p;fori-0;in;i++a[i]do{a[i]-*p;………found………while*p++ai]-0;strcpysa;19main20212223242526{intn;chars
[80];printf\nEnterastring:;getss;printfH\nThestring\%sV\nnrs;printfM\nEnternnumberof*:;scanfw%dwrn;funsn;printfw\nThestringafterinsert:\n%s\\nws;.下列给定程序中,函数fun的功能是;求出两个数的最大公约数并作为函数值返回例如,若给numl和num2输入49和21则输出的最大公约数为7:若给numl和num2分别输入27和81则输出最大公约数为27o请改正函数fun中的错误,使它能得出正确的结果注意不要改动main函数,不得增行或删行,也不得更改程序的结构试题程序#includestdio.hintfunintaintb{intrt;ifab/*1**1*71*1**1**1**1**1*//*T**T**T**T**T**T**T**T**T**T**T**T**T**T*************T/~\l1/~1个个个个个个个个个个个个个个个个个/{t=a;b=a;a=t;r=a%b;whiler!=0{a=b;b=r;r=a%b;}/「J»f«//*T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T**T*।/~\11f/l/-1个个个个个个个个个个个个个个个个*T»/retuma;main{intnumlnum2a;printfHInputnumlnum2:H;scanf%d%d,numlnum2;printfnnum1=%dnum2=%d\n\nHnum1num2;a=funnumlnum2;printfThemaximuncommondivisoris%d\n\nMa;.给定程序MODH.C中函数fun的功能是交换主函数中两个变量的值例如若变量a中的值原为8b中的值为3程序运行后a中的值为3b中的值为80请改正程序中的错误,使它能计算出正确的结果注意不要改动main函数,不得增行或删行,也不得更改程序的结构!tincludestdio.h/*********found******voidfunintxintyintt;********found****intab;a«8;b«3;funarb;printf**%dr%d\n**/ab;.给定程序MODH.C中函数fun的功能是从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在1中高位仍在高位低位仍在低位例如当s中的数为7654321时,t中的数为7531请改正程序中的错误,使它能得出正确的结果注意不要改动main函数,不得增行或删行,也不得更改程序的结构!tincludestdio.h/*…*……*found……*voidfunlongslongt{longsl-10;*t-s%10;whiles0*******found*♦♦♦*si=sl*100;main{longst;printf\nPleaseenters:;scanfs;funst;printfTheresultis:%ld\nt;.下列给定程序中,函数fun的功能是对N名学生的学习成绩,按从高到低的顺序找出前叫mSO名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回请改正程序中的错误,使它能得出正确的结果注意不要改动main函数,不得增行或删行,也不得更改程序的结构.试题程序#includeconio.h#includestring.h#includestdio.h#includealloc.h#defineN10typedefstructss{charnum
[10];ints;}STU;STU*fun{STUa[]intm{STUb[N]*t;intijk;f*1*/1*2**£*//不不不不不不不不不不不不不[[][]]不干不干不干不干不干不不不不/*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;/*1*”・”・»1*、1・4・»!*、1・*!*f4・4・T・■].%*■]・4・•】・»!*//个个个个个个个个个个个个个TC]]nC个个个个个个个个个个个个个个/t[k].num=b|j].num;t[k].s=b[j]s;b[jJ.s=O;returnt;outresultSTUaf]FILE*pf{inti;fori=0;iN;i++fprintfpfnNo=%sMark-%d\nua[i].numa[i].s;fprintfpfH\n\n;main{STUa[N]={{nA0181}{A02”89}{“A03”66}{“A04”87}{“A05”77}{A06”90}{“A07”79}{“A08”61}{HA09”80}{“A10”71}};STU*pOrder;intim;clrscr;printf*****THERESULT*****\n;outresultastdout;printf\nGivethenumberofthestudentswhohavebetterscore:;scanf%d\m;whilem10{printfHlnGivethenumberofthestudentswhohavebetterscore:;scanf%du%m;pOrder=funam;printf”*****THERESUET*****kn”;printfThetop:\n;fori=0;im;i++printf%s%d\npOrder[i].numpOrder[i].s;freepOrder;.给定程序MODII.C中fun函数的功能是求出以下分数序列的前n项之和23581321T2*3*5*T13*…和值通过函数值返回main函数例如若n=5则应输出
8.391667请改正程序中的错误,使它能得出正确的结果注意不要改动main函数,不得增行或删行,也不得更改程序的结构!1!tincludestdio.h****found****funintninta■2b1ck;doubles«
0.0;fork«1;k=n;s-s+
1.0*a/b;/………•…found………c*a;ab;bc;}returns;main{intn•5;printf\nThevalueoffunctionis:funn;
五、程序改错题(2题).下列给定程序中,函数fun的功能是求两个非零正整数的最大公约数,并作为函数值返回例如,若nmnl和num2分别为49和21则输出的最大公约数为7;若numl和num2分别为27和81则输也的最大公约数为27o请改正程序中的错误,使它能得出正确结果注意不要改动main函数,不得增行或硼行,也不得更改程序的结构!试题程序#tnciudestdio.hiitfuDntapntb{int3ifab/*«♦***率+-*****♦*飞1md****拿*********率**/}r=^a%b;whiIer!^O{a=b;b=r;r=a%b;}/********,****拿*gd****尊》***充**■■■/♦/returna;voidmain{intnum1printfuInputnumlnum2:w;scan£H%d%d\num!num2;printf*numl=^%dnum2=%d\n\n*numlnum2;a3^unnumlnutn2;jxint^Fiemaxfnjuncammtxidivisoris%d\n\Q*^a;.给定程序中,函数fun的功能是首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符按排列的顺序交叉合并到C所指数组中,过长的剩余字符接在C所指的数组的尾部例如,当a.所指字符串中的内容为abcdef9b所指字符串中的内容为“1234”时,c所指数组中的内容应Ma4b3c2dlef9;而当a所指字符串中的内容为“1234”,b所指字符串的内容为abcdef9时,c所指数组中的内容应该为“1g2f3e4dcba”请改正程序中的错误,使它能得出正确的结果注意不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序#includestdio.h#includestring-hvoidfuncharchar*bchar*cintij;charch;i=0;j=strlenb-l;/************率*♦今可bwd**^木木•京拿本卓拿幸/whileij{ch=b[i];b[i]=bj];b[j]=ch;j——;while*aII*b{/*************今***dund率**********率****率/g{*c=性C++;aH;}ifb*c=*b;c++;maincharfll[100s2
[100]4200];printf\nEnterslstring:l;scanft%sl\81;printff\nEnters2string:;scanfT%s\s2;funsi§2t;printfrt\nTheresultis:%s\iTt;
六、操作题2题.以下函数的功能是删除字符串s中的所有数字字符请填空voiddelechar*sintn=0i;fori=0s[i];i++if[]s[n++]=s[i];s[n]=[];.下列给定程序中,函数fun的功能是应用递归算法求某数a的平方根求平方根的迭代公式如下X=x0+-/2k例如,2的平方根为
1.414214请改正程序中的错误,使它能得出正确的结果注意不要改动main函数,不得增行或删行,也不得更改程序的结构试题程序returna[O]+fa+ln-1;elsereturna
[0];main{intaa[10J={l2345678910s;s=faa+24;printf%d\n»s;.数据库管理系统常见的数据模型有层次模型、网状模型和【】3种.语句X++;++X;x=Hx;执行后都使变量X中的值增1请写出一条同一功能的赋值语句O.用树型结构表示实体类型及实体间联系的数据模型称为【】
二、单选题10题.有以下程序#includestdio.hmain{FILE*fp;charstr
[10];fp=fopenHmyfiledat\M;{putsabeHip;fclosefp;fp=fopenHmyfile.data*;#includemathh#includestdio.h/.!■.!■.!■t■7,7,7,7,7,7,//不不不不不不不不不不不不不]]]][不不不不不不不不不不不不不不/fundoubleadoublexO{doublexly;xl=x0+a/x0/
2.0;/*1**1**1**1**1**2**2**1**1*、1*X^*X^*X^*2^*2^*2^*2**1**X**1^//不不不不不不不不不不不不不mi】nn不小不不不不不不不不不不不不/iffabsxl-xO
0.00001y=funaxl;elsey=xl;returny;main{doublex;printfnEnterx:;scanfn%irx;printfThesquarerootof%lfis%lf\nxfunxl.O;参考答案
1.c=^0=zc=ac=z*解析小写字母在内存中以ASCII的形式存入,且从a到z依次递增,所以可以直接用c=Kc〈二N判断是不是小写字母;c!=Nn,判断是用换行符结束循环
2.44解析将程序中所有的宏替换掉可得M=2+lK=2+l*2+l/2=4所以for循环共循环了K-1+1次,即4-1+1共4次
3.010111212010111212解析本题考查的是静态局部变量的运用静态局部变量的作用域与普通局部变量一样,但它的生存期将延长到程序运行结束本题的主函数中使用一个for循环输出循环变量i和funa的值,由于a的值一直没被修改过,所以三次调用的都是fun5第1次调用,b=0c=3所以返回值为5+1+4=10;第2次调用,因为c是静态局部变量,它仍然保存着上次调用结束时的值4而b重新被创建和初始化为0所以返回值为5+1+5=11;同理,第3次调用返回的是12o所以,程序最终输出为
0101112124.SU++]=s[i]S[j++]=s[i]解析循环开始后如果数组s中储存值与字符c相同,贝IJi++直接跳过当前值;如果不相同,则将当前值赋予数组指定位置,并通过j++将下标加1指向下一元素要存储的位置
5.6060解析程序中定义a是一个3行2列的二维数组,p是指向两个元素的一维数组指针,并让p指向二维数组a的首行则代码**p+2+l中的P+2指向二维数组a的第三行a⑵,*p+2指向a⑵]0]*p+2+l指向a⑵⑴,**p+2+l是引用a⑵
[1]其值是
60.继承继承.本题主要考查函数的嵌套调用和数组名作为实参实际程序运行结果应为aa
[2]+aa
[3]+aa
[4]+aa
[5]=18o\r\n\r\n.关系模型关系模型解析数据库管理系统是位于用户与操作系统之间的一层系统管理软件,是一种系统软件,是用户与数据库之间的一个标准接口其总是基于某种数据模型,可以分为层次模型、网状模型和关系模型9-1解析本题考查运算符“++”、」只能作用于变量,不能用于表达式或常量;前缀形式是在使用变量之前先将其值增1或减1后缀形式是先使用变量原来的值,使用完后再使其增1或减
10.层次模型用树型结构表示实体类型及实体间联系的数据模型称为层次模型,用有向图结构表示实体类型及实体间联系的数据模型称为网状模型,用二维表格结构表示实体及其联系的数据模型称为关系模型.C本题考查文件的操作,首先打开文件,进行写操作,把“abc”写入“myfile”文件,再打开“myfile.data”文件,输入28在键盘上接收字符,输出并关闭文件本题结果为abc
2812.B解析NO作为标志占用存储空间,但是不计入串的实际长度当给一个字符型指针赋值时,赋给这个指针的是这个字符串的地址
13.B解析算术运行符“尸、%”的优先级处于同一级,并且两者的结合性都是从左到右所以算术表达式运算过程为a=25/10%9=2%9=2当逻辑运算符两边的值都是非零时逻辑表达式的值才为真即为10所以b=2-l=l
14.Dfun函数接收两个整型指针变量a、bfor循环判断a、b指向的值大小和getchar读入的字符是否为“@”来决定循环是否执行循环体内对a、b指向的值各自自增
1、自减1main函数定义并初始化实参i的值为0实参j的值为5调用函数fun传入i、j的地址所以形参a指向i形参b指向j*a的值为0*b的值为5*a*b为真,执行循环体;*a的值为1*b的值为4*a*b为真,执行循环体了a的值为2*b的值为3*a*b为真,执行循环体;*a的值为3*b的值为2*a*b为假getchar读入字符“a”执行循环体;*a的值为4*b的值为1*a*b为假getchar读入字符“b”执行循环体;*a的值为5*b的值为0*a*b为假,getchar读入字符fun函数执行完毕main函数输出50故本题答案为D选项
15.B此程序考查带参数的宏定义,Sk+j展开后即4*k+j*k+j+l所以结果为143答案为B.A解析在主函数main中,语句“suma⑵;”把数组元素a⑼的地址传递给了sun函数的形参a[]使得sum函数中的“a+0”为主函数中a⑵的地址,所以a[.l]的值为主函数中a⑴的值;a川的值为主函数中a
[3]的伉,故函数sum中a
[0]=2+4=6由于此函数中的a是指向主函数中的a⑵所以a⑵的值为
6.D.D需求分析阶段的工作可以概括为需求获取、需求分析、编写需求规格说明书、需求评审四个方面所以选择D.D.D程序定义了一个整型数组a它包含5个整型元素,分别是12345o数组名a代表数组的首地址,另外还定义整型指针P将a传给函数f在函数f中,首先将指针s向右移动一个整型变量的长度,此时s指向元素2a[l]S[l]a⑵元示元素3自增6后s[l]a⑵的值为9表达式“+=7”;表示将*s・・指向的元素自增7即S
[0]a⑴的值为9s向左移动一个整型变量的长度,此时s指向元素la[O]最后将s返回并赋给P经过函数f的调用可知P指向数组a的第1个元素,和a
[2]值为9综上,输出结果为9919本题答案为D选项【解析】本题比较简单,因为题目中已经给出了算法,只要把题目中的说法转换成C语言表达式基本上就出来了,本题最好用do-while循环来做,但要注意循环终止的条件I答案]void*achar*hchar*p{inri=0;char*q=a;whileqba昨*q;q+++;whileqp{[N=*q;i++:“q++;Iwhile*qW]=,q;i++;q++;Ia[ii;}【解析】h和p分别指向第一个和最后•个字母先将前导,号进行保存再保存中间的非*号字符,然后保存尾•号,加上结束惊识符-【解析】要把字符串str中ASCII码值为偶数的字符删除,需要判断字符串str中每一个字符的ASCH值,将ASCH码值为奇数的字符放入字符串t中,ASCH码值为偶数的字符不予处理最后为新的字符串t加上结束符voidfuninta[][nlintij;fori=0;p=nforj=0;j=i;j++a[i]U]=O;/*将数组下三角元素中的值全部置成0*/对于NxN二维数组,表示其下三角元素,可以通过以下语句实现fori=0;in;i++p=H/n;i++\tforj=0;j=i;j++外层循环用来控制矩阵的行下标,内层循环用来控制矩阵的列下标注意列下标的取值范围,因为要表示下三角元素,所以j的范围是0〜i【解析】在fun函数中,首先求行字符串的长度,然后通过循环进行字符交换要注意的是,如果字符串长度是奇数,则最中间的元素在逆置前后的位置是没有改变的voidfunchar*schart[]{intij=0n;n=strlens;/*遍历整个数组*/fori=0;p=/*如果元素的ASCII值为偶数*/ifs[il%2==0/*将元素保存到I中*/t[j]=s[i];j++;Hj]二要删除ASCII值为奇数的字符也就是要保留ASCII值为偶数的字符,将ASCH值为偶数的字符保存到新字符串所以本题的算法是对原字符串从头到尾进行扫描,找出ASCII值为偶数的字符并依次存入数组
27.【解析】要找到所有学生中成绩低于平均分数的人数,首先需要算出所有学生的平均成绩然后将所有学生的成绩与平均成绩相比较将低于平均分数学生的记录存放在新的数组中,并将低于平均分数的学生数返回给主函数.【考点分析】本题考查链表的操作,对链表的主要操作有以下几种建立链表、结构的查找与输出、插入一个结点、删除一个结点【解题思路】题目要求求链表中数据域的平均值,应首先使用循环语句遍历链表,求各结点数据域中数值的和,再对和求平均分遍历链表时应定义一个指向结点的指针P因为“头结点”中没有数值,所以程序中让P直接指向“头结点”的下一个结点,使用语句STREC+P=h-nexto.【解析】题目中要求出1〜1000中能被5或13整除,但不能同时被5和13整除的所有整数,首先应判断1〜1000的每一个整数是否符合要求,将符合要求的每一个整数放入数组arr中最后将整数的个数作为形参返回给主函数.【解析】要将数字字符串转换为一个整数,首先判断该字符串的正负号然后将数字字符转换为相应的数字,将各个数字合并为整数最后将得到的整数乘以字符串中的符号将最后的结果返回到主函数中.ldoublefundoubleadoublex02iffabsx1-xO
0.000011doublefundoubleadoublex02iffabsx1-xO
0.00001解析1主函数中
1.0”x是double型变量,
1.0是浮点数,可知fun有两个double型参数,而第一标识下“dounle”不是C语言关键字,所以应将“doublefundoubleadounlexO改为doublefundoubleadoublexO”⑵第二个标识下的if语句是判断进行递归运算的条件,第二标识下变量xO没有定义,根据题意,这里是判断xl和xO的差值的绝对值是否比
0.00001大,所以第二个标识下“ifi[fhbsxl・xo
0.
0.lfori=2;i=m;i++2y-=
1.0/i*i;lfori=2;i=m;i++2y-=
1.0/i*i;解析该程序功能是根据题目要求计算公式从已给定源程序的main主函数开始入手,“printf\nTheresultis%Ifinfunn;”语句中的firnn将参数n传给函数doublefunintm中的m实现公式的计算结果.1错误fori=2;im;i++正确fori=2;i=m;i++2错误y-=l/i*i;正确y-=
1.0/i*i;⑴错误fori=2;im;i++正确fori=2;i=m;i++\r\n2错误y-=l/i*i;正确y-=
1.0/i*i;解析该题是一道简单的计算题,循环条件fori=2;im;i++中忽略了i=m时的一种情况,因为题目中i是从2到m的一个计算公式,y-=l/i*i;的错误很明显,是语法错误,由定义doubley=l.0可知应该是y・=L0/i*i;而非y-=l/i*i;o.1错误;voidfuncharstrcharch正确voidfunchar*strcharch2错误if*str==ch正确if*str==\O3错误;str[l]=O;正确错误;voidfuncharstrcharch正确:voidfunchar*strcharch\r\n2错误if*str==ch正确if*str==\\0\r\n3错误;str[l]=Or;正确str[l]=\\O;解析该题的重点就是在while的循环嵌套语句中,由题干信息“若相同,则什么也不做”很容易就能看出if*str==ch后面的执行语句是错误的另外,void指针具有一般性,它们可以指向任何类fprintffp%dn28;rewindfp;fscanffp%S,str;putsstr;fclosefp;}程序运行后的输出结果是oA.abcB.28cC.abc28D.内类型不一致而出错.下列关于字符串的说法中错误的是A.在C语言中,字符串是借助于字符型一维数组来存放的,并规定以字符\0作为字符串结束标志BA0作为标志占用存储空间,计入串的实际长度C.在表示字符串常量的时候不需要人为在其末尾加入VD.在C语言中,字符串常量隐含处理成以\0结尾.下列程序的输出结果是main{intabd=25;a=d/10%9;b=a-l;printf%d%d\n\ab;}A.6JB.21C.60D.
20.有以下程序#includestdio.hvoidfunint*aint*b{for;*a*B||getchar!=@;{*a++;*b-;}型的数据但目前绝大多数C编译所提供的这类函数都返回char指针,再由题目中的定义得出voidfuncharstrcharch的错误信息;str[l尸0;是一个简单的语法错误.lp=s;2while*p++;lp=s;2while*p++;解析在字符串的最前端加入n个“*”号,形成新串,并且覆盖原串然后通过“printf\nThestringatlerinsert\\%s\\sns;”函数直接输出结果.⑴错误{t=a;b=a;a=t;正确{t=a;a=b;b=t;}⑵错误retuma;正确retumb;⑴错误{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的最大公约数关于“交换原则”我们在前面已经讲述过了,这里就不再赘述.1voidfunint*xint*y2t=*x;*x=*y;*y=t;lvoidfunint*xint*y2t=*x;*x=*y;*y=t;解析本题中函数的功能是交换主函数中两个变量的值利用临时变量存放临时交换值,实现两个变量的交换
38.lvoidfun1Ongslong*t2s1=sl*10;lvoidfun1Ongslong*t2sl=sl*10;解析本题中函数的功能是依次取出奇数位上的数该题的解题思路主要是找出数字中的奇数位上的数.⑴错误*t=callocmsizcofSTU;正确t=callocmsizeofSTU;2错误t[k].num=b[j].num;正确:错误:*t=callocmsizcofSTU;正确t=callocmsizeofSTU;\r\n2错误t[k].num=b[j].num;正确t[kJ=bUJ;解析calloc也用于分配内存空间调用形式类型说明符*callocnsize功能在内存动态存储区中分配n块长度为“size”字节的连续区域函数的返回值为该区域的首地址类型说明符*用于强制类型转换calloc函数与malloc函数的区别仅在于一次可以分配n块区域例如ps=struetstu*calloc2sizeofstructstu;其中的sizeofslructStu是求Stu的结构长度因此该语句的意思是按Stu的长度分配两块连续区域,强制转换为Stu类型,并把其首地址赋予指针变量ps在本例中我们可别考虑那么复杂厂,根据定义类型STUb[N]九;就可以看tH*t=callocmsizeofSTU;中的错误,t[k].num=b[j].num;的错误旨在考查对结构体概念的掌握和灵活应用程度.1doublefunintn2c=a;a+=b;b=c;ldoublefunintn2c=a;a+=b;b=c;解析本题中函数的功能是求出分数序列的前n项之和首先根据题干中给出的公式推出每一项之间的关系,求出每一项的表达式,然后求得数列的和每一项的分母是前一项的分子,分子是前一项分子和分母的和.【答案】1Eumb;或return卜[解析J一般采用鬟转相除法求最大公约数惠转相除法的算法为首先将m除以Mmn得余数r再用余数r去除原来的除数.得到新的余数,重复比过程直到余数为时停止,此时的除数就是m和n的最大公约数1将两数中较大的存入%较小的存入b先将b的值保存到变出t中再将I.的依赋给b最后将tMUR给a2最大公约数为余数r为0时的除数b所以应返回b
42.[答案]1whileij2if*a【解析】1将字符串中字符逆序存放循环条件是ij所以应改为whileij2书写错误,将If改为^
43.s[i]O||s[i]9或!s[i]=Vs[i]=9或!isdigits[i]或isdigits[i]==O或s[i]9]|s[iO或!s[i]=9s[i]=0或*s+iO||*s+i9或!*s+i=*0*s+i=9或!isdigit*s+i或*s+i=9*s+i=O或!*s+或=9*s+i=0或isdigisfi]O||s[i]9或!s[i]=0s[i]=9或!isdigits[i]或isdigits[i]==O或s[i]9]|s[iO或!s[i]=9s[i]=rO°g*s+iO||*s+i9或!*s+i=0*s+i=9或!isdigit*s+i或*s+i=9*s+i=0或!*s+或=9*s+i=0或isdigi解析从一个字符串中删除某字符的力法是从字符串的第一个字符开始——判断该字符是否是要被删除,若不是则把它放到结果字符串中,若是则不放入结果字符串中本题的第一个空应判断是否为数字字符只有在不是数字字符的情况下才存入结果字符串,所以应填入s[i]Wi]9最后应在结果字符串的末尾填上字符串结束标志\\
044.1错误fundoubleadoublexO正确doublefundoubleadoublexO2错误iffabsxl-xO
0.00001正确iffabsxl・xO=
0.000011错误fundoubleadoublexO正确doublefundoubleadoublex0\r\n2错误iffabsxl-xO
0.00001正确iffabsxl-xO=
0.00001解析用C语言求平方根的方法一般有两种经典的算法,它们分别是迭代法和递归法,本题要求用递归法该程序采用了if语句,错误在于if语句的判断条件,程序的含义是当迭代结果差小于误差时进行循环,故正确的应该是iffabsxl-xO=
0.00001omain{inti=0j=5;funij;printf%d%d\n”ij;程序运行时在第1列开始输入ab@并按VEnter键,则运行结果是OA.71B.32C.05D.
50.有以下程序#includestdio.h#defineSx4*x*x+1main{intk=5j=2;printfn%d\nSk+j;程序运行后的输出结果是oA.197B.143C.33D.
28.有以下程序:voidsuminta[]{a
[0]=a[-l]+a[l];}main{inta
[10]={12345678910};suma
[2];printfM%d\nna
[2];}程序运行后的输出结果是A.6B.7C.5D.
8.18设a和b均为im型变量,且a=6b=lL则能使值%3的表达式是Ab%a%4Bb%a-a%5Cb%a-a%5Db%a-a%
4.在软件开发中,需求分析阶段产生的主要文档是oA.软件集成测试计划B.软件详细设计说明书C.用户手册D.软件需求规格说明书.判定一个顺序栈st最多元素为MaxSize为满的条件是A.st-top!B.st-top!C.top==-1D.top==MaxSize.有下列程序:#includestdio.hint*fint*sIs+=1;s
[1]+=6;*s--+=7;returns;ImainIinta
[5]=|12345|*p;P=fa;printfH%d%d%d%dHa[l]a
[2]*pp[l];I程序执行后的输出结果是A.2312B.9929C.81028D.9919
三、程序设计题(10题)
21.请编写函数proc其功能是利用以下所示的简单迭代方法求方程cosx-x=0的一个实根xn+l=COSxn迭代步骤如下⑴取xl初始值为
0.0;2x0=xl把XI的值赋给x0;3xl=cosxO求出一个新的xl;4若xO-xl的绝对值小于
0.000001则执行步骤5否则执行步骤2;5所求xl就是方程cosx-x=0的一个实根,作为函数值返回程序将输出结果root=
0.739085c注意部分源程序给出如下请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句试题程序sincludecoaiokh*mclud*matkh*includehAmiprorfloatb*
0.0«s0i4owhilefbnwO-il1•-irrfummIi*o«dmainfloaiBproc।printf*roo«I|
22.规定输入的字符串中只包含字母和+号编写函数fun其功能是除了字符串前导和尾部的母号外,将其他的*号全部删除形参h已指向字符串中第一个字母,形参P指向字符串中最后一个字母在编写函数时,不得使用c语言提供的字符串函数例如.若字符串中的内容为物除后,字符串中的内容应当是“…FBCDEFG…注青部分源程序临出如下诂力改动主函效main和其他函数中的任怎内容仅在函数fun的花括号中填入你柒算的若干语句试建程序#ineludesfijo.hvoidfunfchar*a.char•h.charpI}mainO•Ichar8中t*f;printfCEnterastring\n;t=f=s;whDe*ttx JwMet廿1-;while*t==B1一;wh旧』3■f-H-;funsXOiprjntfrThestringafterdel©ted\n;putsfi;J
23.请编写函数proc该函数的功能是将str所指字符串中ASCH值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中例如,若str所指字符串中的内容为aBcdef9789其中字符8的ASCH码值为偶数……字符8的ASCH码值为偶数……都应当删除其他依此类推最后t所指的数组中的内容应是ace9790注意部分源程序给出如下请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句试题程序includestdlib.hSincludeVstdio.hincludelstring.hSincludeVconio.hvoidproctchar•str.chart[JvoidmnincharMr100j.t
[100]iprintfCXnPkascenterstringS jscanf%s.str;proc5tr«t।printf\nTheresultis%s\n«t»
24.使用VC++2010打开考生文件夹下progl中的解决方案此解决方案的项目中包含一个源程序文件progl.c此程序定义了NxN的二维数组,并在主函数中自动赋值请编写函数fun该函数的功能是将数组下三角元素中的值全部置成0如a数组中的值为9738456则返回主程序后a数组中的值应为097008000注意部分源程序给出如下。