《2022年安徽省滁州市全国计算机等级考试C语言程序设计模拟考试(含答案).docx》由会员分享,可在线阅读,更多相关《2022年安徽省滁州市全国计算机等级考试C语言程序设计模拟考试(含答案).docx(45页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2022年安徽省滁州市全国计算机等级考试 C语言程序设计模拟考试(含答案)学校:班级:姓名:考号:一、2.填空题(10题)1 .若有定义doublea 5;,则a数组元素下标的上限为。2 .以下程序的输出结果是【】。main() int a=0;a+=(a=8);printf(n%dnA);3 .表达式1/2*(血)3.7/(血)(2.4*(1.5+2.5)值的数据类型为 4 .下列程序的输出结果是o#define LEN 5int aLEN,k ;main() fun 1();fun2();)fun 1() for(k=0;k 0 drfix M 16lypedef Mn*ci eha tu
2、itn |0 void mam ()STRH XT I ;AOOS-.e. I (iA003 .75rGAOOZ4eSSI rGAOO)*S| 4GAOOAM) CGAOlS4tMlrGAoir.MIPAOIITMSTREC hMGA0O47H| (*GA007*S2hI G AOOti * * B51 rGAO13et4h GA0IG.9力. GAO!7e.45. ,GAD1U.74 lia , procepnnifr Hd kxwmt wcoreiXn* n) pnnd %,).。出1分学牛的学号加瞋pnnil函数fun的功能是:将S所指字符串中除下标为偶数同时ASCII码值也 为偶数的字
3、符外,其余的全部删除;字符串中剩余字符所形成的新串放 在t所指的数组中。例如,若s所指字符串中的内容为“ABCDEFG123456”,其中字符A的 ASCII码值为奇数,因此应当删除;字符8的ASCII码值为偶数,但在 数组中的下标为奇数,因此也应当删除;字符2的ASCII码值为偶数, 在数组中的下标也为偶数,因此不应当删除,其他依此类推。最后t所 指的数组中的内容应是“246”。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括 号中填入你编写的若干语句。试题程序:#indude #indudestring】void fun(char *s, cha
4、r t( )void main() char sl00j4100j;printf(1,nPlease enter string S:M);scanf(%s”,s);fun(sj);printf(MnThe result is:%sn0,t);N名学生的成绩已在主函数中放入一个带有头结点的链表结构中,h指 向链表的头结点。请编写函数fun (),其功能是:找出学生的最高分, 并由函数值返回。注意:部分源程序给出如下。请勿改动main ()函 数和其他函数中的任何内容,仅在函数fun ()的花括号中填入所编写 的若干语句。试题程序:9includr 0 1Mtiw N SMrvct dkMdoti
5、Me iruct sUibi xxi htyprdH niriMi Ni*i STREC, double ki,(STRBr h( STREU cmtCdoMbir H)(STREC b伊q.im i -OihpSTKEC* Bialkx p* -Oi whileCKN) 产牛个堵点的雨,各分就在入盘中qiSTREC lkKMM) t p一|】。+ A .pxa ,中pqIP Bru -NULLimum h. 旗Xfil哀伪Iwwd outhi 2.Of *.p-r p*p-fWBt|I出分数whilcCp-bth!NULL i printK*aa *|)void main ()tdoubk
6、N - (tS. 100. B5. 9lh create t) iwtlm(bimaMfuah)4pmuf3 includeraid procctuBr *ir void )clvirtf lOG pnntfn * t) i28.使用VC+2010打开考生文件夹下progl中的解决方案。此解决方案 的项目中包含一个源程序文件progl.c。在此程序中,编写函数fun(), 其功能是根据以下公式计算S,并将计算结果作为函数值返回,通过形参传入。5 = 1 +- + ;? + . +1+2 1+2+31+2+3 +例如,若n的值为11时,函数的值为1.833333。注意:部分源程序给出如下。请勿改
7、动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include #include #include #include float fun(int n)()void main ()(int n;float s;system(“CLS”);printf (nPlease enter N:);scanf (%d;&n);s=fun(n);printffThe result is:%fn”, s);29.规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是: 除了字符串前导的*号之外,将串中其他*号全部删除。在编写函数时, 不得使用c
8、语言提供的字符串函数。例如,字符串中的内容为:*A*BC*DEF*G *,删除后,字符串中的内容应当是:*ABCDEFG。注意:部分源程序在文件PROG1 . C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include void fun( char )main()char 81 ; void NONO () printf( * Enter n Mring:n );fun( s ):printff MThe siring after deleted: nR ) ;puta( n);NONO();void NONO ()本函数用于打开文件,输
9、入数据,调用函数,幅出数据.关闭文件n 7HLE i/i. oul ;int i ; char 81 ;in = fopen( irt dal Jr):out fopen( M out. dat* fM w* );for( s0(i)fcanf( int *% t);fun(t) ifprintf(oute);fcloec(in);fcloe(MJt);30.编写函数fun,其功能是:根据以下公式求兀的值(要求精度0 .0005,n . I 1 x2 1x2x3 I x2 x3 x4即某项小于0.。05时停止迭代)。I x 2 x x n3 x5 x x (2n + 1)程序运行后,若输入精度
10、o . 0005,则程序应输出为3 . 14.注意:部分源程序在文件PROG1 . C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include #ircludr tioublr fun( double )min()I double x ; void NONO();printf( Input ,俨:);x*anf( * % IP t&x) ; printf( * neps = % If. Pl = % lfn t x, fun( x);NONO() void NONO()/本函数用T打开文件.输入数据,调用函数.输出数据.关闭文件 /FIL
11、E fp.M ;ini i ;double x 1fp = fopcn( in. dai。Jr),wf = fopcn( * out. dat .) fbr(i s 0 ; i ) ifucanff fpfR%IT t &x);fprinif( wf. % lfnM . fun( x);firlose( fp); fclc*c(四、2.程序修改题(10题)31.给定程序MOD11 . C中fun函数的功能是:分别统计字符串中大写 字母和小写字母的个数。例如,给字符串s输入:AAaaBBbl23CCccccd,则应输出结果:upper二6, lower = 8o请改正程序中的错误,使它能计算出正
12、确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!123456789101112131415 161718 1920include /*found*/ void fun (char *sr int a, int b) (while (*s) if (*s - *Af & *s = fa* & ws = zf) found/*b-b+l;s+;Y)main () char s 100; int upper - 0r lower - 0 ;printf(wnPlease a string : n);gets (s);fun (s, & upper, slower);pri
13、ntf(wn upper , %d lower - %dnMr upper, lower);)32.在主函数中从键盘输入若干个数放入数组中,用。结束输入并放在 最后一个元素中。下列给定程序中,函数fun()的功能是计算数组元素中 值为负数的平均值(不包括0)。例如:数组中元素的值依次为43, 47, -21, 53, -8, 12, 0,则程序的 运行结果为-25.333333。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include double fun(int x) double sum=0.0 ;int c=0, i=0 ;/ kL*
14、1* kL*kA* kL*。*1kJ* sikL*kL* /不不不不不不不不不不不不不tminrl不不不不不不不不不不不不不/while(xi = = 0) sum=sum+xi;C+ ;i+ ;)/ *1* kL kL* 1* vl*=*1 *1* kL* L* 1* vl*vl* /不不不不不不不不不不不不tcnnri不不不不不不不不不不不/sum=sumc ;return sum ;) main()(int x 1000;int i=0 ;clrscr();printf(nnPlease enter some data(end withfun2() int k ;for(k=0;k LE
15、N;k+)printf(%d,*(a+k); 5 .下列程序的输出结果是【】。main() (int a=2,4,6,*ptr=&a0,x=8,y,z;for(y=0;y 3;y+)z=(*(ptr+y) x)?*(ptr+y):x;print f(dn”,z); )6 .以下程序运行后的输出结果是【】。main() int x,a=l,b=2,c=3,d=4;x=(ab)?a:b; x=(xx)?x:d; printf(n%dnx);)7 .以下程序的运行结果是【】。#include main() int x=l, y=0, a=0, b=0 ;switch(x) case 1 :switc
16、h(y) case 0 : a+ ; break ;do ( scanf(%d, &xi);while(xi+!=0);printf(%fn, fun(x); )33.给定程序MODH . C中函数fun的功能是:读入一个字符串(长度20),将该字符串中的所有字符按ASCII码升序排序后输出。例如,若输入:edcba,则应输出:abcde0请改正程序中的错误,使它能统计出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!5 ; 6 i 7 Ji 8 ! 9 ! 10 iI 11 i 12 ; 13 !i 14 ; 15 ;1617181920212223242526
17、1 ; linclude 2 ; tinclude 3 5 void fun(char t)char c;int if j;/*found*w*w*w*for(i strlen(t); i; i-) for(j 0; j i; j+)/山foundif(tj) t(j + 1)(c - t(j);t(j - tj + 1;t j + 1=c;main ()char s81;printf (wnPlease enter a character string: );gets(s);printf(MnnBefore sorting:n7s, s);fun (s);printf (wnAfter so
18、rting decendingly: n W, s);)34.给定程序MOD11 . C中fun函数的功能是:求出以下分数序列的前 n项之和。2 3 5 8 13 211 2 3 5 8 13,和值通过函数值返回main函数。例如,若n = 5,则应输出:8 . 391667o注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!1 ! tinclude 2 i /*found*w*/3 ; fun (int n)45 ;6 7 !8 :9 i 10(int a = 2, b , 1, c, k ; double s0.0 ;for (k * 1; k = n; k+) s - s
19、 + 1.0 * a / b ;/*www*w*found* c a; a = b; b = c; return(s);1314main () int n = 5 ;12 i15 i ,printf (nnThe value of function is: %lfnwr fun (n);35 .给定程序MODH . C中函数fun的功能是:将p所指字符串中的所 有字符复制到b中,要求每复制三个字符之后插入一个空格。例如,在调用fun函数之前给a输入字符串:ABCDEFGHIJK,调用函 数之后,字符数组b中的内容则为:ABC DEF GHIJKO请改正程序中的错误,使它能得出正确结果。注意:不
20、要改动main函数,不得增行或删行,也不得更改程序的结构。12345678910tinclude void fun(char char *b) int i, k-0;while(*p) i-1; while(i3 & *p) /*found* b(k-p;k+; p+;)1213141516171819202122*w*found bk+L*2324bk-f0f;)main () char a80rb(80);printf(nEnter a string:w);gets(a);printf (The original string: H); puts(a);fun(arb);printf (w
21、nThe string after insert space: ); puts(b); printf(Mnnn);if (*p)2536 .下列给定程序中,函数fun()的功能是:对N名学生的学习成绩,按 从高到低的顺序找出前叫mWO)名学生来,并将这些学生数据存放在一 个动态分配的连续存储区中,此存储区的首地址作为函数值返回。 请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构. 试题程序:#include #include #include #include#define N 10typedef struct sschar num10
22、;int s; STU;STU *funSTU a, int m) STU bN ,*t;int i, j,k;/ kL*1* kL*kA* kL*。*1kJ* kJkL*kL* /不不不不不不不不不不不不不tminrl不不不不不不不不不不不不不不/*t=calloc (m, slzeof (STU);for(i=0;i N;i+) bi=ai;for(k=0; k m; k+) for (i=j=0;i bj.s)j=i;/1k/不不不不不不不不不不不不不Tei me不不不不不不不不不不不不不不/tk.num=b j.num;tk.s=bj s;bj.s=O;)return t;outres
23、ult(STU a,FILE *pf) int i;for (i=0; i 10) printf(HlnGive the number of thestudents who have better score:);scanf(H%d%m);pOrder=fun (a,m);printf。* THE RESULT*kn)printf(nThe top :nn);for (i=0; i m; i+)printf(n%s %dnn,pOrderi.num, pOrder i. s);free (pOrder);)37.给定程序MODII . C中函数fun的功能是:将长整型数s中每一位 上为偶数的数
24、依次取出,构成一个新数放在t中。高位仍在高位,低位 仍在低位。例如,当s中的数为:87653142时,t中的数为:8642o 请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!2345678910111213found141516171819s 10;)main ()(long s, t;printf(nPlease enter202122scanf (w%ldR, &s);fun(sr &t);printf(The result is:%ldnwrt);38.给定程序MODH . C中函数fun的功能是:根据整型形参m,计算如下公式的
25、值。,111 1y = 1 + + + +2,2 3*3 44mm例如,若m中的值为:5,则应输出:1 . 46361 lo请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!include void fun (long s, long *t) int d;long sl*l;*t 0;while (s 0) d = s%10;if (d%2-0) (*t-d* sl+ *t;si 10;234567891011121314include double fun (int m) double y - 1.0 ;int i;for(i - 2
26、 ; i m ; i+) / found / y 1 / (i * i);return(y);)main () int n 5 ; printf(wnThe result is %lfnwf fun (n);39.下列给定程序中,函数fun()的功能是;利用插入排序法对字符串中 的字符按从小到大的顺序进行排序。插入法的基本方法是:先对字符串 中的头两个元素进行排序,然后把第3个字符插入到前两个字符中,插 入后前3个字符依然有序;再把第4个字符插入到前3个字符中,待排 序的字符串已在主函数中赋予。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序
27、的结构. 试题程序:#include #include #dcfinc N 80void insert(char *aa) iht i, j, n; char ch;n=strlen (aa);for (i=l; i kJk!k!k| k! *1 kJ kL k! kI k1 st sf 7,/rj* rjri T rj* r7* 、rj. 4rT*rj. *T* rj* / c=aai;j=i-l;while (j =0) & & (ch aa j) aa j+l=aaj; j-saa j+l=ch;main () char a N = nQWERTYUIOPASDFGHJKIMNBVCXZ
28、n; int i;printf(nThe original string: %sn”,a);insert (a);printf(nThe string after sorting:%snnn, a);)40.下列给定程序中,函数fun()的功能是计算并输出high以内的素数 之和。high由主函数传给fun()函数。若high的值为100,则函数的值 为 1060o请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:#include #include #include int fun(int high) (int sum=0,
29、n=0, j, yes ;while(high =2)yes=l ;for(j=2 ; j =high/2 ; j+)/ kI*_ /不不不不不不不不不不不不Toind个个不不不不不不不不不不小不/ifhigh%j=O yes=O ;break ;)/ vl* *X*L*1*Lvl* vt* kL*v* vl* kL* vL* /不不不不不不不不不不不不不tciind不不不不不不不不不不不不不不/if(yes=O) sum+=high ;n+ ;)high-;return sum ;) main()(clrscr();printf(n%dnn, fun(lOO);五、程序改错题(2题)41.下
30、列给定程序中,函数proc的功能是:先将字符串s中的字符按 顺序存放到t中,然后把S中的字符按正序连接到t的后面。例如,当s中的字符串为 WXYZ时,则t中的字符串应为 WXYZWXYZocase 1 : b+ ; break ; )case 2 : a+ ; b+ ; break ;case 3 : a+ ; b+ ; printf(a=%d, b=%dn, a, b); )8 .以下函数的功能是计算s=l+l/2!+l/3!+l/n!,请填空。 double fun(int n) double s=0.0 ,fac=1.0 ;int i,k=l ;fdr(i= 1 ; i =n;i+);f
31、ac=fac/ks=s+fac ;) 9 .以下函数的功能是求x的y次方,请填空。double fun(double xjnt y)inti ;double z;for(i=l,z=x;i y;i+)z=z* ;return z;10 .下面程序的输出是【】。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#include#include#includevoid proc(char*s, char*t) (inti, si;sl=strlen(s);for(i=0 ; isl; i+)* * * * foun
32、d* * * *ti=ssl;for(i=0 ; is include o. hdefine M Sfoutid mi procCmt g. )mi j. sumOi prmrf(Thi(rintf( *);fori-0iViHi+ +void main()S.Z.O.n.(7O.5.7.3h)rMewi Kd* proc MafT) t六、操作题(2题)43 .函数delete(s,i,n)是作用是从字符串s中删除从第i个字符开始的n个字符,请填空。void delete(char s,int i, int n) int j,k,length=O ;while(slength)1 ;if(
33、L J ) k=i+n; if(i+n =length)while(k length)sj+=sk+;sj=O; )44 .请编写一个函数fun(),它的功能是:比较两个字符串的长度,(不 得调用C语言提供的求字符串长度的函数),函数返回较短的字符串。 若两个字符串长度相等,则返回第1个字符串。例如,输入nanjing nanchang ( 为回车键),函数将 返回 nanjingo注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include char *fun(char *S, char *t)() main
34、()(char a20, b10, *p, *q ;int i ;printf(nInput 1th string :);gets(a);printf(Input 2th string :);gets(b);printf(s”,fun(a, b);)参考答案1.44解析:一维数组元素的定义形式为:数组名N,则该数组中元素的下限是0,上限是N-l o2.1616解析:在程序中首先将8赋值给变量a,然后在进行复合赋值运算。即a=a+a=8+8=16,所以该空格处应该填16o3.整型整型 解析:上面的表达式中,通过强制类型转换把最后参与运算 的数据都转换成了 int型,所以最后得到的结果也是int类
35、型。4.01234o 01234o解析:函数funl给数组a的每个元素赋值,fun2则 输出结果。5.66解析:条件运算符的优先级高于赋值运算符,因此本题先计算关系 表达式(*ptr+y) x)?*(ptr+y):x 的值,再赋给变量 zo当 y=0 时,*(ptr+y)=2, 而x=8, (*(ptr+y)x)条件为真,则整个条件表达式的值为*(ptr+y)=2, 所以z=2 ;当y-1时,*(ptr+y)=4, (*(ptr+y) x)条件为真,则整个条件 表达式的值为*(ptr+y)=4,所以 z=4 ;当 y=2 时,*(ptr+y)=6, (*(ptr+y) x)条件为真,则整个条件表达式的值为*(ptr+y) = 6,所以z=6;循环结 束。因此输出z的结果为6。1 .11解析:因为在条件表达式(ab)?a:b中,比较表达式ab为真,所以x 的值等于a的值等于1,后面两个条