《2023年河南省周口市全国计算机等级考试C语言程序设计真题(含答案).docx》由会员分享,可在线阅读,更多相关《2023年河南省周口市全国计算机等级考试C语言程序设计真题(含答案).docx(41页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2023年河南省周口市全国计算机等级考试C语言程序设计真题(含答案)学校:班级:姓名:考号:一、2.填空题(10题)1 .设有以下程序:main()int i,sum=0;for(i=2;i 10;i+) if(i%2)=0) continue;sum+=i; printf(n%dnn,sum);)程序执行后的输出结果是()。2 .以下程序的输出结果是【】。#include main() int n=12345,d;while(n!=0) d=n%10; printf(n%dD); n/=10; )3 .实现程序可将磁盘中的一个文件复制到另一个文件中,两个文件的文 件名在可执行命令的命令行中(
2、相当于copy命令),假定文件在当前目录 下。请补全程序。#include void main(int argc,char*argv)例如字符串中的内容为A BC e DEF C 二副除后字符串中的内容应当 是 ABCDEFG,注童:部分源程序在文件PR0G1.C中.请勿改动主函数main和其他函数中的任何内容.仅在函数fun的花括号中填入你编写的若干语句。tindude void fun(char a)main()| char t81 ;void NONO(); printf( * Enter a string: n ) ;gete( s);printf( The string after
3、deleted:nw ) ;pute(8); NONO();I void NONO() 1/本丽数用于打开文件,输入数据.调用函数,输出数据,关闭文件,/FILE in. out; int i;char s81 ( in = fopeii( H dalRtr); out =open(out da!* / w* ); far(i sO;i include V,idto, hvoid (imvoid nruiift ()char bS1Jiprintf * Enter Mnnt : t1*) i rrl(h) iprint,(The niniW “let drlrlrdeVn*) piiin (t
4、) 24. 规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:删除字符串中所有的*号。编写函数时,不得使用c语言提供的字符串函数。例如,字符串中的内容为:*A*BC*DEF * G*删除*后字符串 中的内容应当是:ABCDEFG0注意:部分源程序在文件PROG1 . C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#in*lu(lc void fun( char )main()chur 81 :;void NONO(; ) jprintff * Enter a Mring:nM );fun( s );pnntff The strin
5、g after dektrd: nrt ) ;putM( 0);NONOO :1vnid NONO()本函数用于打开文件,悔人数据,调用函数,输出数据.关闭文件r,/F1IE in. out ;int i ; char s8! J ;in -仇pr( in. dai广 Jr);mit =仇pen( out. dal J w);for( i = 0 ; i 10 ; i , ) Ifcanf( tn, %. );ftin(a) 1fprintf(out#t,%nwt s) ;5:fttlone(in);fclow( out);编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串 中出现
6、的次数。例如,假定输入的字符串为abcdefabcdeabceabcdef,子 字符串为cd,则应当输出3。注意:部分源程序给出如下。请勿改动 主函数main和其他函数中的任何内容,仅在函数proc的花括号中填入 所编写的若干语句。试题程序:M include|t MiclwW Vcqcmou h aW include g iacImiW V.iFi, O al procfchar char Mabstr*oid tibMiH )cluif ,,: SI wbirr liKM fllB)rMcwi( *CUT I g,( ”)peq人 m.get( mbetr) plftS( *utrtblF
7、) 5 proci1 dXn *a)i27.使用VC+2010打开考生文件夹下progl中的解决方案。此解决方 案的项目中包含一个源程序文件progl.c。在此程序中,编写一个函 数,其功能是从传入的num个字符串中找出最长的一个字符串,并通 过形参指针max传回该字符串的地址(用*作为结束输入的标识)。 注意:部分源程序在文件progl.c中。请勿改动主函数main。和其他函数 中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。 试题程序:1 #include 2 #include 3 #include 4 #include 5 char * fun (char ( * a)
8、81, int num, char * max) 67 )8 void main ()9 11 FILE * wf;12 char ss 10 81 ,* ps =NULL;!diegns”, *p=NULL;13 char s381 = abed, deg,14 int i = 0 , n;15 system(nCLSn);16printfC输入若干个字符串:); 17 gets(ssi);18 puts (ssi);19 while (! stremp (ss ,”* ”)=o)/*用4个星号作为结束输入的标志*/20 21 i+;22 gets (ssi);24 puts (ssi);2
9、5)26 n = i;27 ps=fun(ss,n,ps);28 printf (nnmax = %snn,ps); Kt* kJ*kI# vt*kI* kJ*/J 1 / /卜一卜一卜/卜 /30 wf = fopen (out .dat, w);31 p = fun (s,3,p);32fprintf(wf,% s,p);33 fclose (wf);A /*j /4/1 / r1rj*rj*/28.使用VC +2010打开考生文件夹下progl中的解决方案。此解决方 案的项目中包含一个源程序文件progl.c。在此程序中,请编写函数 该函数的功能是将s所指字符串中ASCII值为偶数的字符
10、删除,字符串 中剩余字符形成一个新字符串并将其存放在t所指的数组中。例如,若s所指字符串中的内容为“ABCDEFG123456,其中字符B的ASCII值为偶数,字符2的ASCII值为偶数,都应当删除,其他依 此类推。最后t所指的字符串中的内容应是“ACEG135”。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花 括号中填入你编写的若干语句。试题程序:#include #include #include #include void fun (char * s, char t)()void main ()(chars100,t100;system
11、(“CLS);printf (nPlease enter string s:);scanf (ss);fun(s, t);printf (ccnThe result is : %srT,t);29.编写函数fun,其功能是:求ss所指字符串中指定字符的个数,并返 回此值。例如,若输入字符串123412132,输入字符为1,则输出3。注意:部分源程序在文件PRO。. C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。tinclude #inclu8e define M 81 int fun(char char c)main()i char a( M
12、 . ch;void NONO();printf( SnPlease enter a Mring: ) gets( a);printf( * nP1ease enter a char: ) ; ch = getchar();phntf( H nThe number of the char is: %dnwf fun(av ch);NONO();Ivoid NONO()1/本函数用于打开文件,输入测试数据,调用fun函数,输出数据.关闭文件。/ im i ;FILE * if, wf ;char a M j f bj M . ch ;rf = fopen(win. dat/r*);wf = fo
13、pcn( M out. dat tw w );for( i = 0 ; i * inrlutlrIO* drfineM iwid procfM Gjl MM arrlS* (1.2.J.4$7(9 tOUIell.jrMraii aCUT) g pnntfC* TW array ne U、一 /44iTii.proHarr4 “,“( FHE Rl ITe |foHi -Oi iVM. i+ + )I fot j *O|Mpnnt( ) ipcinih d)i四、2.程序修改题(10题)31 .给定程序M0DH . C中函数fun的功能是:根据整型形参m,计算 如下公式的值。,1 1 1 1
14、y = 1 + + + +2,2 3*3 4,4例如,若m中的值为:5,则应输出:1 . 46361 lo请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!234567891011121314include double fun (int m) double y - 1.0 ;int i;for(i - 2 ; i m ; i+) / found / y 1 / (i * i);return(y);)main () int n 5 ; printf(wnThe result is %lfnwf fun (n);32 .假如整数数列中的数
15、不重复,并存放在数组中。下列给定的程序中, 函数fun()的功能是:删除数列中值为X的元素。N中存放的是数列中 元素的个数。请改正程序中的错误,使它能够得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:#include #define N 20fun (int *a,int n,int x)int p=0,i;an=x;while (x!=ap)p=p+1;if(p=n) return -1;else for (i=p;i /不不不不不不不不不不不不不tci ind不不不不不不不不不不不不不,、/ ai+l=ai;return n-1;)main()
16、int wN=-3,0,1,5,7,99,10,15,30,90, x,n,i;n=10;printf(nThe original data :nn);for (i=0;i n;i+) printf(n%5dn,wi);printf(nnlnput x (to delete ): ); scanf(n%d&x);printf(nDelete : %dnfx);n=fun(w,n,x);if (n=-l) printf(*No be found!*niT);elseprintf(nThe data after deleted:nn);for (i=0;i n;i+) printf(n%5dn,
17、wi);printf(nnnn);33.下列给定程序中,函数fun()的功能是:将s所指字符串中的字母转 换为按字母序列后续字母(但Z转换为A, z转换为a),其他字符不变。 请改正程序指定部位的错误,使它能得到正确结果。注意不要改动main函数,不得增行或删行,也不得更改程序的结构。试题源程序#include FILE*fl, *f2 ;if(argc ) printf(nparameter error!nn) ; exit(O) ; fl=fopen(argvl, nrn);f2=fopen(argv2, w);while( )fputc(fgetc(f 1 ),f2);fclose(fl
18、);fclose(f2);)4 .以下sstrcpy。函数实现字符串复制,即将t所指字符串复制到s所指 向内存空间中,形成一个新的字符串s。请填空。void sstrcpy(char *s,char *t) while(*s+=); main() char strl100,str2=nabcdefghn;sstrcpy(strl,str2);printf(n%snfstrl);5 .若有语句:int i19, j=i%4;printf(%dn,j);则输出结果是【】。6 .下列程序的输出结果是o#include #include void fun(char *s) (/小小小不不不不小不不tm
19、不不不不不不不不小不/while(*s!=) (if(*s =A & & *s -st & & s k!。1kL* k! k! /不不不不不不不不不不tcnnd不不不不不不不不不不/(*s)+;)void main()(char s80;printf(un Enter a string with length 80. :nn ); gets(s);printf(nn The string:nn tn);puts(s);fun(s);printf (nnn The Cords: nn n); puts(s);)34.下列给定的程序中,函数hn()的功能是:为一个偶数寻找两个素数,这两个素数之和等
20、于该偶数,并将这两个素数通过形参指针传回主函数。请改正函数fun()中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include void fun(int a, int *b, int *c) int ij,d,y;for (i=3;i /个个不不不不不不不不不不不ci不不不不不不不不不不不不不不/y=o;for (j=2;j I/个个不不不小个不不不不个个Tei不不不不个个不不小个不不不不/ d=i-a;for (j-2;j =sqrt(double)d);j+)if (d%j=O y=0;if (y=-D*b
21、=i; *c=d;) )main () int a,b,c;do printf(nnlnput a:);scanf(n%d &a); while (a%2);fun (a, &b, &c);printf (nnn%d=%d+%dnn, a,b,c);35 .下列给定程序中,函数fun()的功能是 读入一个字符串(长度20),将该字符串中的所有字符按ASCII码降序排序后输出。例如:输入dafhc,则应输出hfdcao请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,敢不得更改程序的结构。试题程序:#include #include /1 vl0*1 kI*/不
22、不不不不下不不不不不不不/c不不下不不不不不不不不不不不/int fun(char t) char c ;inti, j ;for(i=0 ; i strlen(t)-l ; i+) for(j=i+ l ; i strlen(t) ; j+) c=tj;/。*1 *1* *1*vl* /不不不不不不不不不不不不不tciinri不不不不不不不不不不不不不不/ti=c ;) main() char s81;clrscr();printf(nnPlease enter a character string :);gets(s);printf(nnnBefore sorting : n%Sn, s)
23、;fun(s); printf(nnAfter sorting decendingly : n%sn, s);36 .给定程序MODE .C中函数fun的功能是:从整数1到55之间,选 出能被3整除、且有一位上的数是5的那些数,并把这些数放在b所指 的数组中,这些数的个数作为函数值返回。规定,函数中al放个位数, a2放十位数。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。1234678910111213141516171819include h int fun(int *b) int k,al,a2,i-0;for(k10; k55
24、; k+) * found*a2-k/10;alk*a2*10;if (k%3-0 & a2-5)| (k%3-0 & al,=5) b(ik; if)/1md / return k;)main () int a(100)9 krm;mfun(a);printf(wThe result is :nw);for(k0; km; k+) printf(n%4dnr ak); printf;37 .下列给定程序中函数fun()的功能是计算1/n!的值。例如:给n输入5则输出0.0083330请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题
25、程序:#include #include /I/不小不不不不+不不不不t mind不不不不不不不不不不不不不/int fun(int n) double result=1.0 ;if(n=0) return 1.0 ;while(n 1 & n 170)/vl*vl* vL* I*1 vL*vl* vl*vl* /不不不不不不不不不不tci 不不不不不不不不不不不不/result *=n+ ;result=l/result ;return result ;) main() int n ;printf(HInput N :n);scanf(u%dn, &n);printf(nn 1 /%d!=%
26、Ifnn, n, fun(n); )38 .下列给定程序中fun()函数的功能是将口个无序整数从小到大排序。 请改正程序中的错误,使它能得出正确的结果。注意;不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:#include #include #include fun(int n, int *a) intfor (j=O;j n-l;j+)p=j;/*found*/for(i=j+l;i ai)/*found*/ t=i;if (p!=j)=ap;ap=t;)putarr( iht n,int *z) inti;for (i=l;i =n;i+9z+) printf(n%
27、4d,*z);if (!(i%10) printf(nnn); printf (nnn);)main ()int aa20=9,3,0,4,1,2,5,6,8,10,7,n= 11 ; clrscr();printf(nnnBefore sorting %d numbers:nf;n); putarr(n aa).fun(n,aa);printf(nAfter sorting %d numbers:n,n);putarr(n,aa);39.下列给定程序中,函数fun()的功能是;求S的值。设 S=(22/l*30)*(42/(3*5)*(62/(5*7)* *(2k)2/(2k-l)*(2k+
28、l) 例如,当k为10时,函数的值应为1.533852。请改正程序中的错误,使它能得出正确的结果。注童,不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#include#include/ 7“1 *1*7,7, vt7“ 7” /不不不不不不不不不不不不不不lei inc不不不不不不不小不不不不不不不/fun (int k) iht n; float s, w, p, q;n=l;s=1.0;while (n =k) w=2. 0*n;p=w-1.0;q=w+1.0;s=s*w*w/p/q;n+;)/ vL* kL*kL* kL* vL* vt* vl*
29、1 vt* vt* vt* vt* vt* vt* vl* vt* vt* vt* /个个不干不下不不不不不不不不不tci不不不不不不不不不不不不不不/return s)main() clrscr ();printf(n%fn fun (10);40.下列给定程序中,函数fun()的功能是:先从键盘上输入一个3行3 列的矩阵的各个元素的值,然后输出主对角线元素之和。请改正函数fun()中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include int fun() int a3 3,sum;int ij;/1 *1* *1*/个个
30、个个不不不不不下不不不Tciinrl不不不不不不不不不不不不不不/sum=l;for (i=0;i 3;i+) for(j=0;j 3;j+)/ 7“_1 *1*7,7,/不不不不不不不不不不不不不Tcunc小不不小不不不不小小小不不不/scanf(n%daij);for(i=0;i 3;i+) sum=sum+aii;printf(nSum=%dnn,sum);)main()(fun();五、程序改错题(2题)41.下列给定程序中proc ()函数的功能是:将n个无序整数按从小到大排序。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main ()函数,不得增行或删行,也不得更改程序
31、的结构。试题程序:g mriuck o. h: include VzdkR b tnclude Vadxx Il wul proclork+/ (ound foKi- j 1,Yi hl+ ) if(nrrparrCO* / found (tl*rTDjarrGjeBnpianCp-tivoed putarrC mt nkni cint isfor 1 1 niif (f (iK 10) pnntf(*n):pnntf( *n*) (n.3G4l25,8.1O7raid maia() mt an( Z0 n*lliytetn( ) pi putarr(a artH proc(aarr)ipri
32、ntftVaAfter sorting %d numbers n* *fi)ipui4rrtrr)i42,已知一个数列从。项开始的前3项为0, 0, 1,以后的各项都是其相邻的前3项之和。下列给定的程序中,函数proc的功能是:计算并输出该数列前n项的和sum。n的值通过形参传人。例如,当n=20请修改程序中的错误,使它能得到正确结果。注意:不要改动maiil函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdlib . h>#include<conio h>#include<stdio. h>double proc(int n)
33、(double sum, sO, si, s2, s;int k;sum=l. 0;if(n<=2)sum=0. 0;s0=0. 0;sl=0. 0;s2=l. 0;* * * * found * * * *for(k=4; k<n; k+) (s=s0+sl+s2;sum+=S:sO=sl ;int(int x,int yjnt cp,int dp) cp=x*x+y*y ;dp二x*x-y*y ;)main() int a=l, b=8, c=7, d=9 ;t(a,b,c,d);printf(%d%dn,c,d); 7 .若有如下程序:#includestdio . hmai
34、n()char s30;strcpy(&sO, abc) ; strcpy(&sl, de) ; strcpy(&s2, f); printf(%sn, s) ; 则程序运行后的输出结果是【】。8 .以下定义的结构体类型拟包含两个成员,其中成员变量info用来存 入整形数据;成员变量link是指向自身结构体的指针,请将定义补充完 整。struct node int info ;link ; ;* * * * found * * * *s2=s;return sum; )void main (int n;system(CLS);printf(Input N=);scanf(%d, &n J;pr
35、intf(%f n, proc(n); )六、操作题Q题)43 .使用VC+2010打开考生文件夹下progl中的解决方案。此解决方 案的项目中包含一个源程序文件progl.c。在此程序中,编写函数 fun(),其功能是求斐波那契数列中大于t的最小的数,结果由函数返 回。斐波那契数列F(n)的定义为F(0)=0,F(l)=lF(n)=F(n-l)+F(n-2)例如,当t=1000时,函数值为1597。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花 括号中填入你编写的若干语句。试题程序:#include #include #include in
36、t fun (int t)()main ()(int n;n=1000 ;printf (n=%d, f=%dn”,n,fim(n); )44 .请补充函数fun(),该函数的功能是:把一个字符串中的字符(字母) 按从小到大排序,并把这个全部由字母组成的字符串保存在原串中,函 数返回这个字符串的长度。例如;输入“cixbr2.3,如果为bcirx,字符串 长度为5。注意:部分源程序给出如下.请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线 上填入所编写的若干表达式或语句。#include #define N 20 int fun (char *str) (int i=0,
37、j=0,k=-0,m=0;char t;char *p=str;while(*p) if(*p =A&*p =faf&*p =z)P+; )*(str+i户0;while(*(p+j);while (*(p+k) (if(*(p+k) *(str+m)(t=*(str+m);*(str+m)=*(p+k);*(p+k)=t;)k+;)j+;)return i;)main()(char str81;iht n;clrscr();printf(HInput the original string );gets(str);printf(* The Original string *In);puts(str);printf(* The nwe string *n);n=fun(str);puts(str);printf(*The length of new string is:参考答案1.2424解析:continue语句功能:结束本次循环C主:不是终止整个循环), 即跳过循环体中continue语句后面的语句,开始下一次循环。2.5432154321解析:在while循环中,d=n%10 ;语句每次求得的结果是 n个位上的数值,例如12345勺0所得的余数就是个位上的5。接下来输 出得到的个