2022年广东省肇庆市全国计算机等级考试C语言程序设计真题(含答案).docx

上传人:太** 文档编号:97893001 上传时间:2024-07-08 格式:DOCX 页数:42 大小:64.17KB
返回 下载 相关 举报
2022年广东省肇庆市全国计算机等级考试C语言程序设计真题(含答案).docx_第1页
第1页 / 共42页
2022年广东省肇庆市全国计算机等级考试C语言程序设计真题(含答案).docx_第2页
第2页 / 共42页
点击查看更多>>
资源描述

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

1、2022年广东省肇庆市全国计算机等级考试C语言程序设计真题(含答案)学校:班级:姓名:考号:一、2.填空题(10题)1.理解下面的程序,填空完善程序。main() int a, b, c ;scanf(%d%d, );c= (a, b);printf(a = %d b = %d max = %dn, a, b, c);)int max(x, y); int z ;if(x y) z = x ;else z = y ;;)2.有以下程序:int fa(int x) return x*x ; int fb(int x)returnx*x*x ;)int f(int(*fl)(), int(*f2)

2、(), (int x)1.349859o注意:部分源程序在文件progl.c中。请勿改动主函数main。和其他函数中的任何内容,仅在函数fim()的花括号中填入你编写的若干语句。试题程序:1 #include 2 #include 3 #include 4 tinclude 5 double fun(double x, int n)6 1盘8 9 void main ()10 (IE FILE wf;12 :system(MCLSn);13 printf (M%f fun (0.3. 10 );141 /*/15; wf 工 fopen (Hout. dat,ffHwH);16fprintf

3、(wffun (03/0);illfclose (wf);18 /*/19 )26.使用VC +2010打开考生文件夹下progl中的解决方案。此解决方案的项目中包含一个源程序文件progl.c。在此程序中,规定输入的字符 串中只包含字母和*号。编写函数fun(),其功能是除了字符串前导和尾 部的*号外,将字符串中其他的*号全部删除。形参h指向字符串中第一 个字母,形参P指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。例如,若字符串中的内容为“*A*BC*DEF*G *”,删除后,字符串中的内容应当是“*ABCDEFG *” 注意:部分源程序给出如下。请勿改动主函数ma

4、in。和其他函数中的任何内容,仅在函数fun()的花 括号中填入你编写的若干语句。试题程序:#include #include #include void fun (char * a,char *h,char *p) () main ()(char s81, * t, *f;printf (“Enter a string :n); gets (s);t=f=s;while ( * t) t+; t-;while (*t=*) t-;while ( * 4=,*) f+;fun(s,f,t);printf (The string after deleted:n); puts (s);)27.使用

5、VC +2010打开考生文件夹夹下progl中的解决方案。此解决 方案的项目中包含一个源程序文件progLc。在此程序中,请编写函数 fun(),该函数的功能是删除一维数组中所有相同的元素,使之只剩一个。数组中的元素已按由小到大的顺序排列,函数返回删除后数组中元素的个数。例如,若一维数组中的元素是2223445666677899 10 10 10删除后,数组中的元素应该是2345 67 89 10注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun ()的花括号中填入你编写的若干语句。试题程序:#include #define N 80int fun (i

6、nt a , int n)()void main ()(int aN=2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10, i, n=20;printf (The original data:n);for (i=0;in;i+) p=nnx/n;i+)printf(n%3d, ai);n=fun(a, n);printf (CnnThe data after deleted:rT);for(i=0;in;i+) p=nnx/n;i+)printfT%3d”,ai);printf (“nn);28.某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课 程

7、的成绩已在主函数中给出,请编写函数,其功能是:求出该学生的 平均分,并放入记录的ave成员中。例如,学生的成绩是:85. 5, 76, 69. 5, 85, 91, 72, 64. 5,87. 5,则他的平均分应为78. 875o注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun部位中填入你编写的若干语句。试题程序:#include<stdio. h>#define N 8typedef struct(char num10;double sNJ;double ave; STREC;void fun(STREC*a)()void mainSTREC

8、s=GA005, 85. 5, 76, 69. 5, 85, 91, 72, 64.5,87.5;int i;fun(&s);printf(nThe%ss student data: nn, s.num);for(i=0; i<N; i+)printf(n%4. Ifkn”,s. si);printf(Mnknave=%7. 3fknn, s.aVe);printf(nnn);29.使用VC+2010打开考生文件夹下progl中的解决方案。此解决方案 的项目中包含一个源程序文件progl.co在此程序中,请编写函数fun(), 其功能是找出2xM整型二维数组中最大元素的值,并将此

9、值返回调用 函数。注意:部分源程序给出如下。请勿改动主函数main。和其他函数中的任何内容,仅在函数fun()的花 括号中填入你编写的若干语句。试题程序:#define M 4#include int fun (int a m) ()void main () (int arr2M=5, 8, 3, 45,76,-4,12,82;printf (max=%dn”, fiin(arr);30.使用VC+2010打开考生文件夹下progl中的解决方案。此解决方案 的项目中包含一个源程序文件progl.c。在此程序中,编写函数fun(), 其功能是根据以下公式计算S,并将计算结果作为函数值返回,通过形

10、参传入。5 = 1 +- + ;? + . +1+2 1+2+31+2+3 +例如,若n的值为11时,函数的值为1.833333。注意:部分源程序给出如下。请勿改动主函数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);printf(uThe result is:%f

11、n”, s); )四、2.程序修改题(10题)31 .下列给定程序中,函数fun()的功能是用下面的公式求兀的近似值, 直到最后一项的绝对值小于指定的数(参数num)为止。71/41-1/3+1/5-1/7+.例如,程序运行后,输入0.0001,则程序输出3.1414。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include float fun(float num) int s;float n,t, pi;t=l ;pi=0; n=l; s=l;/ vl* vl*vt*vt*1kL* vl* vtv

12、l* /不不不不下下不不不不不不不不tciinri不不下不不不不不不不不、下不不/while (t =num)pi=pi+ t; n=n+2;t=s% n;)pi二pi*4;return pi;)main () float nl, n2;clrscr ();printf (Enter a float number:);scanf(n%f;&nl);n2=fun (nl);print f(n %6.4 An ”,n2);32 .给定程序M0D11 . C中函数fun的功能是:计算n!。例如,给n输入5,则输出120 . 000000o请改正程序中的错误,使程序能输出正确的结果。注意:不要改动ma

13、in函数,不得增行或删行,也不得更改程序的结构!1234567891011121314151617*include double fun (int n) double result - 1.0 ; /found if n 0return l.Q ;while(n 1 & n 170)/育found*/ result * n-return result ;main ()(int n ;printf(wInput N:H); scanf(H%dwr &n);printf(wnn%d! %lfnnwrnr fun(n);33 .下列给定程序中,函数fun()的功能是:从字符串s中,删除所有小 写字母

14、c)请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构.试题程序:# include void fun(char *s)int ij;for(i=j=0; si != ,0,;i+)if(sill !=c)/kL* kL* kL*kL* /rj*/S j =S i;/ 1# /不不不不不可不不不不可不不不Tciinri不不不不不不不可不不不不不/ main () char s80;printf (MnEnter a string: );gets (s);printf(nThe original string:)puts (s);fun (

15、s);printf(nThe string after deleted: );puts (s); printf (nnn n): )34 .给定程序M0D11 C中函数fun的功能是 根据形参m的值(20mS9), 在m行m列的二维数组中存放如下所示规律的数据,由main函数输 出。例如,若输入2 I若输入4则输出:|则输出:1 2 | 123424 |2468369 124 8 12 16请改正程序函数中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!2345678910111213141516171819202122finclude incl

16、ude fdefine M 10 int a(M)M - 0;void fun(int *ar int m) (int jr k ;for (j 0 ; j m ; j+) for (k 0 ; k */ a(j(k) k * j ;) main () (int ir j/ n ;printf (M Enter n : w); scant (w%d &n);fun (a, n);for (i 0 ; i n ; i+) for (j 0 ; j n ; j+) printf (w%4dr aij);printf (wnw);)35 .下列给定程序中,函数fun()的功能是:计算s所指字符串中含

17、有t所指字符串的数目,并作为函数值返回。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include #include #define N 80int fun(char *s, char *t)return f2(x)-fl(x);)main()int i;i=f(fa,fb,2);printf(dn,i); 程序运行后,输出结果是【】。3 .在运算过程中,能够使空表与非空表的运算统一的结构是【】。4 .下列程序的运行结果是omain() int a=l,b=10;do b-=a;a+; while(b

18、 0);print f(d,%dn”,a,b);)5 .条件20 x 30或x -100”的C语言表达式是o6 .已知字符A的ACSII码值为65,以下语句的输出结果是char ch=B;printf(n%c %dnn,ch,ch);7 .以下程序运行后的输出结果是【】。#include #include main() char ch =nabcn.,x3 4: int i:for(i=0;i 3:i +) strcpy(xi ,ch): for(i =0;i *1* kJ kJ *Jk!k! kI* k! k! kJ k! k1* k! kJ *1 kL* *1k! /个个个个个个个个个个小

19、个个个Tcnnc个个个个个个个个个个个个个个个/r二p ;while(*r)if*r=二*p) r+ ; p+ ; else break ;/ vl* vl*vt*vt* *1 vt* vt* vL vl*vl* vtvl* /不不不不下下不不不不不不不不tciinri不不下不不不不不不不不、下不不/ if(*r=O) n+ ;s+ ;)return n ;)main()char aN, bN ; int m ;clrscr();printf(nnPlease enter string a :n);gets(a);printf(HnPlease enter substring b : n);g

20、ets(b);m=funa,b); printf(unThe result is :m=%dnn, m); 36.下列给定程序中,函数fun()的功能是:利用插入排序法对字符串中 的字符按从大到小的顺序进行排序。插入法的基本方法是:先对字符串 中的头两个元素进行排序,然后把第3个字符插入到前两个字符中,插 入后前3个字符依然有序;再把第4个字符插入到前3个字符中,待排 序的字符串已在主函数中赋予。请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:#include #include #define N 80void insert

21、(char *aa) (int i, j, n ; char ch ;n=strlen(aa);for(i= 1 ; i =0)|(ch aaj)(aaj+l=aaj;j /)/ /卜一1、卜一-J、aaj=ch ;) main() (char aN=nJRTYDFKLIOPQWEGHMNBVCUASXZn;int i ;printf(nThe original string : %SnM, a);insert(a);printf(HThe string after sorting : %Snnn, a); )37.下列给定程序中,函数fun()的功能是:根据形参m的值(2勺隹9), 在m行m

22、列的二维数组中存放如下所示的数据,由main()函数输出。 例如,若输入2,则输出1224输入4,贝IJ输出123424683 69 1248 12 16请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构. 试题程序:#include #include #define M 10int aiM MI=0;/vt* vl1 kL*k! k! k/不不不、可不不不、不不不不不、Tci inri不小不不不不下不不不不(、不不不不、不不/fun( int *a, int m)intj,k;for 0=0; j m;j+) for (k=0; k 1

23、1*X*/不不不不不不不不不不不不不不不tcnnd不不不不不不不不不不不不不不不不不不不/aj k=k*j;)main ()int i,j,n;clrscr ();printf (nEnter nnn); scanf (n%dn, &n);fun (a, n);for (i=0; i n; i+) for (j=O;j n;j+) printf(n%4d ai j); printf (nn n);)38 .下列给定程序中,函数fun()的作用是:将字符串tt中的小写字母都 改为对应的大写字母,其他字符不变。例如,若输入“edS, dAd,则输 出“EDS, DAD”。请改正程序中的错误,使它能

24、得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:#include #include /_/Ix/不不不不不个个不不个个不不ci ni个不不不不不个个不不不个个/ char fun(char tt) int i ;for(i=0 ; tti ; i+)/ kIx1 kL* LX* k1*1 /不不不不不不不不不不不不不tmind不不不不不不不不不不不不不/if(tti =A)&(注i !* ! 1* !* 1* !* 1* /不不不不不不不不不不不不不不不不不tci nl不不不不不不不不下不不不不不不/ci=;i+; n=n/base; while (

25、n!=0);printf(nTransmite new base:nn);for(-i;i =0;-i)/不不不不不不不不不不不不不不不tciinrl不不不不不不不不不不不不不不不不不不不/);) d=ci;printf(n%cb printf(unn);)40 .下列给定程序中,函数fun()的功能是:用递归算法计算斐波拉契级 数列中第n项的值。从第一项起,斐波、拉契级数序列为1, 1, 2, 3, 5, 8, 13. 21例如,若给n输入7,该项的斐波拉契级数值为13。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:#

26、include long fun(int g) (/7,vt* 7*17*7,/不不不不不不不不,、不不不不Tci inri不不不不不不不不可不不不不不/ switch(g);case 0:return 0; switch(g)case 1; case 2:return 1;)return (fun(g-1 )+fun(g-2);)main() long fib; int n;printf(nInput n:);scanf(d”,&n);printf(nn-%dn!n);fib=fun(n);printf(nfib=%dDn,fib);)五、程序改错题(2题)41 .下列给定程序中,函数pro

27、c的功能是计算正整数m各位上数字的 平方和。例如,输入498,则输出应该是161。请修改程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结 构。试题程序:#include#include#includelong proc(10ng m)! 1 *found* * * long sum= 1;do sum+=(m % 10)*(m % 10);m / =10;1 I * * * *und* * * * while(m)return(sum);void main long n;system(nCLSn);printf(nPlease enter a n

28、umber:);scanf(n%ldn, &n);printf(n n%ldnn, proc(n);)42.下列给定程序中,函数proc ()的功能是:求S的值。设) (62/(例如,当k为20时,函数的值应为1 .551759。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main ()函数,不得增行或删行,也不得更改程序的结构。试题程序:s mdMe Vstdiou b =mcludr s mclu4c Vadio.M include Vnuh h / found proH iot k)ml fii float w p q!whilet nin()pfinrK * * !fi *

29、 pnx1( 20 1 i六、操作题(2题)43 .以下函数的功能是删除字符串s中的所有数字字符。请填空。void dele (char *s)(int n=0,i;for(i=0, si; i+)if()sn+=si;sn=;44 .以下程序运行后的输出结果是ovoid fun(char *s,int P, int k) int i;for(i=p;i next B.r=r-next C.f=f-next D.f=r-next12 .有以下程序:#includeint f(int x):mainint n=l, m;m=f(f(f(n); printf(n%dnn, m);)int f(in

30、t x) return x*2;)判断条件b-O不成立,退出循环,但b的值被减1,因此结果为: a=2, b=8。5.(20 x)&(x 30) | | (x -100)或 20 x & x 30 | x -100(20 x)&(x 30)| (x -100)或 20 x & x 30 | x -1006.B 66B 66解析:printf函数的功能是按照指定的格式,在标准输出设 备上输出数据,它有两种参数:格式控制参数和输出项参数。本题中, printf(1%c%dn, ch,ch)表示以字符格式和十进制整数格式输出ch, B的 ACSII码值为66,即在计算机中B的十进制整数格式是660所

31、以,输 出为B66。7 .abcbccabcbcc解析:for循环用strcpy函数将字符数组ch的值abcl 分别复制给二维数组x的每一行,然后通过for循环先后打印出以x00, Xll, X开头的字符串,abebcc1所以输出结果为:abcbcc。8 .一对多一对多解析:由于一个项目主管可以管理多个项目,而一个项 目只能有一个项目主管,“项目主管”这个实体与“项目这个实体的管理 关系属于一对多。9 .上溢上溢解析:入队运算是指在循环队列的队尾加入一个新元素。这 个运算有两个基本操作:首先将队尾指针进一(即rear=rear+l),并当 rear=m+l时置rear=1 ;然后将新元素插入队

32、尾指针指向的位置。当循环 队列非空(s=l)时且队尾指针等于队头指针时,说明循环队列已满,不能 进行入队运算,这种情况称为“上溢”。10.55解析:a+的含义是在使用a值以后,使a值加1,所以a+的值为ll.C 12.D本题考查函数返回值作参数,最初n=l, f(n)=f(l)=2,将f(n)的结果代 入第二个 f(n)中,即 f(f(n)=f(2)=4,所以 f(f(f(f(n)=f(4)=8。13 .D选项A中,int是关键字,不能作为用户标识符;选项B中,两个 “#”错误;选项C中两个“#”错误,另外DEFINE大写也是错误的。故本 题答案为D选项。14 .D15 .D本题考查seanf

33、函数的调用形式:scanf (格式字符串,输入项地址表)。 题中定义变量a为双精度型变量,双精度变量的格式符为“le”;变量的 地址用取地址符加变量名表示,所以选项D正确。16 .A解析:本题考查带参数的宏定义,参数只是简单的替换而不是求出 其值后再替换形式参数。本题中用a+替换X,用b+替换Y,再求 (a+)*(b+)的值,即3*4的值,其结果为12o17 .A预处理是在程序编译之前进行的,所以A选项错误。故本题答案 为A选项。18.B19.C用int方法定义变量时,编译器仅为变量开辟存储单元,并没有在存储 单元中放任何值,此时变量中的值是无确定的,称变量值“无意义”。 因此,本题正确答案为

34、c。20.D21.【解析】此题考查的是用迭代法求多项式的值。通过观察题目中给出的 数学公式可知,后面一项是前面一项乘以n/(2*n+l),发现这个规律后, 问题迎刃而解。通过定义double类型变量,并且赋初值,用来存放多项 式的总和。此题中需要注意的是,表示每一项的si和表示多项式之和 的s,两者的初值都是1 . 0。22.【考点分析】本题考查:if语句,用来判断能被7整除或者能被11整除,但是又不 能同时被7和11整除的数,在这里充分理解逻辑与“和逻辑或”的区 别;for循环语句的循环变量用来控制取值范围。【解题思路】该题需要运用循环判断结构来实现,其中循环语句比较容易,只要确 定循环变量

35、的范围即可,下面来看判断语句,题目要求找出能被7或 11整除,但不能同时被7和11整除的所有整数。能同时被7和11整除的整数一定能被77整除,且不能被77整除的数不一定就是能被7或11整除的数,所以可得出程序中的if 语句。注意:(i%7=0|i%n=0)两边必须要有小括号。23.void fun(int an,int n)(int i, j;for(i=0; ifor(j=0; j= i; j+)/*矩形的下三角时,积相乘*/aij =ai|j*n;)首先从数组中找出要乘以n的元素。这其实就是找出将被挑出的元素在 原数组中的分布规律的过程。通过观察得出,要被处理的元素下标的范 围是从每行中第

36、1个元素开始,直到列数等于该行行数为止。即数组下 三角元素的列下标小于等于(二)行下标。找到这个规律后,依次从 数组中取得符合要求的元素,然后乘以n。24.ntdouble proc(int n)nnint i;ndouble s=0. 0;/ /s为其和的变量nfor(i= 1 ; i=n; i+十)nS=s+(l. 0/(2*i-l)-l. O/(2*i);/ / 计算 sn=(l-l / z)+(l / 3-1 / 4)+.+(l /(2n-l)-l /n2n)nreturn s;/ /最后把所得到的和返回到主函数中nn【解析】由题目中所给表达式可知,多项式的值为n项表达式的和。可以利用

37、n次循环求出n项表达式的值,求和放在变量s中。最 后将多项式的值返回到主函数当中。n25.1 doublefun(doublex,intn)23inti;4doubles=l .O,sl=l .0;5for(i=l/i=n;i+)6si=si*i;/* 各项中的阶乘*/?s=s+pow(x,i)/si;/* 按公式求出*/Retums;10 程序定义了变量S1和s, si表示每项的分母(即各项的阶乘),S存放累 加和。循环语句控制累加的次数,在循环体中进行阶乘和累加操作, 将累加的结果存入S中。此处使用了求乘方函数pow(X, i),其含义是 求X的i次方的值。26.void fun (char * a, char *h,char *p)(int i = 0;char *q = a;/*将前导*号保存到a中*/while (qh) p=nnx/h)(ai=*q; q+; i+;)/*继续遍历数组*/while (q if(*q!(/*如果不是*则保存到a中*/ai=*q; i+;)q+;/*将末尾*号保存到a中*/while ( *q)(ai=*q;

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

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

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

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