《2022年四川省广元市全国计算机等级考试C语言程序设计预测试题(含答案).docx》由会员分享,可在线阅读,更多相关《2022年四川省广元市全国计算机等级考试C语言程序设计预测试题(含答案).docx(42页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2022年四川省广元市全国计算机等级考试C语言程序设计预测试题(含答案)学校:班级:姓名:考号:一、2.填空题(10题)1 .已知字符A的ASCII码值为65,以下语句的输出结果是。char ch=B;printf(n%c%dn!ch,ch);2 .下面程序将二维数a的行和列元素互换后存放另一个二维数组b中。请填空。main()inta23=l, 2, 3, 4, 5. 6);intb32, i, j ;printf(array an);for(i=0 ; i =1 ; i+)for(j=0 ; ; j+) printf(%5d, aij);1 ;)printf(n) ; printf( ar
2、ray b : n);for(i=0 ; ; i+) for(j=0;j =l;j+) printf(n%5dn, bij);W include * include # define M 16lypcdcf struclchar num 10 tint si)STRECgSTREC proc(STREC a. ini b)(I fvoid main()JSTREC-GA005.76) GA003”,89) (BGA002w64.GA00475) wGA001 .88) 0 “GA007- .65) .HGAOO896), HGAOO6*,69).(RGAOi5 JMGAO1262h (GAO1
3、46OMwGAOir73n(*GAO1798. GA016* .94 ) iSTREC hiint nu int it printf(*Thr original data:nM) tfor (i - 01 i M t i + +)(if(i%4= =0) printf( n)i 每行输出4个学生记录 printft %s%3d * num$tui. s);printfC,nnEnter the score: w)ih=proc(5tum);printf(*The data: *) print n%s % 1dn”h num.h. s): printf(*n*)i24 .编写函数fun,其功能是
4、:求ss所指字符串中指定字符的个数,并返回此值。例如,若输入字符串123412132,输入字符为1,则输出3。注意:部分源程序在文件PROC1 . C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括 号中填入你编写的若干语句。tinclude tinclude #define M 81int fun( char ss. char c)main()I char a; M : . ch;void NONO();printf( SnPlease enter a string: ) ; gets( a);printf( * nP1ease enter a char: ); ch
5、= getchar();printf( * nThe number of the char in: %dn*, fun(av ch);NONO():void NONO()1/本函数用于打开文件,检人测试数据,调用fun函数,输出数据.关闭文件。/ int i ;FILE rf. wf ;char a M j 9 bM 9 ch ;rf = fbpen( Hin. dat Jr);wf = fopcn( M out. dat . w);for(i = 0i 10;i+)Ifecanf(rft %it a);facanfC rf9R%s* t b);ch s b ;fjprintf(wfvM%c
6、%dnwt ch, fun(at ch);I.;一fcloee( rf);fcloee( wf);25 .请编一个函数 void proc(int ttEMN, int ppN), tt 指向一个 M 行N列的二维数组,求出二维数组每行中最大元素,并依次放入pp所指的一维数组中。二维数组中的数已在主函数中给出。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句。试题程序:#include<stdio. h>#include<conio. h>#include<stdlib. h>#define
7、 M 3#define N 4void proc(int ttrM3rN。int ppN) void main (intstrMN= 34, 56, 84, 78,23, 84, 93, 12),28, 38, 39, 93;intpN, i, j, k;system(CLS);printf(The riginal data is: n);for(i=0;i+)(for(j=0;j+)printf(%6d, strij);printf(n);)proc(str, p);printf( nThe result is: n); for(k=0: k<M; k+)printf(%4d, pk)
8、;printf(n); )26 .某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出,请编写函数fun,其功能是:求出该学生的 平均分,并放人记录的ave成员中。例如,学生的成绩是:85 .5, 76, 69 . 5, 85, 91, 72, 64 , 5, 87 . 5, 则他的平均分应为78.875。注意:部分源程序在文件PR0G1 . C中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun部位中 填入你编写的若干语句。include WHinc N 8 typrdrf Mnict char num 10); double* N1 : doub
9、le avr;I :STREC;void fun( STREC a)niain()! STREC =|-CA(X)5M .85.5,76,69.5,85,91 ,72.64.5.87.51; int i;void NONO(fun( );prinlf( n Pie % 八 student linU: n” . n num):fbr(i *0;i N; i )printf( * %4. s: i );printn w navr = %7.3fnHtn. ayQ ;NONO();void NONO()1/本函数用于打开文件,输入数据,调用函数.输出数据.关闭文件。*/FILE emit(7 ,二i
10、ni i.j i STREC s10 |MGA005- t,72,64;5.87.51 .: - CA001 - g 5.66.76.5,76.89.76,46.5,78.511|w CA002- .72.5.56,66.5.66,79,68,46.5.58.51 4| Rt56.5.88.51 tI” CA004” .82.66.5,46.5.56.76.75.76.5,63.5 I .! ”GA006” .75.5.74,71.5.85.81,79t64.5.7L5| .72.5.84.79.75.66.5,72.51 .| GA008H .72.5,86.73.5.80,69,63.76
11、.5.53.51.| M1158. 51 .| -GA0I0- ,76.66.5.75.5.60.76.71.96.5,93. 51 ,I I eMl = fopcn( out. w);(br( i s 0 ; i 10;i+)lfun(& i |);fprintf( out M %7.3fn . J i rtve);(dwc( out);27.使用VC+2010打开考生文件夹下progl中的解决方案。此解决方 案的项目中包含一个源程序文件progl.c。在此程序中,请编写函数 fun(),其功能是将一个数字字符串转换成与其面值相同的长整型整数。 可调用strlen函数求字符串的长度。例如,在
12、键盘输入字符串2345210, 函数返回长整型整数2345210。注意:部分源程序存放在文件progl.c 中,请勿改动主函数main()和其他函数中的任何内容,仅在函数fun() 指定的部位填入所编写的若干语句。试题程序: 爨| #include 笔 iinclude 菱 void NONO ();瓢 long fun ( char * s )瞿main () char s 10 ; long r;prints (”请榆入一个长度不超过9 督个字符的数字字符串:”);VR gets (s);r = fun ( s );H printf (M r =%ldnM , r );|4 NONO ()
13、; )1161 void NONO ()Kj /*本函数用于打开文件、输入数据、调 笆用函数、榆出数据及关闭文件/-3v; FILE * fp, * wf ;mF int i; long r;葡 char s10 / p;fp = fopen(Hin.dat/rM);wf fopen(out.dat,w”);重, for (i = 0 ; i 10 ; i + ) fgets (sr 10, fp);p , strchr (s,1 n1);ME if (p) *p = o;福 r = fun (s);SEfprintf (wf r,%ldn,/ r);爨 箜、fclose(fp);31 fcl
14、ose(wf);* 28.编写函数fun (),其功能是:求出11000中能被7或11整除,但 不能同时被7和H整除的所有整数,并将其放在a所指的数组中,通过 n返回这些数的个数。注意:部分源程序给出如下。请勿改动main () 函数和其他函数中的任何内容,仅在函数fun ()的花括号中填入所编 写的若干语句。试题程序:=include d includeh9 include Vtdio, h Kid futi mi n)void main ()同 Ml000jn*kiyAtcmC ) fun (or (k*Oik l)M 10 , i prmtfi I 一行Y9 个H ctx prtfii(
15、*$d aikj)i pnntf* define M 4修 drhx N 3void proc char raid mam( chf 4100jwMV. WW ss i.Chhfh iat i|i printfCeTht matntn*)i fcr(iOy Mgi* ) ( ) prmt( * %* pnmf( ne)ipfocnntf -nn) i30 .使用VC +2010打开考生文件夹下progl中的解决方案。此解决方 案的项目中包含一个源程序文件progl.c。在此程序中,编写函数fun(), 其功能是将ss所指字符串中所有下标为奇数的字母转换为大写(若该 位置上不是字母,则不转换)。
16、例如,若输入“abc4EFg”,则应输出一Bc4EFg”。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花 括号中填入你编写的若干语句。试题程序:#include #include #include void fun (char *ss) void main (void)(char tt 51;printf (nPlease enter an character string within 50 characters:9);gets(tt);printf(cnnAfter changing,the stringnfun(tt);printfCn
17、becomesn %stt);四、2.程序修改题(10题)31 .下列给定程序中,函数fun()的功能是求出数组中最小数和次最小数,并把最小数和a0中的数对调,次最小数和al中的数对调。请改正程序中的错误,使它能得到正确结果。注意不要改动main函数,不得增行或删行,也不得更改程序的结构。试题源程序#include #include #define N 20 void fun(int *a, intn) int i, m, t, k;/kL*kL*1/乙、1ry* 乙、乙、乙、/for(i=0; i n; i+) m=i;for(k=i; k n; k+) if(ak *k1 /* vl#*1
18、 *1k| 1*V1 L# *X*/ 卜卜 rj .卜#-J 卜卜一门T zx I -|.、?、rj rj卜卜-rj /k=m;t=ai;ai=am;am=t;32 .下列给定程序中,函数fun()的功能是:按顺序给s所指数组中的元 素赋予从2开始的偶数,然后再按顺序对每5个元素求一个平均值,并 将这些值依次存放在w所指的数组中。若s所指数组中元素的个数不是 5的倍数,多余部分忽略不计。例如,s所指数组有14个元素,则只对 前10个元素进行处理,不对最后的4个元素求平均值。请改正函数fun()中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试
19、题程序:#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.0 ;for(k=0, i=0; i 7,7,7,7,-7,7,7,7,/小不不不小不不小不小不不不td n不不小小不不不不小不不小小小/if(i+l%5=0)printf(n) ; )3 .数据元素之间 的整体称为逻辑结构。4 .以下程序中函数huiwen .的功能是检查一个字符串是否是回文,当 字符串是回文时,函数返回字符串:yes!,否则函数返回字符串:
20、no!, 并在主函数中输出,所谓回文即正向与反向的拼写都一样,例如:adgda。 请填空。#include char *huiwen(char*str) char*pl,*P2;int i,t=0 ;Pl=str;p2=;for(i=0;i - strlen(str)/2;i+)if(*pl+!=*p2-)t=l ; break ; if( )retum(yes!);else return(nno!n);)main() char str5O;printf(Input:);scanf(%s,str);printf(%sn,);5. fun函数的功能是:首先对a所指的N行N列的矩阵,找出各行中的w
21、k=sum/5; Sum=O; k+; return k;) main() double aSIZE, bSIZE/5; int i, k;k=fun(a/b);printf (The original data : n);for(i=0 ; i SIZE ; i+) (if(i%5=0)printf(n);printf(%4.0f7ai); )printfnnThe result : n);for(i=0; i k; i+) printf(%6.2f, bi);printf(nn); )33 .下列给定程序中,函数fun()的功能是:求k!(k13),所有阶乘的值作为函数值返回。例如:若k=
22、10,则应输出3628800。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include long fun(int k)/2 kX k!1#Ik1k! 1# k1#/不不不不不不不不不不不不不tci n不可不不不不不不不不不可不不/ifk0 return (k* fun (k-1);/k| k| k.j *i 7,7,7,kJi kI 7,7,sJ *i *.t 7,k k| k| kI 7,/不不不小不不不不小小不不不tm】n不不小不不不小不小不不不不小/else if (k=0) return 1
23、;main ()int k=10;clrscr ();print, (d!=%ldn ”, k, fun (k);34 .下列给定程序中,函数fun()的功能是:根据形参m的值(2勺/9), 在m行m列的二维数组中存放如下所示的数据,由main。函数输出。 例如,若输入2,则输出1224输入4,则输出123424683 69 124 8 12 16请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构. 试题程序:#include #include #define M 10int aiM MI=0;/k*1 *1 k1 k1 k9 /不不小不
24、不不不个个个不不不不 TOI 1T1 (1不不不不个个个不不个不个不不不不不不不/fun( int *a, int m)intjk;for (j=0; j m; j+)for (k=0; k m; k+)/ vL*kL*kL*kT* /*vl* %L* kI*7/不不不不不不不不不不不不不不不tm nd不不不少不不不不不不外aj k=k*j;)main ()int i,j,n;clrscr ();printf (nEnter nn); scanf (n%dn, &n); fun (a, n);for (i=0; i n; i+) for (j=O;j n;j+)printf (%4d ,ai
25、j);printf (Hn );35 .给定程序MODH . C中函数fun的功能是:计算n!o例如,给n输入5,则输出120 . 000000。请改正程序中的错误,使程序能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!1234567891011121314151617*include double fun (int n) double result - 1.0 ; /found if n 0 return l.Q ;while(n 1 & n 170) /育found*/ result * n- return result ;main () (int n
26、;printf(wInput N:H); scanf(H%dwr &n);printf(wnn%d! %lfnnwrnr fun(n); 36 .下列给定程序中,函数fun()的功能是:先从键盘上输入一个3行3列的矩阵的各个元素的值,然后输出主对角线元素之和。请改正函数fun()中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include int fun()(int a3 3,sum;int ij;/不不小不不不不不小小不不不Toiincl不小小不不不不不小不不个不个/sum=l;for (i=0;i 3;i+) for (j=O
27、;j 3;j+)/ 7,7,7,7,7,7,7,7,7,/小不不不小不不小不小不不不tdscanf(n%daij);for(i=0;i 3;i+) sum=sum+aii;printf(nS um=%dn,sum);)main()( fun();)37 .给定程序MOD11 . C中函数fun的功能是:首先将大写字母转换为 对应小写字母;若小写字母为au,则将其转换为其后的第5个字母; 若小写字母为vz,使其值减21。转换后的小写字母作为函数值返回。 例如,若形参是字母A,则转换为小写字母f若形参是字母W,则转换 为小写字母b。请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要
28、改动main函数,不得增行或删行,也不得更改程序的结构!234567include finclude char fun(char c) if(o-1 “891012131415C-C+32;if(c-fa & c1v * &c-1z *) cc-21;return c;171819202122main () char clrc2;printf(wnEnter a letter(A-Z): ;cl-getchar();if(isupper(cl)(c2-fun(cl);printf (wnnThe letter f%cf change to %cn, cl,c2);else printf(XnE
29、nter (A-Z)!nn);)38 .下列给定程序中,函数fun()的功能是;计算函数F(x, y ,z)=(x+ y)/(x- y)+(z+y)/(z-y)的值。其中x和y不相等,z和y不等。例如,当x的值 为9, y的值为11, 2的值为15时,函数值为350。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:#include #include #define FU(m, n) (m/n) float fun(float a, float b, float c) float value;value=FU(a+ b, a
30、-b)+FU(c+ b, c-b); / vL* kL*kL*1 *1* kL* kL/不不不不不不不不不不不不不tci me!不不不不不少不不不不不不不不不不不不/return( Value);main() float x, y, z, sum;printf (Input x y z: );scanf(n%f%f%f;&x, &y, &z);printf(nx=%f, y=%f, z=%fn x, y, z);if (x=y | | y=z) printf (Data error! n );exit (0); )sum=fun (x, y, z);printf(nThe result is:
31、%5. 2fn n,sum);)39 .下列给定程序中,函数fun()的功能是将字符串s中位于偶数位置的 字符或ASCII码为奇数的字符放入字符串t中(规定第一个字符放在第0 位中)。例如:字符串中的数据为ADFESHDI,则输出应当是AFESDIO 请改正程序中的错误,使它能得到正确结果。注意;不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:#include #include #include #define N 80/i*1 7,7 k7,/不不不不不不不不不不不不tciind不不不不不不不不不不不不不/void fun(char s, char t)int i,
32、j=0 ;for(i=0 ; i strlen(s) ; i+)/*+*if(i%2=0 | si%2!=0)tj+=si;tU=O;main()(charsN, tN;clrscr();printf(nnPlease enter string s :n);gets(s);fun(s, t);printf(nThe result is : %sn, t);40.给定程序中函数fun的功能是:将一个由八进制数字字符组成的字 符串转换为与其值相等的十进制整数。规定输入的字符串最多只能包含 5位八进制数字字符。例如,若输入:77777,则输出将是:32767。请改正程序中的错误,使它能得到正确结果。
33、注意不要改动main函数,不得增行或删行,也不得更改程序的结构。试题源程序#include #include #include int fun(char *p) int n;/1/不不不不不不不不不不十门nc不不不不可不不不不不/n =*p-o;p+;while(*p!=0)/7,7,7,7,7,7,7,7,1 7,7” 7,7,7,7,7,7,/小不不不小不不小小小tciind小不不不不小小不不小/n = n*8+*p-o;p+;return n; main() char s6; int i; int n;printf(nEnter a string(Ocatal digits):);get
34、s(s);if(strlen(s) 5) printf(nError: String too longer!nnn);exit(O);)for(i=0; si; i+)if(si 7)(printf(nError: %c not is ocatal digits!nnn, si);exit(O);)printf(nThe original string:n);puts(s);n=fun(s);printf(nn%s iS convcrcd to integer number: %dnnn, s, n); )五、程序改错题(2题)41.下列给定程序中,函数proc ()的功能是:用下面的公式求兀
35、的近似值,直到最后一项的绝对值小于指定的数(参数num)为止。71/41-1/3+1 /5-1 /7+.例如,程序运行后,输入0 0001,则程序输出3 .1414。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:7 include ainclude 力 include Vitdio. h float proc( float num) (int float nt pi:t - hpi - Of 1i / * found * * while( t - num)pi = pi +11 n=n+2: ju/* found i
36、= s%n:pi = pi 4;return pii)void minC float nl ti2isy5tem(CLSw);printfCEnter a float number: M)t scanfi42.下列给定程序中,函数proc ()的功能是:计算并输出下列级数的前N项之和SN,直到SN+1大于q为止。q的值通过形参传人。SN=2 / 1+3最大数,再求这N个最大值中的最小的那个数作为函数值返回。请填空O#include #define N 100int fun(int(*a)N) (int row, col,max,min;for(row=0;row N;row+)for(max=
37、arow0,col=l; col N;col+)if() max=arowcol;if(row=0) min=max;else if() min=max;return min;)6.以下程序中,fun函数的功能是求3行4列二维数组每行元素中的最大值,请填空。void fun(int, int, int(*)4, int*);main() int a34=12, 41, 36, 28, 19, 33, 15, 27, 3, 27, 19 J, b3, i;fun(3, 4, a, b);for(l=0; i 3; i+)printf(% 4d, bi);printf(nnn);)void fun
38、(int m, int n, int ar4, int * bar) inti,j,x;for(i=0; i m; i+) x=ari0;for(j=0; j n; j+)if(x U include Vcotiici b9 inciude V mJmx h / found double proc double q )ini nt double tucnti*九ucn 2,0 whtlc CLS ) ipnnt( * %(o proc)i六、操作题(2题)43.下列给定程序中函数firn的功能是:用递归算法计算斐波拉契数列中 第n项的值。从第1项起,斐波拉契数列为:1, 1, 2, 3, 5, 8, 13,21,.例如,若给n输入7,则该项的斐波拉契数值为13。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#includelong fun(int g)(*found*switch(g);(case 0 : return 0 ;* found*case 1 : case 2: return 1 ;retum(fun(g-1 )+fun(g-2);void main(long fib ; intn ;printf(Input n :);scanf(%d, &n); printf(n=%dn, n);fi