2023年四川省眉山市全国计算机等级考试C语言程序设计预测试题(含答案).docx

上传人:太** 文档编号:97989439 上传时间:2024-07-08 格式:DOCX 页数:44 大小:77.73KB
返回 下载 相关 举报
2023年四川省眉山市全国计算机等级考试C语言程序设计预测试题(含答案).docx_第1页
第1页 / 共44页
2023年四川省眉山市全国计算机等级考试C语言程序设计预测试题(含答案).docx_第2页
第2页 / 共44页
点击查看更多>>
资源描述

《2023年四川省眉山市全国计算机等级考试C语言程序设计预测试题(含答案).docx》由会员分享,可在线阅读,更多相关《2023年四川省眉山市全国计算机等级考试C语言程序设计预测试题(含答案).docx(44页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、2023年四川省眉山市全国计算机等级考试C语言程序设计预测试题(含答案)学校:班级:姓名:考号:一、2.填空题(10题)1 .某二叉树中度为2的结点有18个,则该二叉树中有【】个叶子结/W O2 .阅读下列程序,则程序的输出结果为【】。#include stdio.hstruct ty int data;char c; ;main() struct ty a=30/xr;fun(a);printf(n%d%cn,a.data,a.c); fun(struct ty b) b.data=20;b.c=y; 3 .软件测试中路径覆盖测试是整个测试的基础,它是对软件【】进行 测试。4 .下面的程序可

2、对指定字符串中的字符串进行从大到小排序,请将程序 填完整。(注:程序采用了冒泡排序法)#include #include printf( n n); )24 .请编写函数proc(),其功能是:将str所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在t所指数组中。例如,当str所指字符串中的内容为abcdefg,则在t所指数组中的内容应是bdfo注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:叁 include V.idhh, b AS tncludc Vcomo*U ifH ludr Vzdt

3、o. hS include tnnvoid tr chAf void miiinn * t) i25 .请编写函数proc,其功能是:将str所指字符串中除下标为偶数、同 时ASCII码值为奇数的字符外,其余的字符都删除,串中剩余字符所形 成的一个新串放在t所指的数组中。例如,若str所指字符串中的内容为 ABCDEFG12345,其中字符B的ASCII码值为偶数,所在元素的下标为 奇数,因此必须删除;而字符A的ASCII码值为奇数,所在数组中的下 标为偶数,因此不应当删除。依此类推,最后t所指的数组中的内容应 是 ACEGO注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容

4、,仅在函数proc的花括号 中填人所写的若干语句。试题程序:#include#include#include#includevoid proc(char*str, char t) ()void main char str100, t100;system(CLS);printf(nnPlease enter string str :);scanf(n%Sn, str);proc(str, t);printf(nnThe result iS : %snn, t);26 .请编写函数proc (),该函数的功能是:移动一维数组中的内容,若 数组中有n个整数,要求把下标从p到n-l (pSn-l)的数

5、组元素平移到 数组的前面。例如,一维数组中的原始内容为1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, P的值为4。移动后,一维数组中的内容应 为 5, 6, 7, 8, 9, 10 . 11, 12, 13, 14, 1, 2, 3, 4O注意:部分源 程序给出如下。请勿改动main ()函数和其他函数中的任何内容,仅 在函数proc ()的花括号中填入所编写的若干语句。试题程序: # include V*tdio. h # define M 80void proc(int - w. int p. int n) void main()(78.910

6、,111213,14)iint i p n 14 iprintf( The original dAiatnH ifor(i-BOiiprintf( * %3d .arri) printf(*nnw) i27 .使用VC +2010打开考生文件夹下progl中的解决方案。此解决方 案的项目中包含一个源程序文件progl.c。在此程序中,编写函数fun(), 其功能是将S所指字符串中除了下标为奇数同时ASCII值也为奇数的字 符之外的其余所有字符全部删除,字符串中剩余字符所形成的一个新字 符串存放在t所指的数组中。例如,若s所指字符串的内容为“ABCDEFG12345,其中字符A的 ASCII值为

7、奇数,但所在元素的下标为偶数,因此需要删除;而字符1 的ASCH值为奇数,所在数组中的下标也为奇数,因此不应当删除, 其他依此类推。最后t所指数组中的内容应为“135”。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花 括号中填入你编写的若干语句。试题程序:#include #include #include void fun (char * s, char t)()main()(chars100 ,t WO;printf (AnPlease enter string s:);scanf (%s”, s);fun(s, t);printf (c

8、cnThe result is:% snt);28.编写一个函数,输入n个字符串,串与串之间以Enter键分隔,找出最短字符串中第一个字符串,传回该串地址(用一个新串“*”作为结束输入 的标志)。注意:部分源程序给出如下。请勿改动main ()函数和其 他函数中的任何内容,仅在函数fun ()的花括号中填入所编写的若干 语句。试题程序: 停 include Vsldio. h include 4 include Vconio. h char * fun(char ( 100unt num) void main()(1char str10100. miniin( nwi = O:FILE * o

9、ut i prmtf ( input strings withas end:);gets(strijiputs(strCi iwhile(! MrcmpC* M) = =0)(i+ + s gets(tn11min- fun(strn) :prinift *nmin %sn*.min)iout = fopcn( Moutfilc. datM *w):sirepyl xir0. just strcpy(strLl *)iytrcpy( jtr2.*tcsO istrcpy(Mrf3j*-somcM);sifprintKou! fun(str5) fclo5c(out) ;29 .请编写函数。fu

10、n能是:判断形参n中的正整数是几位数(输入数 据的位数不超过4位),并将结果通过函数值返回。例如:若输入的数据为123,则输出结果为:输入的数字是3位。注意:部分源程序存在PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所缩写的若干语句。 试题程 finclude void NONO(); int fun (int n) ) main () int n. place ;doprint ”请输入一个4位以内的正整数: scanf (R%dwr 4n);)while (n9999); place = fun(n);printf (“输入的数字是%d位n。

11、,place ); NONOO;) void NONO O本函数用于打开文件,输入数据,调用雨数,输出数据.关闭文件0/ FILE - fp, wf ;int i, n, place ;fp - fopen(c:testin.dat,rR);wf - fopen (*c: test kjut.datWw); for ( i 0; i 10; i 1) (fscanf (tp, %d , 4n); place = fun (n);fprintf(wf/place);) fclose(fp); fclose(wf);序:)30 .假定输人的字符串中只包含字母和*号。请编写函数proc,它的功能是:

12、将字符串中的前导*号全部删除,中间和后面的*号不删除。例如,若字符串中的内容为*a*bc*def*g*,删除后,字符串中的内容则应当是 a*bc*def*g*。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数Poc的花括号中填入所编写的若干语句。试题程序:#include<stdio. h>#include<conio . h>void proc(char*str)()void main(char str81;printf(nEnter a string: knn);gets(str);proc(str);printf(nThe strin

13、g after deleted: knn);puts(str); 四、2.程序修改题(10题)31 .下列给定的程序中,函数fun()的功能是;将s所指字符串中出现的 n所指字符串全部替换成t2所指字符串,所形成的新的字符串放在w所 指的数组中。在此处,要求tl和t2所指字符串的长度相同。例如:当 s所指字符串中所指的内容为abcdabfab, tl所指字符串中的内容为ab, t2所指字符串中的内容为99时,结果在w所指的数组中的内容应为99cd99f99o请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #

14、include #include / 7,7,7,。1 7,7,17,7,-I* /不不小不不不不小小不不不不td n6小小小不不不不小不不不小小不/int fun (char *s, char *tl, char *t2, char *w) int i; char *p,*r,*a;strcpy(w,s);while (*w)p=w; r=tl;/1/不不不、个不不不不、不不不tci n不不不1、不不不不不不不小/while (r)if (*i*= 二*p) r+;p+; else break;if(*r=二,o,)a=w; r=t2;/ *1 *1*1* kL*。1 kL*kL*1* /不

15、不不不不不不不不不不不不tc不不不不不不不不不不不不不不/while (*r) *a=*r;a+;r+ w+=strlen(t2);)else w+;main()chars100,tl100,t2100,w100;clrscr();printf(nnPlcase enter string S:);scanf(n%sn,s);printf(nnPleaseentersubstring tl:);scanf(u%sn,tl);printf(nnPlease enter substring t2:); scanf(n%sn,t2);if (strlen(tl)= =strlen(t2) fun (s

16、,tl,t2,w);printf(unThe result is : %sn”,w);)else printf(nError : strlen(n); 32 .给定程序MODH . C中函数fun的功能是:为一个偶数寻找两个素 数,这两个素数之和等于该偶数,并将这两个素数通过形参指针传回主 函数。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!3 i4 i5 !6 ;7 ! i8 i i i9 i10 11 i12 i13 I i14 ;15 :16 517;18 !19 J20 i2M22 I i23 j,24 ! 2

17、5 i26 ;1 ! linclude 2 J linclude void fun(int a,int *bf int *c)(int ifj/dfy;for(i3;i-a/2;i-i42)(/,found /Y-l;for(j-2;j-sqrt(double)i); j+)if (i%j0) y0;if (y-1)(d-a-i;for(j2;j 1)for(i=0;i n;i+)if(stri stri+l) temp=;stri=stri+l;【=temp;)printf();5 .是数据库设计的核心。6 .软件维护活动包括以下几类:改正性维护、适应性维护、【】维护和 预防性维护。7 .以

18、下函数把b字符串连接到a字符串的后面,并返回a中新字符串的 长度。请填空。strcen(char a, char b) int num = 0, n = 0 ;while(*(a+num)! = )num+ ;while(bn)*(a+num) = bn ; num+ ;)return(num);#include #include void fun(long s,long *t)/7,/ .卜一卜q. q、q. q. q、.卜,4 q. 卜/ int d; long sl=l;*t=0;while(s 0) d=s%10;/ vl*1* / 、/ 、-j、j、一、/J、,j、 rrw-R 、r

19、j、-R r7 /if(d%2=0) *t=d*s+*t;sl*=10)/k1*1/t、/s=10;)main () long s,t;clrscr();printf(nnPlease enter s: ); scanf(“ld”,&s);fun(s,&t);printf(nThe result is :%ldn”,t);34.已知一个数列从0项开始的前3项:0, 0, 1,以后的各项都是其相 邻的前3项之和。下列给定的程序中,函数fun()的功能是:计算并输出 该数列前n项的和sumo n的值通过形参传入。例如,当n=10时,程序 的输出结果应为96.0000000请改正程序中的错误,使它能

20、得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。#include #include double fun(int n) (double sum, SO, SI,S2, S ;int k ;sum=1.0 ;if (n =2)sum=0.0 ;s0=0.0 ;si =0.0 ;s2=1.0 ;/vl* vl*1/不不不不不不不不不不不不不,ci in不不不不不不不不不不不不不/for (k=4 ;k n ;k+)S=S0+Sl+s2 ;Sum+=s ;S0=sl ;Sl=s2 ;/ 77,7,7 7,7,7,7, .!17,7,7,7,7,7,7/不不小不不不不不

21、不不不不不td n不小小不不不不不不不不小小/S2=S ;return sum ;) main() int n ;1234567891011121314151617clrscr();printf(nInput N=n);scanf(%d, &n);printf(u%fnn, fun(n);35 .给定程序MOD11 . C中函数fun的功能是:计算n!。例如,给n输入5,则输出12。. 000000。请改正程序中的错误,使程序能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!*include double fun (int n) double result -

22、 1.0 ;if n 0 return 1.Q ;while(n 1 &4 n 170) /育肯食found*/result n- return result ;main ()(int n ;printf(wInput N:w);scanf(n%dwr &n);printf(wnn%d! %lfnnwrnr fun(n);)36 .下列给定程序中,函数fun()的功能是求出数组中最小数和次最小数,并把最小数和a0中的数对调,次最小数和al中的数对调。请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #inclu

23、de #define N 20 void fun(int *a, int n) int i, m, t, k ;/* found* */ for(i=O ; i n ; i+) m=i , for(k=i ; k n ; k+) if(ak am) /* found* */ k=m ;t=ai;ai=am;am=t ;main()(intx, bN=ll, 5, 12, 0, 3, 6, 9, 7, 10, 8,n=10, i ;clrscr();for(i=0 ; i n ; i+)printf(n%dn, bi);printf(unn);fun(b, n);for(i=0 ; i n ;

24、i+)printf(%d, bi);printf(n);)37 .下列给定程序中,函数fun()的功能是:应用递归算法求某数a的平方根。求平方根的迭代公式如下:%=K+2)/2 %例如,2的平方根为1.414214。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include / kL*kL* kL*kL*。1 kL* kL* kJ*/不不不不不不不不不不不不不tc ma不不不不不不不不不不不不不不/fun(double a,double xO) double xl,y;xl= (x0+a/x0)/2.

25、0;/vl* kL*1 1* kL*vl* /*1 vl* *1* kL*kL*/不不不不不不不不不不不不不,门不不不不不不不不不不不不不不/if (fabs (xl-xO) 0.00001)y=fun (a, xl);else y=xl;return y;main () double x;printf(nEnter x: ); scanf(n%lf&x);printf (The square root of %lf is x, fun(x,l.O);38 .下列给定程序中函数fun()的功能是计算正整数num的各位上的数 字之平方和。例如:输入352,则输出应该是38 ;若输入328,则输出

26、应该是77o 请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include long fun(long num)I *+* * _|_ * _|_ * _|_ * found * * * * * * * * * * * * Ilong k=l ;do k+=(num% 10) * (num% 10);num/=10 ;/* * * * * * * * *+*+* *+*+*/ while(num)return (k);main() long n ;clrscr();printf(nPlease enter

27、 a number :);scanf(%ld, &n);printf(nn%ldnn, fun(n); )39 .下列给定程序中,函数fun()的功能是:计算s所指字符串中含有t所指字符串的数目,并作为函数值返回。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include #include #define N 80int fun(char *s, char *t) int n ;char p, *r ;n=0 ;while(*s) P= S ;/ vl* *1* *1* *1* kL*vL* kL*

28、kL*。*1* vl* kL*kL# kL* kL* /不不不不不不不不不不不不不不tc md不不不不不不不不不不不不不不不/r二p ;while(*r)if*r=*p) r+ ; p+ ; else break ;/k1* kLkL* *1* L kL* vL* *1 *1*1 k* k1 vl 1* vl* kL*kL* *1* vL* k1* /不不不不不不不不不不不不不不tciind不不不不不不不不不不不不不不不/if(*r=O)n+ ;s+ ;)return n ;)main()char aN, bN ; intm ;clrscr();printf(nnPlease enter st

29、ring a :n);gets(a);printf(nnPlease enter substring b :n);gets(b);m=funa,b);printf(nnThe result is :m=%dnH, m);40 .下列给定程序中fun()函数的功能是 将n个无序整数从小到大排序。请改正程序中的错误,使它能得出正确的结果。注意;不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include #include fun(int n, int *a) int i,j,p,t;for (j=O;j n-l;j+) P二j;/v* kL* kL* v

30、t*vL*1 kL*vt* kL*kL* vl*/不不不不不不不不不不不不不不不tciind不不不不不不不不不不不不不不不不不不不/for(i=j+l;i ai)/ vt*上11vt* vt* vt*/年不不不、不不不不不不不不不不TcnnC不不(、不不不不不不不不下不不不不不不不/ t=i;if (p!=j)t=aj;aj=ap;ap=t;)putarr( iht n,int *z) inti;for (i=l;i =n;i+,z+) printf(n%4d*z);if(!(i%10) printf(nnn); printf(unn);)main ()int aa20=9,3,0,4,1,2

31、,5,6,8/0,7,n= 11;clrscr();printf(nnnBefore sorting %d numbers:nM,n); putarr(n,aa);fun(n,aa);printf(nnAfter sorting %d numbers:nn ,n) ;putarr(n,aa);五、程序改错题(2题)41 .下列给定程序中,函数proc的功能是:首先把b所指字符串中的 字符按逆序存放,然后将strl所指字符串中的字符和Str2所指字符串 中的字符,按排列的顺序交叉合并到str所指数组中,过长的剩余字符 接在str所指数组的尾部。例如,当strl所指字符串中的内容为ABCDEFG,

32、 str2所指字符串中的内容为1234时,str所指数组中的内 容应该为A483c2D1EFG;而当strl所指字符串中的内容为1234, str2 所指字符串中的内容为ABCEDFG时,str所指数组中的内容应该为 1G2F31: 4DCBAo请修改程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结 构。试题程序:#include#include#include#includevoid proc(char*strL char*str2, char*str) inti, j; char ch;i=0; j=strleu(str2)-l;/* *

33、* * * *while(ij) (ch=str2i ; str2i=str2j ; str2j=ch;i+; j; )while(*strl|*str2) (if(*strl)*str=*strl ; str+ ; strl+;) if(*str2) *str=*str2; str+ ; str2+;)8 .以下程序是用递归方法求数组中的最大值及其下标值。请填空。#define M 10 void findmax(int *a, int n, int i, int *pk) if(i a *pk);findmax(a, n, i+1, &(*pk) ; main() int aM, j, n

34、=0 ;printf(nnEnter%d data ; nn , M);for(i=0 ; i M;i+)scanf(%d , a+i);findmax(a, M, 0, &n);printf(n The maxinum is : %dnn , an);printf(n Its index is ; %dnu , n) ; 9 .是从二维表列的方向进行的运算。10 .结构化程序设计的3种基本结构分别是顺序、选择和 o二、单选题(10题)11 .若有定义charch; inta; doubled;”,当输入为 12345 678910.36 时,以 下选项中能给各个变量正确赋值的是()。)/*

35、* * * jQund* * * *str=O:) void main (char si100, s2100, t200;system(nCLSn);printf(n nEnter si string: );scanf(%s, si);printf(n nEnter s2 string: );scanf(%s, s2);proc(sl, s2, t);printf(n nThe result is:%s n, t); )下列给定程序中,函数proc ()的功能是:从m个学生的成绩中统计出 低于平均分的学生人数,人数由函数值返回,平均分存放在形参aver所 指的存储单元中。例如,输入8名学生的成

36、绩:6070809065758595则 低于平均分的学生人数为4 (平均分为77 . 5)。实际输入时学生数以 “Enter”键作为结束,成绩与成绩之间也与Enter键作为分隔。请修改程 序中的错误,使它能得到正确结果。注意:不要改动main ()函数, 不得增行或删行,也不得更改程序的结构。试题程序:It include 行 M 20mt proc (float mt aver / (MMmI mi .ve .t-Oiki cMZ-Ok.si ior k -0|kb (/1ior iO.iVsj+ )/ fo41Ml i“ “couni. . i/ found vrf ”,muni rcnj

37、fttaEid mainC)(I(m1 mwM)jiveri tnr miiCL-S*)1pnotf(wnPlrar enter ms *)raiw(a Kd* & m) pnm( *aPkese enter “d mark An* m) i ,cr-Oitr number of utudetitsii Mdn pror(献 se &wr) ).pFwii* Avc - % fn. 六、操作题(2题)43.请补充main函数,该函数的功能是 输入两个正整数numl和num2, 求这两个数的最大公约和最小公倍数。例如,若输入的两个正整数为12, 4,则它们的最大公约数为12,最小 公倍数为4O注

38、意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在main函数的横线上填人所编写的若干表达式或语句。试题程序:#include#includevoid main (int a, b, numl, num2, t ;system(CLS):printf(nnlnput two numbers : nn);scanf(n%d, %dn, &numl, &num2);if(numlnum2) !a=num2 ;b=numl :) elsea=numl ;b=num2 ;)while( 1 )!t二a=b ;b=t :printfgreatest common divisor :

39、%dnn, a);printf(nleast common multiple :%dnn, 3;44.下列给定程序中,函数fun()的功能是:按顺序给s所指数组中的元 素赋予从2开始的偶数,然后再按顺序对每5个元素求一个平均值,并 将这些值依次存放在w所指的数组中。若s所指数组中元素的个数不是 5的倍数,多余部分忽略不计。例如,s所指数组有14个元素,则只对 前10个元素进行处理,不对最后的4个元素求平均值。请改正函数fun()中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #define SIZE 20fun (double *s, double *w) int k, i; double sum;for(k=2, i=0; i SIZE; i+)s i=k; k+=2;sum=0

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 解决方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁