2022年安徽省宣城市全国计算机等级考试C语言程序设计真题(含答案).docx

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

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

1、2022年安徽省宣城市全国计算机等级考试C语言程序设计真题(含答案)学校:班级:姓名:考号:一、2.填空题(10题)1 .已有定义:double *p;,请写出完整的语句,利用malloc函数使p指 向一个双精度型的动态存储单元。2 .下面程序中的数组a包括10个整数元素,从a中第二个元素起,分 别将后项减前项之差存入数组b,并按每行4个元素输出数组b,请填 空。main() inta10, b10, i ; for(i=0 ;i 10 ;i+) scanf(%d, &ai); for(i=l ; i 10 ; i+) ( ) ; for(i=0 ; i 9 ; i+) printf(%d,

2、bi); if(i%4=0)printf(n);)3 .程序测试分为静态分析和动态测试。其中【】是指不执行程序,而 只是对程序文本进行检查,通过阅读和讨论,分析和发现程序中的错误。4 .若有以下定义语句,则不移动指针P,并且通过指针p引用值为98 的数组元素的表达式是】。intw10=23, 54, 10, 33, 47, 98, 72, 80, 61), *p=w ;5 .以下程序运行后的输出结果是23 .规定输入的字符串中只包含字母和+号。编写函数fun,其功能是:除了字符串前导和 尾部的母号外,将其他的*号全部删除。形参h己指向字符串中第一个字母,形参P指向字 符串中最后一个字母。在编写

3、函数时,不得使用c语言提供的字符串函数。例如.若字符串中的内容为“”A,BCDE,删除后,字符串中的内容应当是“ABCDEFG注童:部分源程序给出如下。诂勿改动主函数main和其他函数中的任何内容.仅在函数.的花括号中埴入你编到的若干语句 试埋程序:?#indudevoid fun(char *a,char hxlur p)I.,.main(). char481K%f; printf(,Enter a 被rin&VT);g(s);t=f=s;whileCt)t+:t;1一:while(*t=1*)1一;while(*f=1*1)f+;fun(m;printf(*The string after

4、 deleted:、); puts(ft);J.24 .请编写函数proc (),它的功能是:求出11000中能被5或13整除, 但不能同时被5和13整除的所有整数,并将它们放在arr所指的数组 中,通过n返回这些数。注意:部分源程序给H如下。请勿改动main 0函数和其他函数中的任何内容,仅在函数proc ()的花括号中填入# include Vconio. h include Vxidio. hU include l void proc(ini * arr.int * n) void main()(int arr( 1000J n ktsystcmC CLSM)proc(arr. 6-n)

5、;for(k-Oiknik+ + )if(k+l)%10-0)print(M %5d .jirrk_);printf(Mn M)i 一行写 10 个数 f elseprint%5d *tarrk)i ,25.使用VC +2010打开考生文件夹下progl中的解决方案。此解决方 案的项目中包含一个源程序文件progl.c。在此程序中,编写函数fun(), 其功能是实现B=A+A即将矩阵A加上A的转置,结果存放在矩阵 B中。计算结果在main()函数中输出。举例如下。输入如下的矩阵:其转置矩阵如下:123147456258789369程序输出:261061014101418注意:部分源程序给出如下

6、。请勿改动主函数main。和其他函数中的 任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include #include #include void fun (int a33, int b33) ()void main () (int a33=l,2,3,4,5,6,7,8,9,t33;int i, j;system(“CLS”); fun (a, t);for (i=0;i3;i+) (for(j=0;j 3;j +)printfC6% 7dtij);printf (rT); )26.使用VC+2010打开考生文件夹下progl中的解决方案。此解决方 案的项目中包含

7、一个源程序文件progl.c。在此程序中,编写一个函 数,其功能是从传入的num个字符串中找出最长的一个字符串,并通 过形参指针max传回该字符串的地址(用*作为结束输入的标识)。 注意:部分源程序在文件progl.c中。请勿改动主函数main()和其他函数 中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。 试题程序:1 #include 2 #include 3 #include 4 #include 5 char * fun (char ( * a) 81, int num, char * max)6(78 )9 void main ()10 11 FILE * wf;12

8、 char ss 10 81 , * ps =NULL;13 char s3 81 = n abedn, ndegn, ndiegnsn), *p=NULL;14 int i = 0 , n;15 system(nCLSn);16printf(输入若干个字符串:”);17gets(ssi);18 puts (ssi);19 while (! stremp (ss i ,* ”)=o)/*用4个星号作为结束输入的标志*/20 21 i+;22 gets (ssi);24 puts (ssi);25)26 n = i;27 ps=fun(ss,n,ps);28 printf (nnmax = %s

9、nn,ps);*1* *1 kL* 4*1 vl*kL* *1* /J 11 /-J-/30 wf = fopen (out .dat, w);31 p = fun (s,3,p);32fprintf(wf,% s,p);33 fclose (wf);A /1* *1 si* *1*/4 / I /27.请编写函数proc (),其功能是:将str所指字符串中除了下标为奇数、 同时ASCII值为偶数的字符外,其余的全部删除,串中剩余字符所形成 的一个新串放在t所指的数组中。例如,若str所指字符串中的内容为 edB2A4Dsdg,其中字符A的ASCII码值为奇数,因此应当删除;其中 字符B的A

10、SCH码值为偶数,但在数组中的下标为偶数,因此也应当 删除;而字符2的ASCH码值为偶数,所在数组中的下标为奇数,因此 不应当删除。依此类推,最后t所指的数组中的内容应是d24。注意: 部分源程序给出如下。请勿改动main ()函数和其他函数中的任何内 容,仅在函数proc ()的花括号中填入所编写的若干语句。试题程序: 。tndvde Va&h 修 include Vcomo. h 9 include b9 mclude Vanng. hraid prwchar 7r. char 1口)to id tMtn() (char ttr 100 t100 tpcintfBnPlew enter a

11、iring Stw)ipcoc(arOi print(renuli28.编写函数fun,其功能是:将s所指字符串中除了下标为奇数,同时 ASCH码值也为奇数自q字符之外。其余所有字符全部删除,串中剩余字符所形成的一个新串放在所指的数 组中。例如,若s所指字符串的内容为“ABCDEFG12345,其中字符A的ASCII 码值为奇数,但所在元素的下标为偶数,因此需要删除;而字符1的ASCII码值为奇数,所在数组 中的下标也为奇数,因此不应当删除,其他依此类推。最后t所指数组中的内容应为“135”。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括 号中填入

12、你编写的若干语句。试题程序:# nclude#i ncludev“id fun(char*s,char t D ()main()(char s(100,t(100;printfCXnPlease enter string s:rt);printf(nmie result is:%snt);I29.请编写函数proc,其功能是:将str所指字符串中除下标为偶数、 同时ASCH码值为奇数的字符外,其余的字符都删除,串中剩余字符 所形成的一个新串放在t所指的数组中。例如,若str所指字符串中的 内容为ABCDEFG12345,其中字符B的ASCH码值为偶数,所在元素 的下标为奇数,因此必须删除;而字

13、符A的ASCII码值为奇数,所在 数组中的下标为偶数,因此不应当删除。依此类推,最后t所指的数 组中的内容应是ACEG。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填人所写的若干语句。试题程序:#include<stdlib. h>#include<conio h>#include<stdio - h>#include<string. h>void proc(char*str, char t)()void main(char str100, t100;system(CLS);printf(nnP

14、lease enter string str:);scanf(%S, str);proc(str, t);printf(nThe result iS: %sn, t);30 .规定输入的字符串中只包含字母和。号。请编写函数fun,其功能是:将字符串尾部的。号全部删除,前面和中间的*号不动。例如,字符中中的内容为 A BC DEF C 2*除后,字符串中的内容应当 是广 ABCDEFC在编写函数时.不利使用C语言提供的字符串函数。注意:部分源程序在文件PR0G1.C中。.请勿改动主函数main和犬他函数中的任何内容.仅在函数fun的花括号中填入你编写的若干语句。tinclude void fun

15、( char * a ) main()I char s81nxid NONO(); printf( M Enter a string: nw ) ;get(s); e wiring after deleted: nM ) ;puU(s);NONO( ) I.void NONO()|/本函数用于打开文件,输入数据,利用函数.输出数据,关闭文件。/FILE in, oul ;ini i ; char s 81 ;in = fopen(Bin. daX-.wr*);out = fopen(Nout. dalH .*);for(i = 0 ; i 10 ; i )I(9cmt( int %sMt s)

16、;fpnntf(outvs);I,fck)9e( in); fclme(out);四、2.程序修改题(10题)31 .给定程序MOD11 . C中函数fun的功能是:从低位开始取出长整型 变量s中奇数位上的数,依次构成一个新数放在1中。高位仍在高位, 低位仍在低位。例如,当S中的数为:7654321时,t中的数为:753lo请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!include 23456789/found/ void fun (long s, long t) long sl-10;*t s % 10;while (s 0)

17、s s/100;*t - s%10 * si + *t;/found/101112131415161718si sl*100;) main (). long s, t;printf(MnPlease scanf(n%ldR/ &s);enter s:);fun (sr &t);printf (The result is: %ldnwr t);32.下列给定的程序中,函数fun()的功能是:判断字符ch是否与str所 指字符串中的某个字符相同;若相同,则什么也不做,若相同,则将其 插在申的最后。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的

18、结构。试题程序:#include #include #include /7,1/不不不不不不不不不不不不小tciind不不不个个小不不个个个不不不/void fun (char str,char ch)while (*str &*str !=ch) str+;/ vL* vL*kL*kL1 vl* vL* vL*vl*/不不不不不不不不不不不不不tciinrl不不不不不不不不不不不不不不/if(*str=ch) str0=ch;/vr# kL* vt* vt* kL* kL*1vt* kL* vt*vL* /不不不不不不不不不不不不不tciind不不不不不不不不不不不不、不/ strl=V;)

19、 main() char s81,c; clrscr();printf(unPlease enter a strzng : ); gets(s);printf(nn Please enter the character to search :c=getchar();fun(s,c);printf(unThe result is %snn,s);)33.给定程序中,函数fun()的功能是:使数组中的元素的值增加10倍。改正其中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构.试题程序:#include #include ihtm10;void fun

20、(void) intj;printf(uIn subfunc after callingll);for(j=0;j 1k1/不不不不不不不不不不不不,ci me不不不不不不不不不不不不不不不不不不不不不不/printf(n%3dn,mj*10);)main()main() int a,b,c;a = 25;b = 025;c= 0x25;printf(n%d %d %dn”,a,b,C);)6 .下程序的输出是【】。main() (char strl=nHow do you donpl=strl;strcpy(strl +strlen(strl)/2,nes she);printf(n%snu

21、,pl);7 .设函数findbig已定义为求3个数中的最大值。以下程序将利用函数指针调用findbig函数。请填空。main()(int findbig(int,int,int); (),x,yz,z,big;f二【】;scanf(%d%d%d, &X,&y,&z);big=(*f)(x,y,z);printf(ubig=%dnH ,big); 8 .阅读下面程序段,则执行后输出的结果是【】。#includc nstdio.hnmain() char fun(char, int);char a=A ; int i;printf(nIn main before callingnn);for (

22、i=0; i 10; i+) printf(H%3dmi);)fun ();printf(nnln main after callingnn);for (i=0; i 10; i+)printf(%3d,mi);getch (); )34.给定程序M0D11 . C中函数fun的功能是:判断一个整数是否是素 数,若是返回1,否则返回0。在mai()函数中,若fun返回1输出YES,若fun返回。输出NO!。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数。不得增行或删行,也不得更改程序的结构!234567891011121314151617*include int fun

23、(int m) (int k - 2;while (k m & (m%k)k+found 八/ if (m - k) return 1;else return 0;main () int n; printf(nnPlease enter n:scanf (d。,&n);if (fun (n) printf(MYESnw); else printf(NO!nn);35 .给定程序中,函数fun()的功能是:使数组中的元素的值缩小5倍。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include float

24、 m10;/1 si*/不不不不不不不不不不不不不tciind不不不不不不不不不不不不不不/int fun (void) intj;printf(nIn subfunc after callingnn);for(j=O;j 1 vl* vL* vL*vl*/不不不不不不不不不不不不不tciinrl不不不不不不不不不不不不不不/ print (H%f,mj%5);) main() ( int i;printf (nIn main before callingnn);for (i=0;i 10;i+)(mi=i+20; printf(n%f mi);) fun(); printf(nnln mai

25、n after callingnn);for(i=O; i 10;i+)printf(u%f mi/5);)36 .给定程序M0D11 . C中函数fun的功能是:计算n!o例如,给n输入5,则输出120 . 000000。请改正程序中的错误,使程序能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!1234567891011121314151617include double fun (int n) double result - 1.0 ;/foundm f/ if n 0return 1.0 ;while(n 1 n 170) /育founda*/resu

26、lt n- return result ;|main ()(int n ;printf(wInput N:w);scanf(R%dw, &n);printf(wnn%d! %lfnnwrnr fun(n);37 .给定程序MODH . C中函数fun的功能是:从n(形参)个学生的成绩 中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在 形参aver所指的存储单元中。例如,若输入8名学生的成绩:80 . 5607290 . 598 51 . 588 64则低于 平均分的学生人数为:4(平均分为:75 . 5625)o请改正程序中的错误,使它能统计出正确的结果。注意:不要改动main函

27、数,不得增行或删行,也不得更改程序的结构!123456789101112131415161718192021222324include tdefine N 20 int fun (float int n, float *aver) (float ave# t 0.0 ;int count =0, k, i ;for (k - 0 ; k n ; k+) /found*t = s k;ave t / n ;for (i = 0 ; i n ; i+) if (s i ave) count+ ;/found/ *aver = Ave ;return count ; main () float s(

28、30r aver ; int m, i ;printf (wnPlease enter m:); scanf (w%dflr &m);printf (MnPlease enter %d mark: n ,m);for(i 0 ; i m ; i+) scanf (”,s + i);printf (wnThe number of students: %d n”, fun (s, m, &aver);printf (,fAve 工aver); .38 .给定程序M0D11 . C中函数。fun的功能是:从3个红球,5个白 球,6个黑球中任意取出8个作为一组,进行输出。在每组中,可以没 有黑球,但必

29、须要有红球和白球。组合数作为函数值返回。正确的组合数应该是15。程序中i的值代表红 球数,j的值代表白球数,k的值代表黑球数。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!123456789101112include int fun()( int i,j,k,sum=0;printf (wnThe result :nnw);for (i0; i3; i+) for(j=l; j=0 & K=6) sum*sum+l;printf(red:*4d white: black:%4dnw/ i,j,k);13141516171819202122) return sum;)main

30、 ()int sum;sum-fun();printf(Msum =%4dnn, sum);39.下列给定程序中,函数fun()的功能是:先从键盘上输入一个3行3列的矩阵的各个元素的值,然后输出主对角线元素之和。请改正函数fun()中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include int fun()int a3 3,sum; int ij;sum=l;for (i=0;i 3;i+) for (j=O;j 3;j+)/ kI*_k1 /不不不不不不不不不不不不Toind不不于不不不不不不不不不小小/ scanf(d”,

31、aij);)for(i=0;i 3;i+) sum=sum+aii;printf(nS um=%dn sum); )main() ( fun();40 .给定程序中函数fun的功能是:根据整型形参m,计算如下公式的 值。例如,若m中的值为5,则应输出:1.463611。请改正程序中的错误,使它能得到正确结果。注意不要改动main函数,不得增行或删行,也不得更改程序的结构。试题源程序#include double fun(int m) (double y=1.0;int i;/ *1* *1* /不不不不不不不不不不不不不Teiml不不不不不不不不不不不不不/for(i=2; i H iorlw

32、de a inrludr V stdicx h double proc(mt 】double .Qitn O.O, ml cd O. i - n 8 loufid whilrl L 0)is0 (mf m10002mt 0.syMem aCLSe ) inPtcK enler worn。dat( end with 09e)i doc.nf (; ! h。) prifiti * S(o- prae42.下列给定的程序中,函数proc的功能是:用选择法对数组中的m个 元素按从小到大的顺序进行排序。例如,排序前的数据为:U 32-5 2 14则排序后的数据为:-5 2 11 14 32请修改程序中的

33、错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include#define M 20void proc(int a, int n)(inti, j, t, P ;/* * * *for(j=0 ; jn-l ; j+);(P=j ;for(i=j ; in ; i+)if(aiap)P=i ;t=ap;a p=aEj3 ;/* * * *f)und* * * *ap=t ;)void main(int arrM=ll, 32, -5, 2, 14, i, m=5 ;printf(排序前的数据:“);for(i=0 ;im ; i+)pr

34、intf(n%dn, arri);printf(f,nn);int b=13 ;a=fun(a, b);putchar(a) ; char fun(char a, int b) char k ;k=a+b ;return k ; 9 .算法的基本特征主要包括叫个方面,它们分别是可行性、确定性、() 和拥有足够的情报。10 .数据结构分为线性数据结构和非线性数据结构,带链的队列属于()。二、单选题(10题)11 .有以下程序段#include void fun(char*fname,char*st) FILE * myf;int i;my f=fopen(fname,n wn);for(i=0;

35、istrlen(st);i+)fputc(st i ,myf);fclosc(myf);)main() fun(utest.t,7!new world);fun(testtThelk)J);程序执行后,文件test.t中的内容是proc(arr, m);printf(排序后的顺序:”);for(i=0 ; im ; i+)printf(n%dn, arri);printf(nnH);六、操作题(2题)43.请补充main ()函数,该函数的功能是:从键盘输入一个长整数,如 果这个数是负数,则取它的绝对值,并显示出来。例如,输入:-123456, 结果为:123456o注意:部分源程序给出如下。

36、请勿改动main ()函 数和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语 句。试题程序: 3 includeli) mcludr P iAclude VetUa. h woid main()txig mt num ipnnif( eEnier the tcanfC_til_ )i print(i44.下列程序段的运行结果是int x=O,y=O;while(x 15) y+,x+=+y;printf(d,%d;y,x);参考答案l.p=(double*)malloc(sizeof(double):或 p=(double*)malloc(8); p=(double*)malloc

37、(sizeof(double):或 p=(double*)malloc(8); 解析: malloc()函数只有一个参数,该参数指定了需要分配多少字节的内存。然 后将分配好的内存块的首地址作为void*(未知类型指针)返回故标准的 调用形式应该写成:p (double*)malloc(sizeof(double); 2.bi-l=ai-ai-l3 .静态分析静态分析解析:程序测试分为静态分析和动态测试。其中, 静态分析是指不执行程序,而只是对程序文本进行检查,通过阅读和讨 论,分析和发现程序中的错误。4 .*(p+5)5.25 21 3725 21 37解析:本题中先定义了整型变量a、b和c,

38、然后分 别给赋值a为25, b为八进制的025, c为十六进制0x25。然后调用 pnmtf()函数将a、b和c分别用十进制输出,且中间用空格隔开,八进 制025转换为十进制的值为21,十六进制的0x25转换为十进制的值为 37,故最后的输出结果为25 21 37。6 .How does sheHow does she 解析:strcpy(strl, si):字符串拷贝函数, 作用是将字符串si拷贝到字符数组strl中去。strlen(str):测试字符串 str的长度,函数的值为字符串中实际长度,不包括0在内。本题中 strlen(strl)的值为 13 ,则 strcpy(strl +st

39、rlen(strl )/2,es she);相当于 strcpy(strl+6,es she);,因此可得答案为 How does sheo7 .findbigfindbig解析:本题首先定义了一个指向函数的指针变量f,如 果希望让它指向某个函数,只需把函数名赋给该指针变量即可。所以本 题的空白处应该填入函数名findbigo8 .NN解析:函数说明语句中的类型名必须与函数返回值的类型一致。 本题实现的是在字符“A”的ASCII码值上加上一个常数,使之变成另一 个ASCII码值,从而输出字符。9 .有穷性有穷性10 .线性数据结构线性数据结构解析:队列的链式存储称为链队列,它 属于线性数据结构

40、。11 .D本题主要考查文件的操作。在本题的程序中,首先定义了一个无返回 值的函数fun,该函数带有两个指针类型的形参,其中第一个形参指向 需要被操作文件的文件名,而第二个形参指向被操作的字符串。在函 数体中,首先定义一个文件指针,然后以只写的方式打开第一个形参 所指向的文件,接着执行for循环,循环结束的条件是循环变量小于被 操作字符串的长度,循环体中的程序fputc(st i ,myf);的功能是将字 符串中的当前字符输入到文件中。由这些分析我们可以知道,函数fun 的作用是将字符串的内容写入到文件中。在主函数中,两次调用函数fun,当第一次调用时,写入文件的内容为new world,然后第二次调用函数,此时打开文件,文件的指针重新回 到开始,然后往文件中写内容“hello,,由于此时文件中已经有内容 “new world”,则需要覆盖前面一部分的内容,因此,程序的最终输出 结果是hello,rid,本题

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

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

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

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