2022年吉林省松原市全国计算机等级考试C语言程序设计真题(含答案).docx

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

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

1、2022年吉林省松原市全国计算机等级考试C语言程序设计真题(含答案)学校:班级:姓名:考号:一、2.填空题(10题)1 .语句int(*ptr)();”的含义是 是指向函数的指针,该函数返回一个血型数据。2 .下面程序的输出结果是【】。#include main() static char a=nlanguagen , b口士program” ;char*ptrl=a, *ptr2=b ;int k ;fbr(k=0 ; k 7 ; k+)if( * (ptrl+k)= * (ptr2+k)printf(%c, *(ptrl+k) ; )3 .以下程序运行后的输出结果是【】。#include

2、char *ss(char *s)char *p;t;p=s+l;t=*s;while(*p) *(p-1 )=*p;p+;*(p-l)=t;return s;例如,若输入“abc4EFg”,则应输出“aBc4EFg”。注意:部分源程序给出如下。请勿改动主函数main。和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:#include #include #include void fun (char *ss)()void main (void)(char tt 51;printf (nPlease enter an character string withi

3、n 50 characters:n);gets(tt);printf(nnAfter changing,the stringnfun(tt);printfCnbecomesn %s5tt);26 .编写函数proc(),它的功能是求m以内(不包括m)同时能被5与H整除的所有自然数之和的平方根S,并作为函数值返回。例如,m为100时,函数值应为s=7. 416198c注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:彳 include * include * include # include double p

4、roctint n) void main()(syMem(,l-rSw) iprintf( %fn proc( 100) )27 .函数fim的功能是:将s所指字符串中下标为偶数同时ASCH值为奇数 的字符删除,S所指串中剩余的字符形成的新串放在t所指的数组中。 例如,若s所指字符串中的内容为“ABCDEFG12345”,其中字符C的 ASCII码值为奇数,在数组中的下标为偶数,因此必须删除;而字符1的 ASCH码值为奇数,在数组中的下标为奇数,因此不应当删除,其他依 此类推。最后t所指的数组中的内容应是“BDF12345”。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容

5、,仅在函数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 (flnThe reflult is: %sn, t);28 .请编一个函数 void proc(int ttEMN, int ppN), tt 指向一个 M 行N列的二维数组,求出二维数组每行中最大元素,并依次放入pp所指 的一维数组中。二维数组中的数已在主

6、函数中给出。注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括 号中填入所编写的若干语句。试题程序:#include<stdio . h>#include<conio. h>#include<stdlib . h>#define M 3#define N 4void proc(int ttrM3rN。int ppN) void main (int strMN= 34, 56, 84, 78,23, 84, 93, 12),28, 38, 39, 93;intpN, i, j, k;system(CLS);printf

7、(The riginal data is : n);for(i=0;i+)(for(j=0; j<N; j+)printf(%6d, strij);printf( n); )proc(str, p);printf( nThe result is: n); for(k=0: k<M; k+)printf(%4d, pk);printf(n); 29 .编写函数proc,它的功能是:计算和输出下列级数的和。S=1 / (12)+ 1 / (23) +.+1 / (n (n+1)例如,当 n=20 时,函数值为 0 .952381。注意:部分源程序给出如下。请勿改动main ()函数和其

8、他函数中的 任何内容,仅在函数proc ()的花括号中填入所编写的若干语句。试 题程序:c incfodt Vadl必u incliide Vcocm0V hs inHudr double proc(ml n)void nutn )iirMcfnl ) iprmiK proc( 10) 30 .使用VC+2010打开考生文件夹下progl中的解决方案。此解决方 案的项目中包含一个源程序文件progl.c在此程序中,编写函数 intfun(),其功能是求出小于或等于lim的所有素数,将其存放在aa数 组中,并返回所求出的素数的个数。注意:部分源程序在文件prog 1 .c中。请勿改动主函数mai

9、n()和其他函数中的任何内容,仅在函数fun()的花 括号中填入你编写的若干语句。试题程序:1 #include 2 #include 3 #include 4 #define MAX 1005 int fun(int lim, int aaMAX)678 )9 void main ()10 11 FILE * wf;12 int limit, i, sum;13 int aaMAX;14 system(nCLSn);15 printf (输入一个整数:);16scanf(%d,&limit);17 sum = fun (limit, aa);18 for (i = 0 ; i sum; i

10、+ + )19 20 if (i% 10=0&1!二0)/*每行输出 10 个数*/21 printf(nn );22 printf(H% 5d n9aai);23 )24 /*/25 wf = fopen(nout.datn,nwn);26 sum = fun (15, aa);27 for (i = 0 ; i sum; i + + )28 29 if(i% 10=0&i!=0) /*每行输出 10 个数* /30 fprintf(wf,n);31 fprintf (wf, %5d, aa i);32 )33 fclose(wf);34 /*/35 )四、2.程序修改题(10题)31.给定

11、程序MOD11 . C中函数ftm的功能是:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。高位仍在高位, 低位仍在低位。例如:当s中的数为2736598时,t中的数为:2358。#include #include /1/个个个个个个个个个小个)C】nc不下不不不不不不不不不下/void fiin(long sjong t)long sl=10 ;*t=S%10 ;while(s 0) s=s/100 ;*t=S%10*sl+*t ;/1/个个个个个个个个个个个个-#-nZ|个个个个个个个个个个个个/sl=sl*100 ;) main()longs, t ;clrscr()

12、;printf (nnPlease enter s :);scanf(n%ld, &s);fun(s, &t);printfCThe result is : %ldnn,t); )32 .下列给定程序中,函数fun()的功能是求出数组中最小数和次最小数, 并把最小数和a0中的数对调,次最小数和al中的数对调。请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include #define N 20 void fun(int *a, int n) int i, m, t, k ;/1/个个不不不不不不不不不个个

13、tc】n个不不不不不,不不不个个个不/fbr(i=O ;i n ;i+) m=i , fbr(k=i ;k n ;k+) if(ak am)/1/不不不不不不不不不不不不不tci me不不不不不不不不不不不不不不/k=m ;t=ai;ai=am;am=t ;)main()(intx, bN=ll, 5, 12, 0, 3, 6, 9, 7, 10, 8,n=10, i ;clrscr();fdr(i=O ; i n ; i+) printf(n%dn, bi);printf(nnn); fun(b, n);fbr(i=O ; i n ; i+)printf(%dH, bi);printf(nH

14、);)33 .下列给定程序中,函数fun()的功能是 读入一个字符串(长度20),将该字符串中的所有字符按ASCII码降序排序后输出。例如:输入dafhc,则应输出hfdca。请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,敢不得更改程序的结构。试题程序:#include #include /1/不不不不不不不不不不不不不tci mri不不不不不不不不不不不不不不/int fiin(char t)(char c ;inti, j ;fbr(i=O ; i strlen(t)-l ; i+)fbr(j=i+l ; i strlen(t) ; j+)if(ti

15、)*=c ;)main()(char s81;clrscr();printf(nnPlease enter a characterstring :);gets(s);printf(nnnBefbre sorting : n%Sn, s);fun(s);printf(nnAfter sorting decendingly : n%S”,s);)34.下列给定程序中,函数fim()的功能是:计算S=f(-n)+f(-n+1 )+.+f(0)+f(l)+f(2)+. f(n)的值。例如,当n为5时,函数值应为10.407143。f(x)函数定义如下:J(x+iy(x-2)xX),0x=O 或x=2一

16、(x-iy(x-2)x0请改正程序中的错误,使它能得山正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:main() char *p,str 10=nabcderghn;p=ss(str);printf(n%snn9p);)4 .软件危机出现于60年代末,为了解决软件危机,人们提出了【】的 原理来设计软件,这就是软件工程诞生的基础。5 .设ijk均为血型变量,则执行完下面的for语句后,k的值为【】。for(i=0, j=10 ;i =j ; i+, j-) k=i+j;6 .若变量a,b已定义为int类型并赋值21和55,要求用printf函数以 a=2

17、1,b=55的形式输出,请写出完整的的输出语句()。7 .设有下列的程序段;char str=,Hellon;char *ptr;ptr=str;执行上面的程序段后,*(ptr+5)的值为 o8 .若x和y都是buble型变量,且x的初值为3.0, y的初值为2.0,则 表达式pow(y,fabs(x)的值为】。9 .下面程序执行后输出的结果是【】。int m=13;#include #include #include/个个个个个个个个个个个个个个Tc nl个个个个个个个个个个个个个个个/ f (double x)x=2.0)if (x=0.0return 0.0;else if (x 0.0

18、) return (x-1) / (x-2); elsereturn (x+1) / (x-2);int i; double s=0.05y;fbr (i=-n; i =n; i+) y=f(1.0*i); s+=y;/1/不不不不不不不不不不不不个不,ci in个个个个个个个个个个个个个个/return s)main() clrscr();printf (n%fnn9 fun (5);35 .下列给定的程序中,函数fun()的功能是:判断字符ch是否与str所 指字符串中的某个字符相同;若相同,则什么也不做,若相同,则将其 插在申的最后。请改正程序中的错误,使它能得出正确的结果。注意:不要改

19、动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include #include / /个个个个个个个个个个个个个Tei nj个个个个个个个个个个个个个个/void fiin (char str,char ch)while (*str &*str !=ch) str+;/k|1kI /不个不不干不干个不干不个不Tei 】ni不不不下不个不不不不个不不不/if(*str=ch) str0=ch;/1/个个不不不不不不不不不个个tc】n个不不不不不,不不不个个个不/strl-O!;)main()char s819c;clrscr();printf(nnPleas

20、e enter a strzng : n);gets(s);printf(nn Please enter the character to search : n);c=getchar();fun(s9c);printf(nnThe result is %snn9s);)36 .下列给定程序中,函数ftm()的功能是:给定n个实数,输出平均值, 并统计平均值以上(含平均值)的实数个数。例如,n=8时,输入193.199, 195.673, 195.757, 196.051, 196.092, 196.596, 196.579, 196.763,所 得平均值为195.838745,在平均值以上的实

21、数个数应为5。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:#include #include int fun(float x9 int n)/ /不不不不不不不不不不不不不不不/cimrl不不不不不不不不不不不不不不不不不不不/iht j9 c=0;float xa=0.0;for 0=O;j n;.j+)xa+=xj/n;printf(nave=%fnn9xa);for (j=O;j =xa)c+;returnc;)main()float x100= 193.199,195.673,195.757,196.051,1

22、96.092,196.596,196.579,196.763;clrscr ();printf(n%dnn9fun (x98);37 .下列给定程序中,函数fim()的功能是:输出M行N列整数方阵, 然后求两条对角线上的各元素之和,返回此和数。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构. 试题程序:#include #include #define M 5/9 / /iht fiin(int n, int xx)int ij, sum=0;printf(nnThe %d x %d matrix:nn9M5M);fdr(i=O;i

23、M;i+) for (j=O;j M;j+)/ / / 7 T #T T#7 #TTX #7 7/printf(4f,xxiJD; printf(nnn);)fbr(i=0;i n;i+)sum+=xxii+xxin-i-l;return(sum);)main ()int aaM M=1,2,3,4,5,4,321,0, 6,7,89。,9,8,765,3,4,5,6,7;clrscr();printf(nnThe sum of all elements on 2 diagnals is %dn9fun(M9 aa);)38 .下列给定程序中,函数ftm()的功能是:计算s所指字符串中含有t所

24、指字符串的数目,并作为函数值返回。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include #include #include #dcfinc N 80int fun(char *s, char *t)int n ;char *p, *r ;n=0 ;while(*s) p=s /%1/不不不不不不不不不不不不不不Tei mri不不个不不不不不下不不不不不不/4/while(*r)if*r=*p) r+ ; p+ ; else break ;/x x g xX x /个个个个个个个个个个个个个个/ci ni个个个个个

25、个个个个个个个个个个/ if(*i=O)s+ ,return n ;)main()char aN, bN ; int m ;clrscr();printf(nnPlease enter string a :n);gets(a);printf(nnPlease enter substring bl”);gets(b);m=funa9b);printf(nnThe result is :m=%dnn, m); 39.给定程序MOD . C中函数fun的功能是:统计字符串中各元音字母(即:A、E、I、0、U)的个数。注意:字母不分大、小写。例如:若输入:THIs is aboot,则输出应该是:1、

26、0、2、2、0o 请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!1234567891011121314151617181920212223242526include void fun (char *sr int num5) int k, i-5;for (k 0; k- 0) numi)+;A1:i0;break; :(i=l;break; I:(i2;break; ,O1:i3;break; ,U1:(i4;break;)main ()( char sl81; int numl5r i;printf (MnPlease enter

27、 a string: ”);gets(si);fun (si, numl);for (i-0; i 5; i+*) printf nrnuml(i); printf (nnn);40.下列给定程序中,函数fim()的功能是:先从键盘上输入一个3行3列的矩阵的各个元素的值,然后输出主对角线元素之和。请改正函数fim()中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include int fun() int a3 3,sum;int ij;/1/个个不不不不不不不不不个个tc】n个不不不不不,不不不个个个不/sum= 1;fbr (i

28、=0;i 3;i+) for G=O;j 3;j+) /Isix/不不不不不下不不不不不不不tci mC不不不不不不不不不不不不不不/scanf(n%dn9aij);)for(i=0;i # include 於 include Vcoruo. h found int proc( long slong O ( ICHR 10: 1*5%10| while(s0) ( / found * * * s =100;i printf(MThe result is: %ldn )42.下列给定程序中,函数proc ()的功能是:将m (lm C include stnn H include VzdK h、

29、 (/ found prac(char str(H101icii m.ciuir e pt ml k,q.Lj,O.lorkBOik qarim *trk)i j+qi ,oWO. IVq。4 + iourvd voki main( int m hichar trf 10j JOj pf 12OTiywicmC *CLS* ) i prtfitfi wcatik Hd. AetrOIi prifidt ”n刊“x mter Md wtrifigAn for(hAOslt EMrhjh proc str tnp) i print”*The muh in: Ktn Mpa六、操作题(2题)43.请

30、补充main ()函数,该函数的功能是:从键盘输入一个长整数,如 果这个数是负数,则取它的绝对值,并显示出来。例如,输入M23456, 结果为:123456。注意:部分源程序给出如下。请勿改动main ()函 数和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语 句。试题程序:P mclud V,tdhh9 includr Vzdict hH include Vconio.void mainC)long int numipnnth eEnicf the*canfC (1 iil( numi44.以下函数的功能是删除字符串s中的所有数字字符。请填空。void dele (char *s

31、)int n=0,i;fbr(i=09 si; i+)if()sn+=si;sn=;参考答案1 .Ptrptr解析:本题考查函数指针的概念。函数指针的定义格式是:类型 标识符(*指针变量名)()。注:“类型标识符”为函数返回值的类型。2 .gaga解析:用字符指针处理字符串,首先要使指针指向这个字符串, 即题中的ptrl=a和ptr2=b0然后就是通过指针的移动可以引用到字符串 中的每一个字符。题中的*(ptrl+k)是使指针ptrl向后移动k个位置,然 int fun(int x9int y) int m=3;return(x*y-m);main()int a=7,b=5;printf(n%

32、dnn5fun(a5b)/m); )10 .数据库系统其内部分为三级模式,即概念模式、内模式和外模式。 其中,是用户的数据视图,也就是用户所见到的数据模式。二、单选题(10题)11 .以下是if语句的基本形式:if(表达式.语句其中“表达式”()。A.必须是逻辑表达式B.必须是关系表达式C.必须是逻辑表达式或关 系表达式D.可以是任意合法的表达式12 .以下程序执行后sum的值是()。A.15B.14C.不确定D.Omain() inti, sum ;fdr(i=l ; i 6 ; i+) sum+=i ; printR%dn, sum) ; 13 .若用一个大小为6的数组来实现循环队列,且当

33、前rear和front的值 后取出指向的字符。注意:用字符数组作为字符串和用指针指向的一个 字符串之间的区别。3.bcdefghabcdefgha解析 在本题定义的ss()函数中首先定义了一个指针 P和一个字符变量t,然后让p指向参数指针s的下一个位置s+1,并让 t保存S位置的字符。然后使用一个while循环将p指向的内容赋给它前 面一个位置,即将参数s所指的字符串从第2个字符开始整体往前移动 一位。循环结束时,p指向原s串的结束标志处,所以让*(p-l)=t;即是将 原s串的第1个字符复制到s串的最后一个位置。整个函数实现的是让 一个字符串循环左移一位。故主函数中最后输出的字符串是bcde

34、fgha,。 4.软件工程学软件工程学5.1010解析:该for语句以i为0, j为10作为初始值,循环条件是i =j,每次循环后i增1、j减1,循环体是将i与j的和赋给k,这样变量 k将保存的是最后一次赋给它的值。一次循环后i为1、j为9,二次循 环后i为2、j为8,五次循环后i为5、j为5,第六次循环,将 i与j的和10赋给k后,i为6、j为4,循环结束,k值为10。6 .printf(a=%db=%daB);printf(a=%d,b=%d”,a,B);解析:printf 函数的一 般格式为:“printf(格式控制,输出表列广。7 .00解析本题涉及字符数组和指针的两个知识点在C语言中

35、, 字符型数组在存放字符串时会自动在末尾加上字符串结束标识符0所 以题中数组str有6个元素。ptr指向数组str的首地址,ptr+5是指向 str5, *(ptr+5)是引用 str5的值,即8 .88解析:fabs函数功能是求x的绝对值,计算结果为double型。pow 功能是计算X的y次方的值,计算结果同样为double型。所以本题表达 式相当于2.0的3.0次方,结果为8.000000。9.22解析:本题变量m既是外部变量(值是13),又是fun函数的局部 变量(值为3)o函数fun(x*y-m)的值为7*5-3=32,在main函数中, fun(a,b)/m中的m应取外部变量的值13

36、,因此输出2O10 .外模式外模式解析:数据库系统的三级模式分别是内模式、概念模 式和外模式。其中,物理模式给出了数据库的物理存储结构和存取方法; 概念模式是数据库系统中全局数据逻辑结构的描述;外模式是用户的数 据视图,也就是用户所见到的数据模式。11 .D解析:本题主要考查关于if语句的说明,if后面圆括号中的表达式,可 是任意合法的C语言表达式(如:逻辑表达式、关系表达式、算术表 达式、赋值表达式等),也可以是任意类型的数据(如:整型、实 型、字符型、指针型等。)12 .C解析:C语言中,如果对定义的变量没有赋初值,那么在后面使用 时,变量的值是不确定的。所以,本程序中,没有对sum赋初值

37、,它的 值不确定。在执行了 for循环语句后,sum的值也不确定的,所以,4个 选项中选项C符合题意。13 .A14 .C从for循环可知pt是指向行的首地址的指针变量,因此由指针的表示 方法可知:*(*(pt+l)+2) =ptl2=tl2o 15.B 本题考查for循环的使用。对于第1个for循环,任何一个i,内层j的 循环都要使j0到3,产4时不符合,所以退出j循环;然后i减1, J 仍然要从03, j=4时退出J循环直到i变成0,退出i循环。第一条 for语句执行6次,第一条for语句执行4次,所以内循环体执行6*4 二24 次。16.Bmain函数中的局部变量m与fun函数中的静态局

38、部变量m同名,因此 main访问的是其局部变量m,所以main中的两次函数调用,实际上 都是调用fun(l, 1)。第一次调用时,i=i+(m+1 )=2+(0+1 )=3, m=i+x+y=3+1+1=5。第二次调用时,i=i+(m+l)=3+(5+l)=9, m=i+x+y=9+1+1=11 o 所以程序输出5, 11。17.DD【知识点】宏定义与数组地址的考察【解析】数组名本身就是地址, 所以不需要在用&符号。C选项不能对所有元素赋值而是反复再给一个 数值赋值且是死循环。18.B解析:C语言的语法规定,字母e(E)之前必须有数字,且e(E)后面 的指数必须是整数,而选项B)中,e(E)后

39、面的指数是小数,所以不合法。19 .AC语言的标识符由字母、数字、下划线组成,且第1个字符必须是 字母或下划线。另外,关键字不能作为标识符。因为C语言中区分大小 写,所以B选项中的“FOR”可以作为标识符来用。A选项中含有非法字 符“&”,所以其不合法。故本题答案为A选项。20 .C21 .void fun(int *w, int p, int n) int X, j, ch;for(x=0; x=p; x+) ch=w0;for (j= 1 ; j /*通过for循环语句,将p+1n-1 (含n-1)之间的数组元素依次向前移动p +1个存储单元* /(wj-l =wj;)wn-l=ch;/*将下标为0p的数组元素逐一赋给数组wn-l*/) )本题要求把下标为0p(含p, p小于等于n-1)的数组元素平移到数组的 最后。可以根据输入的P值,通过for循环语句,将p+1n-1(含n-1)之 间的数组元素依次向前移动P+1个存储单元,即同时将下 标为0p的数组元素逐一赋给数组wn-l,也就是通过语句wn-l=ch; 来实现此操作。22 .程序设计题解析:【考点分析】本题考查:指针型变最定义;wh丑e循环语句;语句条件表达式;字符串结束标识(V。【解题思路】函数f

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

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

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

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