《2022年辽宁省辽阳市全国计算机等级考试C语言程序设计预测试题(含答案).docx》由会员分享,可在线阅读,更多相关《2022年辽宁省辽阳市全国计算机等级考试C语言程序设计预测试题(含答案).docx(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2022年辽宁省辽阳市全国计算机等级考试 C语言程序设计预测试题(含答案)学校:班级:姓名:考号:一、2.填空题(10题)1 .下面程序的运行结果是typedef union student(char name 10;long sno;char sex;float score 4;STU;main()(STU a5;printf(n%dnn9sizeof(A);)2 .下列程序的运行结果是.#include main() int fun();fun();)fun。 static int a4= 1,2,3,4; int i;for(i=0;i 4;i+) ai+=ai;for(i=0;i w
2、include Vcvme h void proHclwir *irvoed numHi” (8l Jipnht( * Enter pnntf( * Tbr Mrmg after drlr voad procCini ( a0 mt b m nmf mt nnJvoid fMin()int *L 1001 ,u-0 3The nuiiri:na )ifor (im0s iOi f)forj 0V4sj+ / I prmi 外 Jd .rr: i3 ) . pnntf(proc, *) priatf * % M i pruitfC *nn*i27.使用VC+2010打开考生文件夹下progl中的
3、解决方案。此解决方案 的项目中包含一个源程序文件progl.co在此程序中,请编写函数fun(), 该函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数 组中的值在主函数中赋予。例如,若二维数组中的值为 则函数值为61。注意 部分源程序在文件progl.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:l#include2#include3#include4#defineM45#defineN56intfun(intamn)78 9 )1 Ovoidmain() 11 12FILE*wf;13intaaMN= 1,3,
4、5,7,9, 2,9,9,9,4, 6, 9,9,9,8,135,7,0 ;14intij,y;15system(nCLSn);l 6printf(HTheoriginaldatai s:nn); 17for(i=0;im;i+)18 for(j=0;j# include 二 include V con io. h void fun (char pl char p2)()void main ()(char sl80 s24Oiprintf(HEnter scl and s2in* printf(7 = % sn”. si) printf(M$2 =% 八n *2),printf (*Invok
5、e fun (si. s2) .nM) ifun(sl$2) iprintf (* After invoking: nM :printf(% An*. si) s)29.函数fun的功能是:将s所指字符串中下标为偶数同时ASCII值为奇数 的字符删除,S所指串中剩余的字符形成的新串放在t所指的数组中。 例如,若s所指字符串中的内容为“ABCDEFG12345”,其中字符C的 ASCII码值为奇数,在数组中的下标为偶数,因此必须删除;而字符1的 ASCH码值为奇数,在数组中的下标为奇数,因此不应当删除,其他依 此类推。最后t所指的数组中的内容应是“BDF12345”。注意:部分源程序给出如下。请
6、勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号 中填入你编写的若干语句。试题程序:#include h#include void fun(char *s, char t D .()main().char s100, 1(100;printf (MnPlease enter string S:f,);scajnf(%s,s);fun (s, t);printf (nThe renult is: %snt, t);30三个整数a、b、c,由键盘输入,输出其中最大的数。四、2.程序修改题(10题)31 .下列给定程序中函数fun()的功能是:将长整型数中每一位上为奇数 的数依次取出
7、,构成一个新数放在冲。高位仍在高位,低位仍在低位。 例如当s中的数为87653142例t中的数为753lo请改正函数fun()中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include void fun (long s, long *t) int d ;long sl=l ;/kl#kl /不不不不不不不不不不小不不丁门nc不不不不不不不不不不不不小不/t=0;while(s 0) d=s%10 ;/1*1 *1/不不不不不不不不不不不不不tc ma不不不不不不不不不不不小不不/ if(d%2=0)*t=d*s
8、l+*t ;sl*=10 ;s/=10 ;) main() long s, t;clrscr();printf(nnPlease enter s :) ; scanf(n%ldn, &s);fun(s, &t);printf(nThe result is : %ldnn, t);32 .下列给定程序中,函数fun()的功能是计算并输出high以内的素数之和。high由主函数传给fun()函数。例如:若high的值为100,则函数的返回值为1060。请改正程序中的错误,使它能得到正确结果。注意不要改动main函数,不得增行或删行,也不得更改程序的结构。试题源程序#include #include
9、 #include int fun(int high) int sum=0, n=0J, yes; while(high =2) yes=l;for(j=2 ; j s_/1slsi ssf/ 、卜q. q.rj.rj. ,# v j X-*! rj. rT* rj.? q. q. ?. ?、rj. q.q. q. q. 力, /if(yes=O) sum+=high; n+;)high-;return sum;) main() clrscr();printf(n%dnH, fun(lOO); )33 .给定程序MODU . C中函数fun的功能是:判断一个整数是否是素数,若是返回I,否则返回
10、0。在mai()函数中,若fun返回1输出YES,若fun返回。输出NO!。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数。不得增行或删行,也不得更改程序的结构!234567891011121314151617*include int fun (int m) (int k - 2;while (k m & (m%k)k+/6found,肯/ if (m - k)return 1; else return 0;main () int n;printf(nnPlease enter n: scanf (d。,&n);if (fun (n) printf(MYESnw); el
11、se printf(NO!nn);34 .下列给定程序中,函数fun()的功能是:在字符串str中找出ASCII 码值最大的字符,将其放在第一个位置上,并将该字符前的原字符向后 顺序移动。例如,调用fun()函数之前给字符串输入ABCDeFGH,调用 后字符串中的内容为eABCDFGHo请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:#include /* *8und* */ fun(char *p) char max, *q;int i=0;max=pi;while (pi!=0)if (max pi) /* * *fo
12、und* */ p = q +i;max=pi;i+;)/*found*/ while (q p)*q=*(q-l);q-s)p0=max;)main() char str8O;printf(nEnter a string: ); gets(str);printf(nnThe original string: ); puts(str);fun(str);printf(nnThe string after moving:); puts(str); printf(nnnn);)35 .给定程序MODH . C中函数fun的功能是:首先将大写字母转换为 对应小写字母;若小写字母为a u,则将其转换为
13、其后的第5个字母; 若小写字母为vz,使其值成21。转换后的小写字母作为函数值返回。 例如,若形参是字母A,则转换为小写字母f若形参是字母W,则转换 为小写字母b。请改正函数fun中指定部位的错误,使它能得出正确的结果。1234567finclude ,include char fun(char c) (if(o-1 & c1 a1 & c-1v * &c-1z) c-c-21;return c;16171819main () char cl,c2;printf(wnEnter a letter(A-Z):;cl-getchar();if(isupper(cl)(c2-fun(cl);prin
14、tf (wnnThe letter 1 %c 1 change to f%c,nRf clrc2);202122else printf(RnEnter (A-Z)!nn); )36.给定程序M0D11 . C中函数fun的功能是:交换主函数中两个变量 的值。例如:若变量a中的值原为8, b中的值为3O程序运行后a中的 值为3, b中的值为8。请改正程序中的错误,使它能计算出正确的结 果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!3 .以下程序输出的结果是 #include #include main()charw10=nABCDn, nEFGHn, nIJKLn, nM
15、NOPnl, k ; for(k=l ; k3 ; k+)printf(sn,&wkk) ; 4 .在计算机领域中,通常用英文单词“Byte”表示【】。5 .下面程序的输出结果是【】。charb=ABCD;main() (char b30;strcpy(&bO,HGHn);strcpy(&bl;,GHH);strcpy(&b2/GHH);printf(n%snn,b); )6 .数据结构分为逻辑结构和存储结构,循环队列属于 结构。7 .下列表达式用于判断y是否为闰年。闰年的判断条件是:年号能被4 整除但不能被100整除或年号能被400整除,请填空。8 .下面程序有两个printf语句,如果第一
16、个printf语句输出的是194, 则第二个printf语句的输出结果是【】。main() int a10=l,2,3,4,5,6,7,8,9,0),*p;P=a;printf(xn”,p);1234567891011#include / found / void fun(int x,int y) (int t;/*found*/ tx;xy;yt;)main ()(int a,b;12131415a8;b3;fun(&ar &b);printf (,f%dr %dn,a,b);37.下列给定程序中,函数fun()的功能是:计算S=f(-n)+f(-n+1)+. +f(O)+f( 1 )+f(
17、2)+ f(n)的值。例如,当n为5时,函数值应为10.407143。f(x)函数定义如下:(xHy(x-2)取)1o一 (x-iy(x-2)x0x=O 或 x=2x0请改正程序中的错误,使它能得山正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include #include f (double x)if (x=0.0x=2.0)return 0.0;else if (x 0.0) return (x-1) / (x-2); elsereturn (x+1) / (x-2);double fun(int n)int i; doubl
18、e s=0.0,y;for (i-n; i /不不不不不不不不不不不不不不ci me不不不不不不不不不不不不不不/return s)main() clrscr();printf(n%Anfun (5);38,已知一个数列从第。项开始的前三项分别为0, 0, 1,以后的各项 都是其相邻的前三项之和。给定程序M0D11 . C中函数fun的功能是: 计算并输出该数列前n项的平方根之和。n的值通过形参传入。例如,当n = 10时,程序的输出结果应为:23 . 197745o请改正程序中的错误,使程序能输出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!234567891
19、0111213141516171819202122finclude tinclude /found/ fun (int n) double sum, s0r si, s2, s; int k; sum 1.0;if (n = 2) sum 0.0;sO * 0,0; si = 0.0; s2 = 1.0; for (k 4; k - n; k*+)(s = sO + si + s2;sum sqrt(s);sO , si; si - s2; s2 s;/*found*www*/return sum) main () ( int n;printf(wInput N”); scanf&n);pri
20、ntf(R%fnr fun(n);39 .下列给定程序中,函数fun()的功能是:对N名学生的学习成绩,按 从低到高的顺序找出前m(mS10)名学生来,并将这些学生数据存放在一 个动态分配的连续存储区中,此存储区的首地址作为函数值返回。 请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:#include #include #include #define N 10typedef struct SS charnum10;int s ;STU ;STU *fun(STU a, int m)STUbN, int i, j, k ;/
21、 7。1 7, 7,7,!* !* 7”!/不不不不不不不不不不不不不tc不不不不不不不不不不不不不/*t=caUoc(m, sizeof(STU);for(i=0 ;iN ;i+) bi=ai;for(k=0 ; k .! .! 7! ! /不不不不不不不不不不不不不i np(不不不不不不不不不不不不不/for(i=j=0 ;i N ;j+) if(bi.s。1*1* vt*/不不不不不不不不不不不不不fci md不不不不不不不不不不不不不/tk.s=bj . s ;bj.s=100 ;return t ;)outresult(STU a, FILE *pf)int i ;for(i=0 ;
22、 i 10)(printf(nGive the number of the students who have lower score:);scanf(d”, &m);porder=fun(a, m);print(*THE RESULT*n”);printf(4tThe low : n);for(i=0 ; i m ; i+)printf(%s %dn,porderi . num,porderi . s);free(porder);40 .下列给定程序中,函数fun()的功能是:判断一个整数m是否是素 数,若是返回1,否则返回0。在main。函数中,若fun()返回1则输出 YES,若fun(
23、)返回0则输出NO!请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构. 试题程序:#include #include int fun(int m) int k=2;while (k k! k! k!k! k!k! /个个个个个个个个个个个个个Tei个个个个个个个个个小个个个个小个个个个个个/if(m=k)return 1;else return O;main () iht n;clrscr ();printf(f,nPlease enter n:);scanf(u%dH, &n);if (fun (n) printf(nYESnn);
24、else printf (nNO! nn);五、程序改错题(2题)41 .下列给定的程序中,函数proc ()的功能是:将str所指字符串中出现 的tl所指字符串全部替换成t2所指字符串,所形成的新的字符串放在 w所指的数组中。在此处,要求tl和t2所指字符串的长度相同。例如, 当str所指字符串中所指的内容为abcdabcdef9, tl所指字符串中的内容 为be, t2所指字符串中的内容为11时,结果在w所指的数组中的内容 应为alldalldefg。请修改程序中的错误,使它能得出正确的结果。注意: 不要改动main ()函数,不得增行或删行,也不得更改程序的结构。试题程序:* mrlui
25、iris etImcW8 mduo.V iinwg. b IoumI til pforcIum wtrcp*y wliilr w fawd whiir n i e r,,”才 rle brrslitwliiie KAnf ( e H str pnoif4 epnm*aPImm mr Mfeumg t2. *tbcm4( * HM*striso(c2pror(Btrilt2eWi(*aT1be rvMrft Kb*w)iebe rwit(N Vcomo. h iftdurfeh iurtude Z procdMrm. dw 川Hl hqi4,O, found forO|k-)q= s4rlen
26、siflkT) forti=O.y|i+ ) pctwir MrlO* 10p120i*ywtrni( *CLS) printf1 afort hOtlttnih +)ptocC Mrtnp) i printfC *nThe result*.p)i六、操作题(2题)43.请补充函数fun(),该函数的功能是:把一个字符串中的字符(字母) 按从小到大排序,并把这个全部由字母组成的字符串保存在原串中,函 数返回这个字符串的长度。例如;输入“cixbr2.3,如果为bcirx,字符串 长度为5。注意:部分源程序给出如下.请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的横线 上填入所
27、编写的若干表达式或语句。#include #define N 20 int fun (char *str) (int i=0j=0,k=-0,m=0;char t;char *p=str;while(*p) (if(*p =A&*p =a&*p =z) p+;)*(str+i尸0;while(*(p+j) k=j;;while (*(p+k)printf(n%xn,p+9);9 .软件生命周期包括2今阶段。为了使各时期的任务更明确,又可分为 3个时期:软件定义期、软件开发期、软件维护期。编码和测试属于【】 期。10 .以下程序的功能是:利用指针指向三个整型变量,并通过指针运算找出三个数中的最大
28、值,输出到屏幕上。请填空。main()int x,y,z,max,*px,*py,*pz,*pmax;scanf(”d%d%cT,&x,&y,&z);px=&x; py=&y; pz=&z;pmax=&max;if(*pmax*py)*pmax =*py;if(*pmax*pz)*pmax =*pz;printf(n max=%dnn ,max);二、单选题(10题)11 .有以下程序:#include int show(char *str)while (*str)putchar(*str+l);str+;)return *str+l;)main()printfT% dn”, show(“AB
29、CD);if(*(p+k) *(str+m)(t=*(str+m);*(str+m)=*(p+k);*(p+k)=t;)k+;)j+;)return i; main()char str81;iht n;clrscr();printf(nInput the original string );gets(str);printf(* The Original string *In);puts(str);printf(* The nwe string *n);n=fun(str);puts(str);printf(*The length of new string is:%d*n”,n);44.下列给
30、定的程序中,fun()函数的功能是:将p所指字符串中每个单 词的最后一个字母改成大写(这里的“单词”是指有空格隔开的字符串)。 例如,若输入:I am a student to take the examination则应输出:I aM A studenT tO take thE examinatioN请改正程序中的错误,使它能得出正确的结果。注童:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:#include #include #include void fun(char *p)(int k=0 ;for (; *p ; p+) if(k) if(P=) k=0 ;
31、*p=toupper(*(p_l);) else k=l;) main() char chrstr64; int d;clrscr();printf(nnPlease enter an English sentence within 63 letters :);gets(chrstr);d=strlen(chrstr);chrstrd=f;chrstrd+l=O ;printf(nnBofore changing : n %sn, chrstr);fun(chrstr);printf(nnAfter changing : n%sn, chrstr); )参考答案1.8080解析:本题考查的知识
32、点是共用体数组变量所占内存的长度。数 组a是共用体变量,共用体类型变量所占的内存长度为最大成员的长度, 即单精度数组的长度,为4x4=16,因此,数组a所占的内存长度为 5x16=80,所以最后输出的s的值为80。2.24682,4,6,8解析:子函数fun()的功能是将数组a中的元素都自加一 遍,然后仍然将结果存在原数组中,其实就是将数组a的每个元素都变 为原来的2倍,然后输出。在主程序中首先通过intfun()定义了子函数 fun(),然后再调用fun()03 .D4 .字节字节5 .GGGHGGGH解析:由于在函数main中定义了数组变量b,其将屏蔽 全局变量b。对于一维数纽变量,其值为
33、一常数,等于数组首元素地址。 strcpy(&bO, GH),是将字符串GH复制到数组b中从首元数开始的空 间中,此是b中的字符串为“叫“:strcpy(&bl,(GH),是将字符串CH 复制到数组b中从第二个元素开始的空间中,此是b中的字符串为“GH”。 执行第三次strcpy函数后,b中的字符串为GGGH。6 .存储或物理或存储结构或物理结构存储或物理或存储结构或物理结构 解析:数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储 结构(也称数据的物理结构)。所谓循环队列,就是将队列存储空间的最 后一个位置绕到第一个位置,形成逻辑上的环状空间。供队列循环使用。 可知,循环队列应当是物理
34、结构。7.(y%4=0)&(y%100!=0)|(y%400=0)(y%4=0)&(y%100!=0)|(y%40 0=0)解析:考查逻辑表达。年号能被4整除(y%4=0)但不能被100整 除(y%100!=0),两者是与的关系,年号能被400整除即y%400=0,与 前两项是或的关系。8.1a61a6解析:对于指针变量的运算,就是对地址的运算。本题中由于 指针指向的是整型变量,所以,使指针变量移动9个位置也就是移动18 个字节。注意,本题是以十六进制输出的。9 .软件开发软件开发解析:软件生命周期包括8个阶段:问题定义、可 行性研究、需求分析、系统设计、详细设计、编码、测试、运行维护。 为了使各时期的任务更明确,又可以分为3个时期:软件定义期,包括 问题定义、可行性研究和需求分析3个阶段;软件开发期,包括系统设 计、详