还剩41页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
2022年广东省湛江市全国计算机等级考试C语言程序设计模拟考试含答案学校:班级:姓名:考号:
一、
2.填空题10题.以下程序运行后的输出结果是Omain/intija[]
[3]={123456789;fori=0;i3;i++forj=i+l;j3;j++a[j][i]=O;fori=0;i3;i++{forj=O;j3;j++printf%da[i][j];printfn\nn;.若运行时给变量x输入12则以下程序的运行结果是【】;main{intxy;scanf%dx;y=x12x+10x-12;printfnH%d\nnny;.汉字系统中,字库中的汉字是以【】码存在他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句试题程序$includeVadlihh23includecmkkb9includeC»tbcksincludeVzr«n.hintprocCmt・in・・♦amdown£]midfMinini!•1!•down
[9]imttcorrftj*99»M«40»M«S9«M«6O«7Ct|OO|iC1S*》in-procMore・9・down।pnntfC^XndowviIotheaveragexorv—tfor4-print”*»dowaCi]speifttft*\b*i
25.使用VC++2010打开考生文件夹析下progl中的解决方案此解决方案的项目中包含一个源程序文件progl.c在此程序中,请编写一个函数fun它的功能是将ss所指字符串中所有下标为奇数的字母转换为大写字母若该位置上不是字母,则不转换例如,若输入“abc4Efg,则应输出“aBc4EFg”注意部分源程序在文件progl.c中请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句试题程序#includeconio.h带include5tdio.h#includestring.h#includestdlib.hvoidfunchar*ss/{7}voidmain11;FILE♦wf;chartt[81Js
[81]=Habc4Efgn;systemHCLSM;printfK\nPleaseenteranstringwithin80characters:\nf;getstt;printfn\n\nAfterchanging:thestringVn%s,tt;J17funtt;printfH\nbecomes\n;/*******.*****今今*京/wf=fopenout・dat,w;211funs;22fprintfwf%sf\s;磐fclosewf;241/♦♦♦•♦♦♦♦*♦*♦♦♦♦♦♦/
25.使用VC++2010打开考生文件夹下progl中的解决方案此解决方案的项目中包含一个源程序文件progl.c在此程序中,编写函数fun其功能是将s所指字符串中ASCII值为奇数的字符删除,将剩余字符形成的新字符串放在t所指数组中例如,若s所指字符串中的内容为“ABCDEFG12345”其中字符A的ASCII值为奇数,字符1的ASCH值也为奇数,都应当删除,其他依此类推最后t所指的数组中的内容应是“BDF24”注意部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句试题程序#includeconio.h#includestdio.h#includestring.hvoidfunchar*schart[]mainchars
[100]91
[100]Msg[]=Tleaseenterstrings:;printfMsg;scanf%s”s;funst;printf\nTheresuitis:%s\nJ;.请编写一个函数proc它的功能是求出一个4xN整型二维数组中最大元素的值,并将此值返回调用函数注意部分源程序给出如下请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句试题程序=dtfineN4smcludr.tdidhuiiptocCEi_[NmidfMmintan*,][N*“■
37.ll・5・
53.
2.4Z.-B
2.
9.81•-3S・
3.“,i・63・-9iphntfwruh*%d\n*«proeArTs.某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出,请编写函数fun其功能是求出该学生的平均分,并放人记录的ave成员中例如,学生的成绩是
85.
57669.
585917264.
587.5则他的平均分应为
78.875注意部分源程序在文件PR0G
1.C中请勿改动主函数main和其他函数中的任何内容,仅在函数fun部位中填入你编写的若干语句9includestdio.hWdincN8typedefMrurtcharnum;10];lotiblr9[N];doubleavr;ISTREC;voidfunSTREC♦anuiinISTREC»=|-CAX5M.
85.
5.
7669.
585.
91.
72.
64.
5.
87.51;加i;!voidN0N0;.fun;prinlff*The%
8、studrn!cinU\n”.a.num;fbri-0;iN;i♦♦printfM%
4.lf\nM«.si];prinffM\navr=%
7.3f\ns.av^•NONO;IvoidNONO本函数用于打开文件设人数据,调用函数输出数据关闭文伸•/FILE•out•intiJ;STREC10J|IHGA005「
85.576缸
5.
85.
9172.
64.
5.
87.
51.I-CA00I-t
82.
5.
66.
76.
576.
89.
7646.
5.
78.51t|wGA002-.
72.
5.
56.
66.
56679.
68465.
58.
51.|RGA003-t
92.
517686.
586199.
86156.
5.
88.51t|wGA004-.
8266.
546.
5.
5676.
75.
76.
563.5I.「CA006”.
755.
7471.
5.
85.
8179645.
71.
51.|-GA007-
92.
561.
72.
5.
84.
79.
75.
66.
572.
51.|•CA008-.
72.
586.
73.
5.
806963.
76.
5.
53.
51.|wGA009t.
74.
5.
7061.
82.
86.
5.
58.
51.|w
767196.
5.
93.51I3mH-fopcnout.dat/wH;brix0;iIQ;i++1funfti;fprintfoutM%
7.3f\nH.«[iJ.«ve;fdmeout;
29.N名学生的成绩已在主函数中放人一个带头节点的链表结构中,h指向链表的头节点请编写函数fun其功能是求出平均分,并由函数值返回例如,若学生的成绩是8576698591726487则平均分应当是
78.625注意部分源程序在文件PR0G
1.C中请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填人你编写的若干语句Wincludestdio.hincludeatdlib.h#dcfineN8stwctslisldouble•;stmctalist•next;11typcdefstroctMSTREC;doublefunSTREC•hSTREC•crealdouble•aiSTREC•h.•p.•q;inti=0;hSTREC•nudlocsizeofSTREC;p-•=0;wiuleiN|q=STREC•nMdloc»ixeofSTREC;q-b«b[i];i..;p-nextaq;p=q;Ip-next=0;returnIoutlistSTREC•h|STREC•p;pah-next;printfwheadN;do.|printfH-%
4.IPtp-s;psp-next;|whilep!»0;printf**\n\nM।Imain|double式N].
18576.
6985.
91.
72.
64871.ave;voidNONO STREC•hacreats।outlisth;aveofunh;printfwaves%
6.3f\n
0.ave;NONO;I-voidNONO1/•本函数用于打开文件输入数据,调用函数,输出数据关闭文件•/FILE•in.♦out;inti.j;doubles[N]taveSTREC-h:in=fopen**in.dal*tHr*;outsfopenRout.hiRfw;foris0;i10;i♦♦Iforj«O;jN;j+♦fecanfin「%KJ.hscreals;ave»funh;fprimfout9%
6.31f\nHtave;Ifcloeein;fcl»eout;
3.使用VC++2010打开考生文件夹下progl中的解决方案此解决方案的项目中包含一个源程序文件progl.c在此程序中,编写函数fun其功能是根据以下公式计算S并将计算结果作为函数值返回,通过形参传入5=1+-^―+——+・•.+11+21+2+31+2+3+…+北例如,若n的值为11时,函数的值为
1.833333o注意部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句试题程序#includestdlib.h#includeconio.h#includestdio.h#includestring.hfloatfunintn}voidmainintn;floats;systemCLS”;printfC\nPleaseenterN:;scanf%d\n;s=funn;printfCTheresultis:%f\n”s;
四、
2.程序修改题10题公式的值Al=lA2=l/5+AlA3=l/5+A2…,An=l/5+An-l例如,若n=10则应输出
0.192582请改正程序中的错误,使它能得到正确结果注意不要改动main函数,不得增行或删行,也不得更改程序的结构试题程序#includeconio.h#includestdio.hfloatfunintn/ri//不不不不不不不不不小干.Tei不不不不不不不不不不不不不/intA=l;inti;/7,7,*J7,7,*1^77,1*1vt7,7,7,7,k1//小小不不不不小不不不不小不tciind不不不不不不不不不不不不不/fori=1;i=n;i++A=
1.0/5+A;returnA;mainintn;clrscr;printfn\nPleaseentern n;scanf%dn;printfA%d=%lf\n1nfunn;
32.给定程序MODH.C中函数fun的功能是在字符串的最前端加入n个*号,形成新串,并且覆盖原串注意字符串的长度最长允许为79o请改正函数fun中指定部位的错误,使它能得出正确的结果注意不要改动main函数,不得增行或删行,也不得更改程序的结构!tincludestdio.h♦includestring.hvoidfunchars[]intnchara
[80]*p;inti;/……•…found••………/s»p;fori-0;in;i++a[i]*1;do{a[i]«*p;i++;}/********w*found***********/while*p++ai]-0;strcpysza;mainintn;chars
[80];printfM\nEnterastring:“;getss;printfM\nThestring\n%s\w\nwrs;printfH\nEnternnumberof*:;scanfw%dwrn;funsrn;printfn\nThestringafterinsert:\%s\”\n”s;.软件工程研究的内容主要包括【】技术和软件工程管理.以下程序运行时若从键盘输入102030〈回车输出结果是【】#includestdio.hmaininti=Oj=Ok=O;scanf%d%*d%dijk;printf%d%d%d\nijk;.数据库系统中实现各种数据管理功能的核心软件称为【】.若输入字符串abcde]则以下while循环体将执行【】次whilech=getchar==eprintfn*n;.下列程序的输出结果是【】inttintxintyintcpintdp{cp=x*x+y*y;dp=x*x-y*y;main{inta=4b=3c=5d=6;tabcd;printfn%d%d\n\c9d;.对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为改为对应的大写字母,其他字符不变例如,若输入“edSdAd1则输出“EDSDAD”请改正程序中的错误,使它能得到正确结果注意不要改动main函数,不得增行或删行,也不得更改程序的结构试题程序#includestdio.h#includestring.h#includeconlo.h/*************found*************Icharfunchartt[]inti;fori=0;tt[i];i++/*************found*************!iftt[i]=fA!tt[i]=2tt[i]-=32;returntt;maininti;chartt
[81];clrscr;printfn\nPleaseenterastring:;getstt;main{unsignedn;intzerormax;printfn\nlnputnunsigned:M;scanftf%dwrn;max■funnrzero;printfn\nTheresult:max=%dzero=%d\nwrmaxrzero;然后求两条对角线上的各元素之和,返回此和数请改正程序中的错误,使它能得出正确的结果注意不要改动main函数,不得增行或删行,也不得更改程序的结构.试题程序#includeconio.h#includestdio.h#defineM5/kL*kL*//rr*rrwrr*rr/ihtfunintnintxx[][]{intijsum=0;printfn\nThe%dx%dmatrix:\n\MM;fori=0;iM;i++{forj=0;jM;j++/*1^//―卜―卜—[、■卜、―卜q\/卜/卜,卜/printfu%4f\xx[i][j];printfu\nu;fori=0;in;i++sum+=xx[i][i]+xx[i][n-i-1];returnsum;main{intaa[M][M]={{l2345}{43210}{67890}{98765}{34567}};clrscr;printfn\nThesumofallelementson2diagnalsis%d”funMaa;.下列给定程序中,函数fun的功能是将mtmqO个字符串反着连接起来组成一个新串放入pt所指字符串中,例如把3个串DEGacdf反着串联起来,结果是dfacDEG请改正程序中的错误,使它能得出正确的结果注意不要改动main函数,不得增行或者删行,也不得改变程序的结构!试题程序#includeconio.h#includestring.h#includestdio.hvoidfuncharstr[]
[10]intmchar*ptintkqij=0;fork=m;k0;k—q=strlenstr[k];j+=q;fori=0;iq;i++pt[i]=str[k][i];pt+二q;pt[O]=O;/7/rT*pt=j;main{intmh;chars
[10]
[10]p
[120];clrscr;printfn\nPleaseenterm n;scanf%dm;printfn\nPleaseenter%dstring:\nnm;getss[O];forh=0;hm;h++getss[h];funSmp;printf7nTheresultiS%s\np;.下列给定程序中,函数fun的功能是应用递归算法求某数a的平方根求平方根的迭代公式如下例如,2的平方根为
1.414214请改正程序中的错误,使它能得出正确的结果注意不要改动main函数,不得增行或删行,也不得更改程序的结构试题程序#includemathh#includestdio.h/kIx*1si**1^Kt*//不不不不不不不不不不不不不tmind不不不不不不不不不不不不不不/fundoubleadoublexO{doublexly;xl=x0+a/x0/
2.0;/kLkIvlkL1vl*vL*vL*vl*//不不不不不不不不不不不不不tciinrl不不不不不不不不不不不不不不/iffabsxl-xO
0.00001y=funaxl;elsey=xl;returny;main{doublex;printfnEnterx:;scanfn%lf\x;printfnThesquarerootof%lfis%lf\nnxfunxl.O;.下列给定程序中,函数fun的功能是给一维数组a输入任意4个整数,并按如下的规律输出例如输入1234程序运行后输出以下方阵4123341223411234请改正程序中的错误,使它能得出正确的结果注意;不要改动main函数,不得增行或删行,也不得更改程序的结构试题程序;#includestdio.h#defineM4///一卜■[、■[、/I,一卜—[、/voidfuninta{intijkm;printfnEnter4number:;fori=0;iM;i++scanfC%d,a[i];printf\n\nTheresult:\n\n;fori=M;i0;i—{k=a[M-l];forj=M-l;j0;j—/7k1k£kI//.卜〃、q.q.r..]、q.,]、q..]、q.q.,『.『.『q、.[■.]、q..[、q.〃、■[、q..]、q./a[j]=a[j+l];a[O]=k;form=0;mM;m++printfn%da[m];printfn\n;main{inta[M];funa;printfn\n\n;.下列给定的程序中,fun函数的功能是将p所指字符串中每个单词的最后一个字母改成大写这里的“单词”是指有空格隔开的字符串例如,若输入Iamastudenttotaketheexamination则应输出IaMAstudenTtOtakethEexaminatioN请改正程序中的错误,使它能得出正确的结果注童不要改动main函数,不得增行或删行,也不得更改程序的结构试题程序#includeconio.h#includectype.h#includestdio.hvoidfunchar*pintk=0;for;*p;p++ifk/kLkIvlkL1vl*vL*vL*vl*//不不不不不不不不不不不不不tciinrl不不不不不不不不不不不不不不/ifP==k=0;*p=toupper*p-1;elsek=l;main{charchrstr
[64];intd;clrscr;printfn\nPleaseenteranEnglishsentencewithin63letters:;getschrstr;d=strlenchrstr;chrstr[d==ff;chrstr[d+l]=O;printfn\nBoforechanging\n%snchrstr;funchrstr;printfn\nAfterchanging\n%snchrstr;.下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值函数fun的作用是求出单向链表结点不包括头结点数据域中的最大值,并且作为函数值返回请改正程序中的错误,使它能得出正确的结果注意不要改动main函数,不得增行或删行,也不得更改程序的结构试题程序#includestdio.h#includeconio.h#includestdlib.htypedefstructaa{intdata;structaa*next;}NODE;/7,7,7,7,7,7,/小小小不不不不小不不不小小tci1n।funNODE*h{intmax=-1;NODE*p;p=h-next;whilep{ifp-datamaxmax=p-data;/1//不不不不不不不不不不不不不『ci不不不不不不不不不不不不不不/p=h-next;returnmax;outresultintsFILE*pf{fprintfpfn\nThemaxinlink:%d\n”s;}NODE*creatlinkintnintm{NODE*h*p*s*q;intix;h=p=NODE*mallocsizeofNODE;h-data=9999;fori=l;i=n;i++{s=NODE*mallocsizeofNODE;s-data=rand%m;s-next=p-next;p-next=s;p=p-next;p-next=NULL;returnh;outlinkNODE*hFILE*pf{NODE*p;p=h-next;fprintfpf\nTheLIST:\n\nHEAD;whilep{fprintfpf%dp-data;p=p-next;fprintfpfn\nn;main{NODE*head;intm;clrscr;head=creatlink12100;outlinkheadstdout;m=funhead;printfu\nTheRESULT:\nn;outresultmstdout;
五、程序改错题2题
41.写出下列程序的运行结果#includestdio.hMain{inta[]={123-45};intmn*p;p=a
[0];m=*p+l;n=*p+4;printf%d%d%d*p皿n;}[]o.在进行模块测试时,要为每个被测试的模块另外设计两类模块驱动模块和承接模块桩模块,其中【】的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果
二、单选题10题.若有说明语句double*Pa;则能通过scanf语句正确给输入项读入数据的程序段是A.*p=a;scanf%lfp;B.*p=a;scanf%fp;C.p=a;scanf%lf*p;D.p=a;scanf%lfp;.以下说法错误的是A.由3种基本结构组成的结构化程序不能解决过于复杂的问题B.由3种基本结构组成的结构化程序能解决一些简单的问题C.由3种基本结构组成的结构化程序能解决递归问题D.由3种基本结构组成的结构化程序能解决数学上有解析解的问题
13.设有以下语句charchich2;scanf%c%Cchlch2;
42.已知一个数列从项开始的前3项为001以后的各项都是其相邻的前3项之和下列给定的程序中,函数proc的功能是计算并输出该数列前n项的和sumn的值通过形参传人例如,当n=20时,程序的输出结果应为
42762.000000o请修改程序中的错误,使它能得到正确结果注意不要改动maiil函数,不得增行或删行,也不得更改程序的结构试题程序#includestdlib.h#includeconio.h#includestdio.hdoubleprocintndoublesumsOsis2s;intk;sum=l.0;ifn=2sum=
0.0;s0=
0.0;sl=
0.0;s2=l.0;//****found****for(k=4;kn;k++)s=s0+sl+s2;sum+=S sO=sl;sl=s2;//****^Qund****s2=s;returnsum;voidmainintn;systemCLS;printfnInputN=;scanf%dnJ;printf%f\nprocn;
六、操作题2题.给定程序中,函数fun的功能是在形参ss所指字符串数组中,查找含有形参substr所指子串的所有字符串并输出,若没找到则输出相应信息ss所指字符串数组中共有N个字符串,且串长小于M程序中库函数strstrsls2的功能是在si串中查找s2子串,若没有,函数值为0若有,为非0请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果注意源程序存放在考生文件夹下的BLANK
1.C中不得增行或删行,也不得更改程序的结构!♦includestdio.htincludestringh#defineN5^defineM15voidfunchar*ss[M]char*substrintirfind-0;/♦*w***ww**found**********/fori-0;i_1_;i++/**********found**********/ifstrstrss[iJ_2_!«NULLfind-l;putsss[i];printfR\nw;/**♦♦♦*****found**********/iffind~_3_printfDontfound!\nH;main{charx[N][M]={”BASIC”JClangwage”“Java”JQBASICAccess”strM];inti;printfn\nTheoriginalstring\n\nw;fori-0;iN;i++putsx[il;printfn\nw;printfn\nEnterastringforsearch:getsstr;funxstr;}.下列给定程序中,函数fun的功能是应用递归算法求某数a的平方根求平方根的迭代公式如下%=K+2/2%例如,2的平方根为
1.414214注意不要改动main函数,不得增行或删行,也不得更改程序的结构试题程序#includemathh#includestdio.h/*1*!*JU1**1**X*金1k!k!k!//个个不不不不不不不不不不不tcimcl不不不不不不不不不不不不不不/fundoubleadoublexO{doublexly;xl=x0+a/x0/
2.0;/.!vl#1^1#^1#kL*//不不不不不不不不不不不不不Tc]me不不不不不不不不不不不不不不/iffabsxl-xO
0.00001y=funaxl;elsey=xl;returny;main{doublex;printfnEnterx:;scanfn%lf\x;printfThesquarerootof%lfisxfunxJ.O;参考答案
1.123\n056\n009123\\n056\\n009解析数组是用于按顺序存储同类型数据的数据结构,如果有一个一维数组,它的每一个元素是类型相同的一维数组,就形成了一个二维数组在内存中数组的元素是连续顺序存放的,对;维数组来说,先存放第一行,再存放第;行,…,因为每一行都是其广义一维数组的元素,并且在给出全部数组元素的初值后二维数组的定义中可以将第一维的下标省略本题中,定义了一个元素类型为整型的二维数组敢a[]
[3]={l23456789)它相当于一个3*3的矩阵for(i=0;i3i++)for(j=i+l;j3;j++)a[j][i]=O;将行下标i大于列下标j的元素a⑵⑼a⑵
[1]赋值为于最后for(j=0;j3;j++)prinff(%na[i]|j]);printf(\\n);进行换行输出,所以输出结果为
1230560092.00解析三目运算符的形式为(表达式1)(表达式2)(表达式3)当(表达式1)值为真时,返回(表达式2)的值;为假时,返回(表达式3)的值题中因为x12为假,所以结果为x-12即为
0.字形字形.软件开发
5.1030010300解析本题的scanf()函数要求用户输入三个十进制整数,但只接受第一和第三个到函数的第二和第三个参数所指的内存地址中所以本题的输出为
103006.数据库管理系统数据库管理系统(DBMS)
7.00解析函数getchar()是从键盘得到用户输入的一个字符用户输入的第1个字符是a不管后面输入的是什么ch的值都是宜,因此条件(ch二getchar())==€为假,这个循环不会被执行
8.5656解析本题中abcd足实参,xycpdp是形参C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只由实参传给形参,而不能由形参传回来给实参在内存中,实参单元与形参单元是不同的单元在调用函数时,给形参分配存储单元,并将实参对应的值传递给形参,调用结束后,形参单元被释放,实参单元仍保留并维持原值因此,程序的输出结果是
569.4545解析假设线性表的长度为n则在最坏情况下,冒泡排序需要经过遍的从前往后扫描和遍的从后往前扫描,需要比较次数为O
10.驱动模块驱动模块解析在进行模块测试时,要为每个被测试的模块另外设计两类模块驱动模块和承接模块桩模块其中,驱动模块相当于被测试模块的主程序,它接收测试数据,并传给被测试模块,输出实际测试结果承接模块通常用于代替被测试模块调用的其他模块其作用仅做少量的数据操作,是一个模拟子程序,不必将子模块的所有功能带入U.D解析*p间接引用指针指向的变量,因此”*p尸a”不对scanf的输入变量必须为地址,因此C是错误的
12.A顺序结构、选择结构、循环结构是3种基本结构,由3种基本结构构成的程序称为结构化程序,由3种基本结构组成的算法可以解决任何复杂的问题,选项A错误本题答案为A选项
13.B\nscanf输入函数中,格式控制J必须严格按照函数中的要求进行输入,在scanf%c%c[chlch2的格式控制语句中没有任何字符进行间隔,所以在输入时也不能使用任何字符进行间隔所以答案选择Bo\n
14.B每个C程序有且只有一个主函数mainC程序总是从main函数开始执行,main函数后面的一对圆括号不能省略,main函数可以位于程序的任意位置函数不可以嵌套定义,但函数可以嵌套调用.A程序定义结构体类型STU定义类型STU的全局变量amain函数定义局部类型为STU变量b并对它初始化,调用函数f将局部变量c的各个成员值赋给a覆盖a的旧值,将a的新值返回并赋给b此时a、b的各个成员值都是Sunf90程序输出Sunf90Sunf90o本题答案为A选项.A数据结构在计算机内存中的表示指的是数据的存储结构数据的存储结构是指数据的逻辑结构在计算机中的表示数据元素之间的关系有两种不同的表示方法顺序映象和非顺序映象,并由此得到两种不同的存储结构顺序存储结构和链式存储结构.C解析在C语言中,字符串以\\0作为结束符,因此数组x的长度为7+1=8而数组y的长度等于
7.D逻辑或运算中只要有一个运算量为真,结果就为真当c=2c=6条件不成立时,c的值肯定不是
2、
3、
4、
5、6c!=3”与c!=5”均成立,所以D选项的结果一定为真故本题答案为D选项.D
20.C
21.【解析】要计算出主字符串中包含子字符串的个数,应该检查主字符串中从第一个到最后一个字符每出现一个计数变量加1最后将得到的个数返回给主函数
22.voidfunchar*aintij=0;fori=0;a[i]!=\0;i++ifa[i]!=*aU++]=a[i];//若不是要删除的字符*则保留a[j\0;//最后加上字符串结束符\0【解析】此题是删除字符串中的星号思路是通过for循环完成对字符串的遍历,通过if判断,找到不是“*”的字符,将其赋值到数组a中星号前的位置,“ifa[i]!=*”“a[i++]=a[i『,最后返回主函数将删除*后的字符串输出即可
23.intfunSTREC*aSTREC*bint1inthintij=0;fori=0;i=p=ifa[i].s=la[i].s=h/*将分数高于1低于h的学生记录存入结构体数组b中*/b[j++]=a[i];returnj;/*返回分数范围内的学生人数*/本题使用循环判断结构实现题目要求循环语句用于遍历结构体数组;条件语句用于判断当前元素是否符合条件,若符合条件则将其存入结构体数组b中变量j为数组b元素下标,最后变量j+1为学生人数,作为函数值返回
24.【解析】要找到所有学生中成绩低于平均分数的人数,首先需要算出所有学生的平均成绩然后将所有学生的成绩与平均成绩相比较将低于平均分数学生的记录存放在新的数组中,并将低于平均分数的学生数返回给主函数1voidfunchar*ss2{inti;fori=0;ss[i]!=\\0;i++/*将ss所指字符串中所有下标为奇数的字母转换为大写字母*/ifi%2==lss[i]=ass[i]=zss[i]=ss[i]-32;本题要求将给定字符串ss中下标为奇数的字母转换为大写字母需要先判断下标为奇数的字母是否是小写字母,如果是再通过其转换方法进行转换从C语言的学习中知道,只要将小写字母减去32即转换成大写宇母,将大写字母加上32即换转成小写字母本程序用if语句实现转换功能
26.voidfunchar*schart[]intij=0n;n=strlens;/*遍历整个数组*/fori=0;i=p=/*如果元素的ASCII值为偶数*/ifs[i]%2==0/*将元素保存到t中*/t[j]=s[i];j++;}叱\0;要删除ASCII值为奇数的字符也就是要保留ASCII值为偶数的字符,将ASCII值为偶数的字符保存到新字符串所以本题的算法是对原字符串从头到尾进行扫描,找出ASCII值为偶数的字符并依次存入数组
27.【解析】要求出二维数组中最大元素的值,需要比较二维数组中每一个元素的值首先,定义变量max用来存放最大元素的值,将其初始化为二维数组中第一个元素的值然后将其与后面的每一个元素进行比较将二维数组中最大元素的值放到变量max当中,并将其返回给主函数
28.【考点分析】本题考查结构体类型成员运算,指向结构体类型的指针变量作函数若要为变量Chi和ch2分别输入字符A和B正确的输入形式应该是A.A和B之间用逗号间隔B.A和B之间不能有任何间隔符C.A和B之间可以用回车间隔D.A和B之间用空格间隔
14.下列叙述中正确的是A.C语言程序中,main函数必须在其它函数之前,函数内可以嵌套定义函数B.C语言程序中,main函数的位置没有限制,函数内不可以嵌套定义函数C.C语言程序中,main函数必须在其它函数之前,函数内不可以嵌套定义函数D.C语言程序中,main函数必须在其它函数之后,函数内可以嵌套定义函数
15.有下列程序:参数【解题思路】本题考查自定义形参的相关知识点,程序流程是这样的在fun函数中求出平均分后,返回到主函数时平均分也要带回,所以只能定义一个指针类型的形参STREC*a此时,引用成员的方式可以使用指向运算符即a—ave和a—s[i]当然也可用*a.aves[i]o.【考点分析】本题考查链表的操作,对链表的主要操作有以下几种建立链表、结构的查找与输出、插入一个结点、删除一个结点【解题思路】题目要求求链表中数据域的平均值,应首先使用循环语句遍历链表,求各结点数据域中数值的和,再对和求平均分遍历链表时应定义一个指向结点的指针P因为“头结点”中没有数值,所以程序中让P直接指向“头结点”的下一个结点,使用语句STREC+P=h-nexto.floatfunintnintisl=0;floats=
0.0;fori=1;i=n;i++sl=sl+i;/*求每一项的分母*/s=s+
1.0/sl;/*求多项式的值*/returns;首先需要根据题意分析表达式的规律,得出通项,然后再完成程序语句本题中公式的规律类似于求l+2+...+n的倒数之和可以通过for循环语句来实现第1项到第n项的变化先根据题目要求定义变量,注意该变量的数据类型然后对其进行初始化操作,因为该变量相当于累加器,所以初值应为0或
0.0根据变量数据类型来确定,再通过for循环语句来完成累加过程本题中si用来表示每一项的分母,每一项的分母都是由前一项分母加项数得到的注意,由于si定义成一个整型,因此在s=s+l.O/sl语句中不能把
1.0写成
1.1错误intA=1;正确floatA=12错误fori=l;i=n;i++正确fori=2;i=n;i++⑴错误intA=1;正确floatA=1\r\n2错误:fori=l;i=n;i++正确fori=2;i=n;i++解析错误1A为实型数,应定义为float类型错误2由题意,AI=1从A2开始,An=l/5+An-l所以循环应从2开始.⑴p=s;2whi侬*p++;lp=s;2while*p++;解析在字符串的最前端加入n个“*”号,形成新串,并且覆盖原串然后通过“printf\nThestringatlerinsert\\%s\\sns;”函数直接输出结果.1错误charfunchartt[]正确char*funchartt[]2错误iftt[i]=Z正确iftt[i]=4att[i]=21错误charfunchartt[]正确char*funchartt[]\r\n2错误iftt[i]=,A,tt[i卜=Z正确lftt[i]=4att[i]=tz解析错误1函数的返回值是字符串的首地址,是指针类型,所以在函数名前要加尔号错误2题目要求将小写字母改为大写字母,所以if语句的判断条件是小写字母.1ift==O2*zero二count;lift==O2*zero=count;解析本题中函数的功能是统计一个无符号整数中各位数字值为0的个数对无符号数进行截取,然后对每个数字进行判断并统计.1错误:intfunihtnintxx[][]正确intltmihtmintr.x[][M]2错误:printf%4ffxx[i]fj];正确printf”%4dxx[i][jD;l错误intfunihtnintxx[][]正确intltmihtmintr.x[][M]\r\n2错误printf%4ff\xx[i]fj];正确:printf%4d xx[i][j];解析:该题错误比较隐蔽,一般的C语言上机考试很少涉及printf顺数中的错误,在这里,我们只要明白“d”和“3的区别就0K了格式字符d表示以带符号的十进制形式输出整数正整数不输出符号;格式字符f表示;以小数形式输出单、双精度,隐含输出6位小数.1错误:fork=m;k0;k—正确fork=m-1;k=0;k—2错误pt=j;正确pt-=j;⑴错误fork=m;k0;k—正确fork=m-1;k=0;k-\r\n2错误pt=j;正确pt-=j;解析错误1本题旨在考查二维数组下标的灵活使用,如果二维数组有m行,则行下标取值从0到m-l0错误2此时指针pt指向字符串的尾部,而函数返回的应是字符串的首地址,所以pt向前移动j个字符,则到达字符串的首部.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.
000010.1错误voidfuninta正确intfimint*a2错误a[j]=a[j+l];正确:a[j]=;⑴错误voidfuninta正确intfimint*a\r\n⑵错误aU]=a[j+l];正确a[j]=;解析其实,该题中题目信息已经告诉我们按“如下规律”这就需要去认真分析矩阵的“规律”了,在第1列中,数列以4开始递减,直至1在该数列中,行和列都是递减循环排列,所以题目在循环的时候有循环条件fori=M;i0;i—和forj=M-l;j0;j-当然每次循环结束后在列中的赋值语句应该是a[j]=a[j-l];o
39.⑴错误ifp==正确:if*p=2错误*p=toupper*p-l;正确*p-1=toupper*p-1;1错误:ifp=正确if*p=\r\n⑵错误*p=toupper*p-l;正确*p-l=toupper*p-l;解析本题比较简单重点考查toupper函数的用法,该函数是将ch字符转换成大写字母,该题较多地应用了字符串处理函数.1错误funNODE*h正确intfunNODE*h2错误p=h-next;正确p=p-next;l错误funNODE*h正确intfunNODE*h\r\n2错误p=h-next;正确p=p-next;解析本题考查的这种链表的数据结构中,必须利用指针变量才能实现即一个结点中应包含一个指针变量,用它存放下一结点的地址建立单向链表的一般步骤是建立头指针一建立第一个节点一头指针指向第一个节点一建立第二个节点一第一个节点的指针域指向第二个节点一……一最后一个节点指向nullo本题重点是了解链表的基本思想和相关算法,其实考试时的程序根本没有书上的难在这里我们要说,重点理解有关链表插入及删除时指针移动的先后顺序问题注意指针的保存和归位即头指针的保存和链表遍历时指针的归位这都是考试重点!..\n\tl错误:fork=4;kn;k++\n正确fork=4;k=l1;k++\n2错误s2=S;\n正确s2=s;\n【解析】题目中要求计算数列前n项的和,包括第n项,因此“fbrk=4;kn;k++”中的“kvn”应改为“kv=n;根据C语言的语法规则,for循环体中的多条语句必须在大括号和“}”之间,因此,要在语句s2=s;后加上\n.1N2substr30lN2substr30解析本题中函数fun的功能是在形参ss所指字符串数组中,查找含有形参substr所指子串的所有字符串并输出,若没找到则输出相应信息在fun函数中,利用循环逐个查找ss所指字符串数组中的每一个字符串,并判断是否含有substr所指的子串,有则输出.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.00001o#includestdio.h#includestringhtypedefstructstu|charname[9j;chargender;intscore;ISTU;STUa=|°Zhao\85;STUf|STUc=|MSunwt4\90|;strcpya.name.c.name;a.gender=c.gender;a.score=c.score;returna;ImainISTUb=|”Qian”,f*951;b=f;printfH%s%c%d%s%c%dMa.namea.gendera.scoreb.nameb.genderb.score;I程序执行后的输出结果是A.Sunf90Sunf90B.Zhaom85Sunf90C.Zhaom85Qianf95D.Sunf90Qianf
95.数据结构在计算机内存中的表示是指A.数据的存储结构B.数据结构C.数据的逻辑结构D.数据元素之间的关系.给出以下定义:charx[]=abcdefg;chary口二『abcdefg};则正确的叙述为A.数组x和数组y等价B.数组x和数组y的长度相同C.数组x的长度大于数组y的长度D.数组x的长度小于数组y的长度.当变量c的值不为
2、
4、6时,值为“真”的表达式是A.c=2c=6c%2!=lB.c==2||c==4||c==6C.c=2c=6!c%2D.c=2c=6||c!=3||c!=518若有说明inta
[3]
[4]则a数组元素的非法引用是Aa
[0][2*l]Ba[l]
[3]Ca[4-2]
[0]Da
[0][41一个n条边的连通无向图,其顶点的个数至多为A.n-1B.nC.n+1D.nlogn
三、程序设计题10题编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数例如,假定输入的字符串为abcdefabcdeabceabcdef子字符串为cd则应当输出3注意部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句试题程序Minclude|tMiclwWVcqcmouhaWincludetcdbo.ibgiacImiWV.iFiOalprocfchar•・•char•MabstrroidfibMftlIcliafMr SI]t»iib»tr{]1KMVH•jrwtcfliU*CUT11pnMftottAtTRWl|*•^iwtrgpnMf°tBAm.•・get*Bwb«tr।pi**tt11piitsCBubait■procprtfMIudXn*»nt.规定输入的字符串中只包含字母和*号编写函数fun其功能是删除字符串中所有的*号编写函数时,不得使用C语言提供的字符串函数例如,字符串中的内容为“****A*BC*DEF*G****,删除后,字符串中的内容应当是“ABCDEFG”o注意部分源程序给出如下请勿改动maini)函数和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句试题程序#includelt;conio.hgt;#includelt;stdio.hgt;voidfuncharavoidmainchars
[81];print{Enterastring\n;getss funS;printfThestringafterdeleted\n;putss;.使用VC++2010打开考生文件夹下progl中的解决方案此解决方案的项目中包含一个源程序文件progl.c在此程序中,学生的记录由学号和成绩组成,N名学生的记录已放入主函数的结构体数组s中请编写函数fun其功能是把指定分数范围内的学生记录存放在b所指的数组中,分数范围内的学生人数由函数值返回如输入的分数是
60、69则应当把分数在60~69的学生记录输出,包含60分和69分的学生记录主函数中把60放在low中,把69放在high中o注意部分源程序给出如下请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句试题程序:#includestdio.h#defineN16typedefstructcharnum
[10];ints;}STREC;intfunSTREC*aSTREC*bintiinthvoidmainSTRECs[N]={{“GA005185}{“GA003176}{“GA002”69}{“GA004”,85}{GAOOr\96}{“GA007/2}{“GA008”64}{“GA006”87}{“GAO15”85}{“GA013”94}{“GAO12”64}{“GAO1491}{“GAO11190}{“GAO17:64}{“GAO18”64}{“GA016,72}};STRECh[N];intinlowhight;printfEnter2integernumberlowhigh:;scanf%d%d;lowhigh;ifhighlow{t=high;high=low;low=t;}n=funshlowhigh;printfThestudentsdatabetween%d—%d:\n\lowhigh;fori=0;i=p=printf%s%4d\n\h[i].num9h[i].s;printf\n;.n个人的成绩存放在score数组中,请编写函数proc它的功能是将低于平均分的人数作为函数值返回,将低于平均分的分数放在down所指的数组中例如当score数组中的数据为{9980405659846076100}时,函数返回的人数应该是4down中的数据应为40565960o注意部分源程序给出如下请勿改动main函数和其。