《2022年山东省滨州市全国计算机等级考试C语言程序设计预测试题(含答案).docx》由会员分享,可在线阅读,更多相关《2022年山东省滨州市全国计算机等级考试C语言程序设计预测试题(含答案).docx(44页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2022年山东省滨州市全国计算机等级考试C语言程序设计预测试题(含答案)学校:班级:姓名:考号:一、2.填空题(10题)1 .以下程序运行后的输出结果是O#include main()(char ch=abc, x34 ; int i ;for(i=0 ; i 3 ; i+) strcpy(xi, ch);for(i=0 ; i b c);printf(%dn, d);)3 .以下程序的功能是:输出100以内(不含100)能被3整除且个位数为6的所有整数,请填空。#include 78910111213141516171819202122232425void main ()FILE wf;in
2、t i, n, below9;int score 9 j = 10,20, 30,40, 50,60,70,80,90;system(MCLSM);n = fun (score, 9, below);printf ( nBelow the averagescore are:for (i=O;in;i-f-+)printf(M% d , belowi);* /wf = fopen(out.datHrHwn);for (i =0; i n; i +4-)fprintf (wf zt,%dn/below i);fclose(wf);24.编写函数fun,其功能是:实现两个字符串的连接(不要使用库函数
3、 strcat),即把p2所指的字符串连接到pl所指的字符串的后面。例如,分别输人下面两个字符串:FirstStringSecondString程序运行后的输出结果是:FirstStringSecondString注意:部分源程序在文件PROG1 . C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括 号中填入你编写的若干语句。tinclude void fun(char pl ; j char p2 )main()| char 8180j, 240 ;void NONO();printf( M Enter si and 2 : nM ) 5slt 2);.printf(
4、 Hsl = % sn . s】);printf(Ha2s%sn s2);printf( * Invoke fun( si .12) :n* );fiin(sl v a2 );printf( After invoking: nH ) ;printf( M% nwt si );NONO();Ivoid NONO()!/本函数用于打开文件,输入测试数据,调用fun的数,输出数据,关闭文件。/ int i(HLE e rf t wf ;char a! 80 t a2 40;rf = fbpen( in. dat* t* r*1 );wf s fopen(wout. dr/w);fbr( i = 0
5、; i 10;i+)lfsamf(rft1);fecanf(rf, -%*. a2);fun(sl t a2);fprintf( wf. % snM si ) ;Ifclo6e( rf) ;fck*e( wf);25.使用VC+2010打开考生文件夹下progl中的解决方案。此解决方 案的项目中包含一个源程序文件progl.c。在此程序中,请编写函数 fun(),它的功能是求出能整除x且不是偶数的整数,并将这些整数按从 小到大的顺序放在PP所指的数组中,总个数通过形参n返回。如x中的值为30,则有4个数符合要求,它们是1、3、5、15。注意:部分源程序在文件progl.c中。请勿改动主函数ma
6、in()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include |2 #include #include 4 void fun (int xr int ppL r int * n).8 j void main ()9 适 FILE wf;渡 int xr aa 1000, nr i ;嚷system(nCLSM);j 13 printf (nnPlease enter an integer number : n );14scant (M%dnz &x);&fun (x, aa, &n);16for (i=0;in;i+)遵 printf (n%d
7、“,aa i);ISprintf (n );19/ found* /8 wf = fopen(out -dat,w);灌:fun (30, aa, &n);for (i = 0 ; i n ; i+) fprintf (wf, =%d ”,aa i);24 fclose(wf);25 /* found * /K )26 .使用VC +2010打开考生文件夹下progl中的解决方案。此解决方 案的项目中包含一个源程序文件progl.c。在此程序中,规定输入的字符 串中只包含字母和*号。编写函数fun(),其功能是除了字符串前导和尾 部的*号外,将字符串中其他的*号全部删除。形参h指向字符串中第一
8、个字母,形参P指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。例如,若字符串中的内容为“*A*BC* DEF *G *”,删除后,字符串中的内容应当是“*ABCDEFG*”。注意:部分源程序给出如下。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include #include #include void fun (char * a,char *h,char *p) () main ()(char s81, * t, *f;printf (“Enter a string:rT);gets (s);t=f=
9、s;while ( * t) t+; t-;while ( * t=*) twhilef+;fun(s,f,t);printf (“The string after deleted:n); puts (s);27.函数fun的功能是:将s所指字符串中下标为偶数同时ASCII值为奇数 的字符删除,S所指串中剩余的字符形成的新串放在t所指的数组中。 例如,若s所指字符串中的内容为“ABCDEFG12345”,其中字符C的 ASCII码值为奇数,在数组中的下标为偶数,因此必须删除;而字符1的 ASCII码值为奇数,在数组中的下标为奇数,因此不应当删除,其他依 此类推。最后t所指的数组中的内容应是“B
10、DF12345”。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号 中填入你编写的若干语句。试题程序:#include #include void fun(char *s, char t D .()main() . char s100, tflOO;printf (MnPlease enter string s);.fun (s, t);printf (fnThe result is: %snf t);28.请编写一个函数,用来删除字符串中的所有*。例如,输入 abc*de*f*gh,则输出为abcdefgh。注意:部分源程序给出如下。请勿 改动ma
11、in ()函数和其他函数中的任何内容,仅在函数proc ()的花括 号中填入所编写的若干语句。试题程序:生 knclude n include tdlib. h void proHchat . Mr)void nuim( *tr)i putib( mr) proc(ir) t pnntf(4 s witsi29.下列程序定义了 MM的二维数组,并在主函数中自动赋值。请编写函数proc(intaM),该函数的功能是:使数组左下半三角元素中的值 全部置成0。例如,a数组中的值为:a-l 740948824551711527614232财返I5!主程序后a数组中的值应为:0 70 00 00 00
12、04 0 98 2 40 7 10 0 60 0 0注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:二 include Vconio. h include include include 7 define M 5void proc(int aJM) void main() ifor(i|OiiM|i + + )产生一个随机的55矩阵 for(jssOij% 10,printf(M%4dMt arrij);printf(*nM)i)proc(arr);printf(THE RESULTnw);for( i=s
13、0iiM;i+ + )(for(j0|jM:j+ +)prinlfL%4cHtprint f( *n*)i30.请编写函数proc,其功能是:将str所指字符串中除下标为偶数、同 时ASCII码值为奇数的字符外,其余的字符都删除,串中剩余字符所形 成的一个新串放在t所指的数组中。例如,若str所指字符串中的内容为 ABCDEFG12345,其中字符B的ASCH码值为偶数,所在元素的下标为 奇数,因此必须删除;而字符A的ASCII码值为奇数,所在数组中的下 标为偶数,因此不应当删除。依此类推,最后t所指的数组中的内容应是 ACEGO注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何
14、内容,仅在函数proc的花括号 中填人所写的若干语句。试题程序:#include#include#include#includevoid proc(char*str, char t)void main(char str100, t100;system(CLS);printf(HnPlease enter string str :);scanf(%S, str);proc(str, t);printf(MnThe result iS : %snu, t);四、2.程序修改题(10题)31 .下列给定的程序中,函数fun()的功能是:判断字符ch是否与str所 指字符串中的某个字符相同;若相同,则
15、什么也不做,若相同,则将其 插在申的最后。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:#include #include #include /17 7”7,7, 7“7,7,/不不不不个不不小小个不不不ci inc不小不下不不不不不不不不不不/void fun (char str,char ch)while (*str &*str !=ch) str+;/vl*vL*1kL*vl* vl*vt* /不不不不、不不不不不不不不tc不不不不不不不不不不不不、不/if(*str=ch) str0=ch;/ 7 77 7,7,
16、7, 7 7,7,7 7”1 7 7 7,77,、!,7,7 7 7 7,/不不小不不不不不不不不不不tciind不小不不不不不不不不不小不不/strl=,O,;)main()char s81,c;clrscr();printf(nnPlease enter a strzng :);gets(s);printf(nn Please enter the character to search :);c=getchar();fun(s,c);printf(nnThe result is %sn”,s);32 .下列给定程序中,函数fun()的功能是:输出M行N列整数方阵, 然后求两条对角线上的各元
17、素的平方和,返回此和数。请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include #define M 5int fun(int n, int XXM) (int i, j, sum=O ;printf(HnThe %d x %d matrix : nn, M, M);for(i=0 ; iN ; i+) for(j=0 ;j *1/不不不不不不不不不不不不不td不个个小个个个个个个个个个/printf(n%4dn, XXij);/ vl*vt* vl#vt*kT* /不不不不不不不不不不不不不ci不不
18、不不不不不不不不不不不/printf(n);)for(i=0 ;i 3, 12, 4, 24, 35, main() int i,jfor(i=0; ;i+)j=i*10+6;if( )continue :Printf(n%d,1 j);) )4.下列程序的输出结果【】。#define PR(ar)printf(ar=%d, ar)main() intj, al, 3, 5, 7, 9, 11, 13. 1, *p=a+5 ;for(j=3 ; j ; j-)switch(j) case 1 :case 2 : PR(*p+) ; break ;case 3 : PR(*(p) ; 5 .关系
19、可以有3种类型,即基本关系(又称基本表或基表)、查询表和。6 .下面程序的输出结果是()。#include main() staticchara=zhao, b=juan ; char*ptrl=a, *ptr2=b ; int k ; for(k=0 ;k 4 ; k+) if(*(ptrl+k)=*(ptr2+k) printf(%c, *(ptrl+k) ; 7 .表示“整数x的绝对值大于5”时值为“假”的C语言表达式是o11, 3, 3, 7, 56, 61, 27, 58, 49. 24),17, 28, 7, 36, 85, 15, 33, 5, 24, 9);clrscr();p
20、rintf(nnThe result of all elements on 2 diagnals iS%dn, fun(M, aa); )33. N个有序整数数列已放在一维数组中,给定下列程序中,函数fun() 的功能是:利用折半查找算法查找整数m在数组中的位置。若找到,则 返回其下标值:反之,则返回-1。折半查找的基本算法是:每次查找前先确定数组中待查的范围:low和 high(low high,查找结束。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #define N 10/ /不不不不不不不不不不不
21、不不Tei不不不不可不不不不不不不不不不不不不不不不/void fun(int a,int m) int low0,high=N-l,mid;while (low =high) mid=(low+high)/2;if(m =a mid) low=mid+l;else return(mid);return(-l); zri,aN=-3,4,7,9,13,24,67,89,100,180,k,m;printf (,数组中的数据如下:”);for(i-0;i =0) printf (m=%d, index=%dn,m, k);else printf(Not be found!n);34给定程序M0D
22、11 . C中fun函数的功能是,求出以下分数序列的刖n项之和。2 3 5 8 13 21T* 2* 3* 5* T*和值通过函数值返回main函数。例如,若n=5,则应输出:8 391667。请改正程序中的错误,使它能得出正确的结果。注意.不要改动main函数,不得增行或删行,也不得更改程序的结构!12 345 67 8910111213141516include fun (int n) int a = 2, b = 1, c, k ;double s0.0 ;for (k 1; k n; k+) s - s + 1.0 * a / b ;/八foundm * m c = a; a = b;
23、 b += c;return (s);|main () int n , 5 ;printf (nnThe value of function is: %lfnr fun (n);35 .给定程序MOD11 . C中函数fun的功能是:先将s所指字符串中的 字符按逆序存放到t所指字符串中,然后把s所指串中的字符按正序连 接到t所指串的后面。例如:当s所指的字符串为:“ABCDE”时,则t所指的字符串应为: “EDCBAABCDE”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!234567891011121314*include in
24、clude void fun (char *sr char *t) (/,foundint i;si strlen(s);for (i-0; isl; i+)ti ssl-i;for (i0; isl; i+) , s(i;15main ()t2*sl - XO1;1617181920(char s100r t100;printf(wnPlease enter string s:M); scanf (w%snr s);fun(sr t);printf(wThe result is:%snnrt);36 .下列给定程序是建立一个带头结点的单向链表,并用随机函数为各 结点赋值。函数fun()的功能
25、是:将单向链表结点(不包括头结点)数据域 为偶数的值累加起来,并作为函数值返回。其累加和通过函数值返回main。函数。例如,若n=5,则应输出8.391667。 请改正程序中的错误,使它能得到正确结果。注意不要改动main函数,不得增行或删行,也不得更改程序的结构。试题源程序#include #include typedef struct aaint data;struct aa *next;NODE;int fun(NODE *h) int sum=O;NODE *P;/vl1vl* kL*k1*/不不不不不不不不不不tciind不不不不不不不不不不/P=h;while(P- next) i
26、f(p- data%2=0) sum+二p- data;/ vi*1!/不不不不不不不不不不Tei inri不不不不不不不不不不/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 data=rand()%16;s- next=p- next;p- next=s;p=p-ncxt;p- next=NULL;return h;)outlink(NODE *h, FILE *Pf) (NODE *p;p=h-
27、next;fprintf(Pf, nnnTHE LIST:nn HEAD);while(P) (fprintf(Pf, n- %dH, p- data); p=p- next;)fprintf(pf, nnn);)outresult(int s, FILE *pf)(fprintf(Pf, nnThe sum of even numbers : %dnn, s);)main() (NODE *head; int even;head=creatlink( 12);head- data=9000;outlink(head, stdout);even=fun(head);printf(nnThe r
28、esult:n“); outresult(even, stdout); )37.下列给定程序中,函数fun()的功能是:将m(lSn10)个字符串连接 起来,组成一个新串,放入pt所指字符串中,例如:把3个串abc, CD, EF串联起来,结果是abcCDEF。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:#include #include #include / vL* kL* vt* vlkL* k* /%1 * kL* k1 vl* * v* *1* k! kL* /不不不不不不不不不不不不不tc n不不不不不不不不
29、不不不不不不/int fun(char str 109int m, char *pt) int k,q,i,j=0;for(k=0;k m;k+) q=strlen(strk);j+二 q;for(i=0;i q;i+) pti=strk9i;pt+=q;pt0 =0;)Pf)main () int m, h;chars10 10,p120;clrscr ();printf(nnPlease enter m:);scanf(n%dH,&m); gets(s0);printf (nnPlease enter %d string:In ,m);for(h=0;h m;h+) gets(sh);fu
30、n (s,m,p);printf(nnThe result is :%sn ”,p);38 .下列给定程序中,函数fun()的功能是用下面的公式求兀的近似值,直到最后一项的绝对值小于指定的数(参数num)为止。71/4-1-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;/kL* =n
31、um) pi二pi+ t;n=n+2;s=-s;/ KL* kx/不干不个个不,、不不小不不不不ci inc个个不不不不不不不个个个不不/t=s% n;)pi=pi*4;return pi;)main () float nl, n2;clrscr ();printf (Enter a float number:);scanf(n%fn, &nl);n2=fun (nl);print f (n %6.4 An n2);)39 .给定程序MOD11 . C中函数fun的功能是:统计一个无符号整数中 各位数字值为零的个数,通过形参传回主函数;并把该整数中各位上最 大的数字值作为函数值返回。例如,若输
32、入无符号整数30800,则数字 值为零的个数为3,各位上数字值最大的是8O请改正函数fun中指定部位的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!123456789101112131415161718192021include int fun(unsigned n, int *zero) int count=0,max=0,t;do(t-n%10;/ found */ if(t-0) count+;if(maxt) max-t;nn/10;while(n);/一 。口廿,育/zero-count;return max;)main () unsi
33、gned n; int zerofmax; printf (nnlnput n (unsigned) : M);scanf(w%dwr &n);max fun(nr &zero);printf (nnThe result: max=%d zero %dnwrmaxr zero);40.下列给定程序中,函数fun()的功能是:先从键盘上输入一个3行3 列的矩阵的各个元素的值,然后输出主对角线元素之积。请改正函数fun()中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include int fun()(int a33, mul ;in
34、ti, j ;mu 1=1 ;for (i = 0 ; i 3 ; i+) /* found * * * * * */ for(i=0 ; i 3 ; j+) scanf(d”, &aij);)for(i=0 ; i r*)ojob-0 41-2请修改程序中的错误,使它能得出正确的结果。注意:不要改动main ()函数,不得增行或删行,也不得更改程序的结构。试题程序:8 .一棵二叉树第六层(根结点为第一层)的结点数最多为 个。9 .设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出fun函数的首部【】。要求形参名为b。 main()double 10 22;int n ;
35、fun(s); 10 .以下程序的功能是求下列算式中A、B、C的值,请填空。ABC A B A348#include main() int a,b,c,k,t=348;for(a=0;a 10;a+)for(b=0;b =indudt ,include V.td。h9 mdudr Vath. b ,八 (oucmI (double )i“x ,0.0| 02, 0) return 0.0i ebe if(x0.0)EunU l 1 )/0? elseretimU L !)/icfoubk proc mt n)int iji double =0.0人 i(i n*C1f) f pnntf(*Xl
36、n*. proc a42.下列给定的程序中,函数proc()的功能是:用选择法对数组中的m个元素按从小到大的顺序进行排序。例如,排序前的数据为:11 32-5 2 14则排序后的数据为:-5 2 11 14 32请修改程序中的错误,使它能得到正确结果。注意:不要改动main。函数,不得增行或删行,也不得更改程序的结构。试题程序:S V.idio, b / dr fine M 20 void proc tni “fit n)tnt iptpi found focij -1 “+,iP*j lor+ I1 U pt/ found rued nuisfibnis 11 *32 iafii4-5iPE
37、Mfr” 片前的riK Jh kra).iVfniT -) pnM*Hdpnntf n) i proc(frmU prim 林”后序J), lorGQ.K , pritttf( * Md e i) t print” eti*) $六、操作题(2题)43 .请编写函数fun,函数的功能是:将大于形参m且紧靠m的k个素数存入XX所指的数组中。例如,若输入17, 5,则应输出:19, 23,29, 31, 37o12345678910111213141516 171819202122232425262728293031注意:部分源程序在文件PROGL C文件中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花插 号中填入你编写的若干语句。include Void fun(int m, int k, int xx(1)Main()(int m, n, z