《2022年山东省东营市全国计算机等级考试C语言程序设计模拟考试(含答案).docx》由会员分享,可在线阅读,更多相关《2022年山东省东营市全国计算机等级考试C语言程序设计模拟考试(含答案).docx(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2022年山东省东营市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:班级:姓名:考号:一、2.填空题(10题)1 .软件定义时期主要包括和需求分析两个阶段。2 .通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为【3 .以下函数的功能是计算s=l+l/2!+l/3!+l/n!,请填空。double fun(int n)(double s=0.0,fac=l .0; int i;for(i=l,i =n;i+)(fac=fac;s=s+fac;)return s;)4 .以下程序运行后的输出结果是【】。#include main() int p=30;printf(%dn”
2、,(p/3 0 ? p/10:p%3);例如,若学生的成绩是:85 76 69 85 91 72 64 87,则平均分应当是:78 . 625。注意:部分源程序在文件PR0G1 . C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填人你编写的若干语句。include include #ddineN8mid lislI double ;tract next;I ;typcdef struct slut STREC;double fun( STREC h )STREC cret( double )| STREC h. p, q; int i =0;h p (STREC
3、)nudloc( ixeof( STREC) ) ;p - =0;while(i =si ; i ; p -next =q; p = q;Ip - next = 0;return h;Ioutlist( STREC h)| STREC p;p s h - next; printf( head ) jdo| printf( -%4. IP ,p -s) ;p = p -next; |while(p! =0);printf( nn ):Itnain()I double N = 185,76,69,85.91,72.64,871 ,ave;void NONO();STREC h(h = creal(
4、 s ) ; outlist( h);ave * fun( h );printf( ave = %6.3fn .ave);NONO();Ivoid NONO()1/本函数用于打开文件,人数据,调用函数,/出数据,关闭文件。)FILE in, out ;ini i.j ; double s N tave;STREC ;in = fopen(-in.daf,*r);out s fopen(out. dMfor(i = 0 ; i IO;*)Ifor(j 0 j j N; j + + )fscanf(in,j);h = creat( s );ave fun( h );fjxintf(out, %6.
5、31An, ve);Icloe( in);fcloae(out);25.编写函数fun,其功能是:实现两个字符串的连接(不要使用库函数strcat),即把p2所指的字符串连接到pl所指的字符串的后面。例如,分别输入下面两个字符串:FirstStringSecondString程序运行后的输出结果是:FirstStringSecondString注意:部分源程序在文件PROG1 . C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。tinclude void fun( char pl t char p2)rnain()I charl80t 82(4
6、0 ;vokl N0N0():printf( Enter si and &2 : n);si, 2);printf(nlsi);printf(a2-%sn. 2);printf( Invoke fun( *1 ,2) : n);a2);printf( After invoking: n);printfC%n. *1);N0N0();void NONO()1/本函数用于打开文件,输入测试数据,网用fun南敷,泊出数据,关闭文件。/ int i ;FILE rf, wf ;char al 80, *2(40;rf = fbpen( * in. dal r);wf = fopen(Nout. dal
7、 ,w);for( i s 0 j i 4 include H include define N 20void proc(chr . char b . int n (void main ()(char str!N ntr2Njtint n xy*tem(printf ( Enter the string: n) igetn (strl) printf ( Enter the position of the string deletedi scan ( %d i proc(5trl Mr2. n) t printf (The new string is: n.str2) i27.请编写函数pro
8、c (),对长度为9个字符的字符串,除首、尾字符外, 将其余7个字符按ASCH码值降序排列。例如,原来的字符串为 HabedefA,则排序后输出为HfedcbaAo注意:部分源程序给出如下。 请勿改动main ()和其他函数中的任何内容,仅在函数proc ()中填入 所编写的若干语句。试题程序:* include 01rz. h9 mcludr 然 mclud* Vzdkx bB mclud* Vctype. b9 mcludr void proc char m mi num)(void maiaO(charytaa( ClS) prim”入9个字符一字狰印J八proc(t9)t pnntf
9、*n%m.28.某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程 的成绩已在主函数中给出,请编写函数fun,其功能是:求出该学生的 平均分,并放入记录的ave成员中。例如,学生的成绩是:85. 5, 76, 69 .5, 85, 91, 72, 64.5, 87 .5, 则他的平均分应为78 . 8750注意:部分源程序在文件PR0G1 . C中。 请勿改动主函数main和其他函数中的任何内容,仅在函数flm的花括 号中填入你编写的若干语句。*include MefineN8 typedef structI char num 10; double N s double ave;|
10、STREC;void fun(STREC * a) main()| STREC ;int i;void NONO();fun( &);printf(The %student daU:n , . num);for(i sOji );printf( nve u %7.3fn ,s. ve);NONO(;Ld NONO()1/本函数用于打开文件,输入敷据,调用雨效,出数据.关闭文件*FILE out ;inti.j ; STREC 10 = I|GA005* 5.76.69.5,85,91,72,64.5.87.51. |-GA001 .82.5,66.76.3.76,89.76.46.5.78.5
11、1 .| - CA002- .72.5.56,66.5,66.79.68,46.5.58.51 ,I-GA003- ,92.5.76.86.5,86,99,86,56.5.88.51,|-GA004 ,82,66.5.46.5,56,76,75,76.5.63.51 .I-GA006- .75.5.74,71.5,85,81,79.64.5.71.51.1 GA007- ,92.5.61.72.5.84.79,75,66.5,72.51, * GA008- ,72.5,86.73.5,80,69,63.76.5.53.51. |-CA009- ,66.5.71,74.5.70.61.82.86
12、.5,58.51, | - GAOKT ,76,66.5,75.5.60.76,71,96.5,93.51 .11out = fopen(*oul. dal*for(i = 0 ; i 10 ; i ) I fun(&ai);fpnntf(out, -%7.3An , i. ave);Ifde(out);29.使用VC+2010打开考生文件夹下progl中的解决方案。此解决方案 的项目中包含一个源程序文件progl.c。在此程序中,编写函数fun(), 其功能是删除一个字符串中指定下标的字符。其中,a指向原字符串, 删除指定字符后的字符串存放在b所指的数组中,n中存放指定的下标。例如,输入一个
13、字符串“World”,然后输入3,则调用该函数后的结果 为“Word”。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花 括号中填入你编写的若干语句。试题程序:#include #include #include #define LEN 20void fun (char a , char bf , int n) ()void main ()(char strlLEN,str2LEN;int n;system(CLS”);printf (Enter the string:n);gets(strl);printf (4Entcr the posit
14、ion of the string dclctcd:);scanf (%d, &n); fun(strl, str2, n);printf (The new string is:%sn, str2); )30.使用VC+2010打开考生文件夹下progl中的解决方案。此解决方 案的项目中包含一个源程序文件progl.c。在此程序中,编写一个函 数,其功能是从传入的num个字符串中找出最长的一个字符串,并通 过形参指针max传回该字符串的地址(用*作为结束输入的标识)。 注意:部分源程序在文件progl.c中。请勿改动主函数main。和其他函数 中的任何内容,仅在函数fun()的花括号中填入你编
15、写的若干语句。试题程序:1 #include 2 #include 3 #include 4 #include 5 char * fun (char ( * a) 81, int num, char * max)6(789 void main ()10 11 FILE * wf;12 char ss 10 81 , * ps =NULL;13 char s381 = n abedn, ,degH, udiegnsH), *p=NULL;14inti = 0,n;15system(CLSn);16printf(输入若干个字符串:”);17 gets(ssij);18 puts (ssi);19
16、while (! stremp (ss i /1* )=0)/*ffl 4 个星号作为结束输入的标志*/20 21 i+;22 gets (ssij);24 puts (ssfil);25 )26 n = i;27 ps=fun(ss,n,ps);28 printf (*nmax = %snps);29 /*/30 wf = fopen (out .dat*, w1);31 p = fun (s,3,p);32 fprintf (wf,% s,p);33 fclose (wf);四、2.程序修改题(10题)31.给定程序MODH . C中函数fun的功能是:根据以下公式求兀值,并作为函数值返回
17、。例如,给指定精度的变量eps输入0 0005时,应当输出Pi = 3 .141480ox. 112123123423353573579请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。23456789101112131415161718include tinclude double fun(double eps) double s,t; int n-1;s-0.0;found*t-0;while(teps) s+-t;t-t * n/(2*n+l);*found*return (s);1920main () (double x;prin
18、tf(wnPlease enter a precision:; scanf(n%lf&x);printf(neps-%lfr Pi-%lfnnH,xr fun(x);xX)xW)或 x=2x0请改正程序中的错误,使它能得山正确的结果。S=f(-n)+f(-n+1 )+.+f(0)+f(l)+f(2)+.f(n)的值。例如,当n为5时,函数值应为10.407143。f(x)函数定义如下:r(x+iy(x-2)0L (x-iy(x-2)注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include #include /f/不不不不不不不不不不不不不不
19、不不不不不不不不不不不不不不不/f (double x) if (x=0.0 | | x=2.0) return 0.0;else if (x 0.0) return (x-1) / (x-2);elsereturn (x+l)/(x-2);)double fun(int n)(int i; double s=0.0,y;for (i=-n; i *pb) fun2();if(*pa *pc) fun2();if(*pa *pb) fun2(); )8 .以下程序运行后的输出结果是【】。mam() (char a=23456789”,*p ;int i=0 ;33.给定程序MODII . C中
20、fun函数的功能是:根据整型形参m,计算如下公式的值。ill12 3m例如,若主函数中输入5,则应输出-0 . 283333。请改正函数fun中的错误或在横线处填上适当的内容并把横线删除,使它能计算出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!2 3456 789101112131415161718finclude double fun(int m) (double t = 1.0;int i;for(i - 2; i m; i+) /*found*1t - 1.0-1 /i;/*found* main ()(int m ;printf(nPlease ent
21、er 1 integer numbers:n);scanf(H%dr &m);printf (nnThe result is %lfnwr fun(m);34.下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun()的功能是:将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并作为函数值返回。其累加和通过函数值返回main()函数。例如,若n=5,则应输出8.391667。请改正程序中的错误,使它能得到正确结果。注意不要改动main函数,不得增行或删行,也不得更改程序的结构。试题源程序#include #include typedef struct aa int
22、 data;struct aa *next;NODE;int fun(NODE *h) int sum=0;NODE *P;/不不不不不不小不不小tm n d小可、不不不不不小不不/P=h;while(P- next) if(p- data%2=0) sum+=p- data;/1 *1* 7,7,*1* *2*I/不不不不不不不不不不n(不不不不不不不不不不/p=h- next;return sum;NODE *creatlink(int n)NODE *h, *p, *s, *q ;int i, x;h=p=(NODE *)malloc(si zeof(NODE);for(i=l; i d
23、ata=rand()%16;5- next=p- next;p- next=s;p=p-next;)p- next=NULL;return h;)outlink(NODE *h, FILE *Pf)(NODE *p;p=h- next;fprintf(Pf, HnnTHE LIST:nn HEAD);while(P) (fprintf(Pf,n- %d p- data); p=p- next;)fprintf(pf, unH);)outresult(int s, FILE *pf)(fprintf(Pf, HnThe sum of even numbers : %dnn, s);)main()
24、(NODE *head; int even;head=creatlink(l 2);head- data=9000;outlink(head, stdout);even=fun(head);printf(nThe result :n); outresult(even, stdout);35 .给定程序中,函数fun()的功能是:使数组中的元素的值缩小5倍。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include float m10;1/ /不不不*5*5不小小不不*5*5*5 tm n (1不不 不
25、 不 不不不不*不/int fun (void) intj;printf(In subfunc after callingnH);for(j=O;j 10;j+)/*1* *1* *1* *1* *1* *1 1* *1* *1* *1* *1* ! *1* U1 *1* *1*f/不不不不不不不小不小小不不tm nd、不不不不不不不不不不不不/print (M%f n,m|jJ%5); main() int i;printf (In main before callingn);for (i=0;i 10;i+) mi=i+20;printf(%fn,mi);fun();printf(nnln
26、 main after callingnn);for(i=O; i 10;i+)36 .已知一个数列从。项开始的前3项:0, 0, 1,以后的各项都是其相 邻的前3项之和。下列给定的程序中,函数fun()的功能是:计算并输出 该数列前。项的平方根之和sum。n的值通过形参传入。例如,当n=10 时,程序的输出结果应为23.197745。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构.试题程序:#include#include#include/ *1*1* *1* *1*1*2*f/个个小个个个个个个个个个个个小re1 nti个个小小个
27、个个个个个个个小小个个个不个/fun (int n)double sum, sO, s 1, s2, s; int k; sum=I.O;if(n =2) sum=0.0;s0=0.0; sl=0.0; s2=1.0;for (k=4; k =n; k+) s=s0+sl+s2; sum+=sqrt (s); sO=s 1; sl=s2; s2=s;/* found* */ return summain ()int n;clrscr ();printf(nInput N=M);scanf(%dM, &n);print f (*,%fnu, fun (n);37 .下列给定程序中,函数fun()
28、的功能是:判断一个整数m是否是素 数,若是返回1,否则返回0。在main。函数中,若fun。返回1则输出 YES,若fun()返回0则输出NO!请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构. 试题程序:#include #include int fun(int m) int k=2;while (k =m& &(m%k)tJ/不彳彳,不个不小不小不不不小丁。】n。小不不不不不不不个个个个小个小个个个个不不/k+/Jf/*T个个*T*T*T*个个*T*T*个个*T* Trl 八。个个个个个个个个个个个个个个个个个个个个个/ if(m=
29、k)return 1;else return O;)main () iht n;clrscr ();printf(nPlease enter n: );scanf(d,&n);if (fun (n) printf(YESn);else printf (MNO! n);38 .下列给定程序中,函数fun()的功能是:将s所指字符串中的字母转 换为按字母序列后续字母(但Z转换为A, z转换为a),其他字符不变。 请改正程序指定部位的错误,使它能得到正确结果。注意不要改动main函数,不得增行或删行,也不得更改程序的结构。试题源程序#include #include void fun(char *s
30、)/1-b /小小小小小小小小小小tc ind小小小小小小小小小小/while(*s!=) if(*s=A & *s =a* & s 1/个个个个个个个个个个/(*s)+; void main() chars80;printf(nn Enter a string with length 80. :nn ); gets(s);printf(Mn The string:nn t);puts(s);fun(s);printf (nn The Cords: nn ); puts(s);39 .下列给定程序中,函数fun()的功能是:根据整型形参m的值,计算 如下公式的值。t= 1 -1 /(2x2)-
31、1 /(3x3)-. .-I/(mxm)请改正函数fun()中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include double fun(int m) double y=1.0;int i;/r/小小小小小小小小小小小小小m n。* * 4小小”小”.小个个小个个/ for(i=2;i m;i+) y-=l/ (i*i);return(y);)main() int n=5;clrscr();printf(nThe result is %lfn, fun(n);40 .下列给定程序中,函数fun。的功能是:统
32、计字符串substr在字符串 srt中出现的次数。例如,若字符串为aaas 1 kaaas,子字符串为as,则 应输出2。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include fun (char *str, char *substr)int i, j, k, num=O;/ ”Cj -x -If -X 4k 4k -k -k、k -x -x /个个个个个个个个个个个个个m in。个个个个个个个个个个个个个个/for (i=0, str i, i+)for (j=i, k=0; substr k=str j ; k
33、+, j + )if (substr k+l= 0r)num+;break;return num;)main () char str80,substr80;pnntf(MInput a string: );gets (str);printf(Input a sbustring: “);gets (substr);printf (%dn , fun (str, substr);五、程序改错题(2题)41 .下列给定程序中,函数proc()的功能是:给定n个实数,输出平均 值,并统计平均值以上(含平均值)的实数个数。例如,n=8 时,输入 90. 009, 179. 623, 167. 575,
34、100. 051,6. 092, 154. 986, 12. 432, 45. 765,所得平均值为 94. 566635,在平均值以上的实数个数应为4o请修改程序中的错误,使它能得出正确的结果。注意:不要改动main。函数,不得增行或删行,也不得更改程序的结 构。试题程序:s include Vad出8 mclude 9 include Cldi mt proHfloat (. ml n / found mt j e*0ifkMt xa*0.0i for (imOi jnntF( Kfn* mi for jOe )EVE C|void matn()(n(Mt Mr 100-( 0.009.1
35、79.623.1ST. 575.100.051. .092.154.12, 432.45. 765 1tprinifL* 公n.proc42.下列给定程序中,函数fun的功能是:从整数10-55,查找能被3整除且 有一位上的数值是5的数,把这些:故放在b所指的数组中,这些数的 个数作为函数值返回。规定函数中al放位数,a2放十位数。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!while(*p)(if(i%2 = 0)*p=*;P+ ; i+ ;puts(A);9 .下面程序的功能是:计算1 10之间的奇数之和与偶数之和,请填空。#
36、includemain() int a,b,c,I;a=c=0;for(I=0;I=10;I+=2)a+=I;;c+=b; pri ntf(偶数之和=%dn n,a);printf(奇数之和二%dn”,c 11);10 .以下程序由终端键盘输入一个文件名,然后把从终端键盘输入的字 符依次存放到该文件中,用#作为结束输入的标志,请填空。#include main() FILE *fp;char ch,fname10;printf(MInput the nam nH);gets(fname);if(fp= =NULL)include i;it fun(int *b) int k, L a2, i=
37、0;for (k=IO;k=55;k+):* 申* *a *3und*/Q=k/10;al=k-a2*10;a2=5)ll(k%3=0 &al=5)bi)k;i+; 1./* *京* Viund*41*/ return k;),/*w:*Mt*ir*4und*,*/ .return k;ma in () int a100%k.m;m=fiiha;printf(Fie result is : nH);for (k=O;kk);pHn 好 n。;1六、操作题(2题)43.请编一个函数 voidproc(intttEMN, intppN), tt 指向一个 M 行N列的二维数组,求出二维数组每行中最大元素,并依次放入pp所指的一维数组中。二维数组中的数已在主函数中给出。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句。试题程序:#include#include#include#define M 3#define N 4void proc(int ttrM3rN。int ppN)( void main(int strMN= 34, 56, 84, 78,23, 84, 93, 12),28, 38, 39, 93;intplNJ, i, j, k;system(