2023年甘肃省嘉峪关市全国计算机等级考试C语言程序设计模拟考试(含答案).pdf





《2023年甘肃省嘉峪关市全国计算机等级考试C语言程序设计模拟考试(含答案).pdf》由会员分享,可在线阅读,更多相关《2023年甘肃省嘉峪关市全国计算机等级考试C语言程序设计模拟考试(含答案).pdf(31页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、2023年甘肃省嘉峪关市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:班级:姓名:考号:一、2.填空题(10题)1.以下程序输出的最后一个值是【】。int ff(int n)static int f=l;f=f*n;return f;iimain()int i;fbr(i=l;i =5;i+)printf(%dn,ff(i)i)2.设有下列宏定义:#defineA 2#define B(A+3)则执行赋值语句“k=B*20;(k为 int型变量)后,k 的值是。3.根据以下if语句写出与其功能相同的switch语句(x 的值在0 100之间)。if语 句:if(x 60)m=1 ;e
2、lse if(x 70)m=2;else if(x 80)m=3;else ififx 90)m=4;else if(x 100)m=5;switch 语 句:switch()i m=1 ;break;case 6:m=2;break;case 7:m=3;break;case 8:m=4;break;m=5;4.以下程序的功能是:将输入的正整数按逆序输出。例 如:若输入135,则输出5 3 1,请填空。#include main()int n,s;printf(Enter a number:);scanf(%d,&n);printf(Output:);dos=n%10;printf(%d,s
3、);();while(n!=0);printf(n);5.数据字典是各类数据描述的集合,它通常包括5 个部分,即数据项、数据结构、数据流、和处理过程。6.下面程序的功能是输出数组s 中最大元素的下标,请填空。main()intk,p,s=l,-9,7.2,-10,3);for(p=0,k=p;p sk)printf(%dn,k);7.以下程序的输出结果是【】。#include void swap(int*a,int*b)int*t;t=a;a=b;b=t;)main()int i=3,j=5,*p=&i,*q=&j;swap(p,q);printf(%d%dn,*p,*q);8.以下程序中给指
4、针p 分配三个double型动态内存单元,请填空。#include main()dOuble*p;p=(double*)malloc();p0=1.5;pl=2.5;p2=3.5printf(%f%f%fi,p0,pl,p2);)9.下列程序的输出结果是【】。main()inta=l,b=2;a=a+b;b=a-b,a=a-b;printf(%d,%dn,a,b);)10.若 x 和 a 均是int型变量,则计算完x=(a=4,6*2)后的x值为二、单选题(10题)11.算法的时间复杂度取决于()A.问题的规模B彳寺处理数据的初态C.A和 B12.若二维数组a 有 m 歹!,则 在 刚 前 的
5、 元 素 个 数 为()。A.i*m+j-l B.i*m+j C.j*m+i D.i*m+j+l13.定义int*swap()指的是。A.一个返回整型值的函数swap()B.一个返回指向整型值指针的函sw叩()C.一个指向函数swap。的指针,函数返回一个整型值D.以上说法均错14.以下选项中,当 x 为大于1的奇数时,值为0 的表达式是A.x%2=l B.x/2 C.x%2!=0 D.x%2=015.(3 2)卜,述程序的输出结果是()。#i n c l u d e v o i d m a i n()(i n t a 5=1,23,4,5);i n t *p=a,*q=&p;p r i n
6、t R%d ,*(p+);p r i n t f C%dM,*q);A)22 B)11.C)34 D)1216.若变量已正确定义并赋初值,以下合法的赋值语句是()。A.k=(m=n);B.km-n C.k=int(m+n);D.k=m*n=l;17.具有n 个顶点的完全有向图的弧数为()。A.n(n-l)/2 B.n(n-l)C.n2 D.n2-118.有以下程序(函数fun只对下标为偶数的元素进行操作):#includevoid fun(int*a。int n)int i,j,k,t;for(i=0;in-l;i+=2)k=i;for(j=i;jak)k=j;tai;ai=ak;ak=t;m
7、 a i n i n t a a 10=l,2,3,4,5,6,7,a;f u n(a a,7);f o r(i=0;i 7;i+)p r i n t f(%d,a a i );p r i n t f(n );)程序运行后的输出结果是()。A.7,2,5,4,3,6,1,B.l,6,3,4,5,2,7,C.7,6,5,4,3,2,1,D.l,7,3,5,6,2,1,19.i f语句的基本形式是:i f (表达式)语句,以下关于“表达式”值的叙述中正确的是A.必须是逻辑值B.必须是整数值C.必须是正数D.可以是任意合法的数值20.下列各排序法中,最坏情况下的时间复杂度最低的是()A.希尔排序B.
8、快速排序C.堆 排 序D.冒泡排序三、程序设计题(10题)21.请编写函数p r o c,其功能是:将s t r所指字符串中除下标为偶数、同时ASCII码值为奇数的字符外,其余的字符都删除,串中剩余字符所形成的一个新串放在t 所指的数组中。例如,若 str所指字符串中的内容为ABCDEFG12345,其中字符B 的 ASCII码值为偶数,所在元素的下标为奇数,因此必须删除;而字符A 的 ASCH码值为奇数,所在数组中的下标为偶数,因此不应当删除。依此类推,最后t 所指的数组中的内容应是 ACEG注 意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填
9、人所写的若干语句。试题程序:#include#include#include#includevoid proc(char*str,char t)void main(char str100,t100;system(CLS);printf(nPlease enter string str:);scanf(%S,str);proc(str,t);printf(nThe result iS:%sn,t);2 2.请编写一个函数p ro c,它的功能是:求 出 1 m(含m)能被7 或 11整除的所有整数放在数组a 中,通过n 返回这些数的个数。例如,若传给m 的值为7 0,则程序输出:7 11 14
10、21 22 28 33 35 42 44 49 55 56 63 66 70注意:部分源程序给出如下。请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填人所编写的若干语句。试题程序:#include#include#include#define N 100void proc(int m,int*a,int*n)()void main(int arrN,n,k;system(CLS);proc(70,arr,&n);for(k=0;kn;k+)if(k+l)%20=0)/每行输出 20 个数 printf(%4d,arrk);printf(n);)elseprintf(%4
11、d,arrk);printf(n);)23.使用VC+2010打开考生文件夹下progl中的解决方案。此解决方案的项目中包含一个源程序文件progl.c。在此程序中,请编写函数fun(),该函数的功能是判断字符串是否为回文,若是,则函数返回1,在主函数中输出“YES”,否则返回0,在主函数中输出“NO”。回文字符串是指顺读和倒读都一样的字符串。例如,字 符 串 LEVEL是回文,而字符串123312就不是回文。注意:部分源程序在文件progl.c中。第 3 部分无纸化考武题庠请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的 花 括 号 中 填 入 你 编 写 的 若 干
12、语 句。试 题 程 序:l#include2#defineN803intfun(char*str)4567main()89charsn;10FILE*out;llchar*test=1234321,123421J1233211,abcdCBA);12inti;13printf(,Enterastring:);14gets(s);15printf(nn);16puts(s);17if(fun(s)18printf(,YESn,);19else20printf(NOn);21/*/22out=fopen(out.dat,w);23for(i=0;i4/i+)24if(fun(testi)25fpr
13、intf(out,YESn);26else27fprintf(out,NOn);28fclose(out);29/*/3024.请编写一个函数proc(),它的功能是:比较2个字符串的长度(不得调用C语言中求字符串长度的函数),函数返回较长的字符串。若2个字符串长度相等,则返回第1个字符串。例如,若输入jiangxi;beijing;则函数返回jiangxio注 意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:0 mclude V zdio.b char proHclur char t)void mtin 2
14、0j.b i0j p.q,prmtf(*Input I th string j)getn(a)f K t a t K 2 t h Hfingv )iprmtf*K*Mprocab)i25.规定输入的字符串中只包含字母和奉号。编写函数fu n,其功能是:删除字符串中所有的。号。编写函数时,不得使用c语言提供的字符串函数。“*A*BC*DEF*C*”例如,字符串中的内容为,删除后,字符串中的内容应当是“ABCDEFG”。注 意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数缸的花括号中填入你编写的若干语句。试题程序:#incl udevoid iun(char*a)(v
15、oid riain()char 4811;printff*Enter a string:。);gets(s);fun(a);printf(1,nie string after deleted:n);四见$)3 +26.学生的记录由学号和成绩组成,M 名学生的数据已在主函数中放人结构体数组s tu 中。请编写函数proc(),它的功能是:函数返回指定成绩的学生数据,指定的成绩在主函数中输入。若没找到指定的成绩,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回。注 意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填人所编写的若干语句。试
16、题程序:st indude*include define M 16lypedef struct(chnr num10iint siSTRECiSTREC proc(STREC a.ini b)void main()STREC stuM工 H-GA005-.76.(wGA003M.89(HGAOO2,64(GA004.75.GAOOK8S).(GA007,65.*GAOO8%96.(HGA006*.69,CGA015-.85h(-GA013.78UBGA012,62h(GAO14-.6O.(*GAOir,73HCGAO17721(GA018 xprintf(*n)i27.使用VC+2010打开考
17、生文件夹下p r o g l中的解决方案。此解决方案的项目中包含一个源程序文件p r o g l.c。在此程序中,规定输入的字符串中只包含字母和*号。请编写函数f u n(),其功能是使字符串中尾部的*号不多于n个,若多于n个,则删除多余的*号;若少于或等于n个,则不做任何操作,字符串中间和前面的*号不删除。例如,字符串中的内容为“*A*BC*DEF*G*”,若n的值为4,删除后,字符串中的内容应为“*A*BC*DEF*G*”;若n的值为7,则字符串中的内容仍为*A*BC*DEF*G*。n的值在主函数中输入。编写函数时,不得使用C语言提供的字符串函数。注意:部分源程序给出如下。请勿改动主函数m
18、 a i n。和其他函数中的任何内容,仅在函数f u n()的花括号中填入你编写的若干语句。试题程序:f t i n c l u d e v o i d f u n(c ha r *a,i n t n)m a i n ()c ha r s 81;i n t n;p r i n t f (En t e r a s t r i n g:n );g e t s (s);p r i n t f (En t e r n:);s c a n f (%d ,&n);f u n(s,n );p r i n t f (The s t r i n g a f t e r d e l e t e d:nv);p u
19、 t s (s);28.请 编 写 函 数p r o c,该函数的功能是:将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中,一维数组中数据的个数存放在形参n所指的存储单元中O例如,若二维数组中的数据为13 23 33 4314 24 34 4415 25 35 45则一维数组中的内容应该是13 23 33 43 14 24 34 44 15 25 35 45。注意:部分源程序给出如下。请勿改动m a i n函数和其他函数中的任何内容,仅在函数p r o c的花括号中填入所编写的若干语句。试题程序:#i n c l u d e v o i d p r o c(i n t(*s)103,
20、i n t*b,i n t*n,i n t r a i n,i n t n n)v o i d m a i n(i n t a r r 10 10=33,33,33,33),44,44,44,44,55,55,55,55),i,j;i n t a 100 =o),n=o;p r i n t f (Z/The m a t r i x:n);f o r(i=0;i 3;i+)(f o r(j=0;j 4;j+)p r i n t f (%3d,a r r i j ):p r i n t f(n );)p r o c (a r r,a,&n,3,4):p r i n t f(Z/The A a r
21、r a y:n);f o r(i=0;i 3 V tiidia.h H indude wuith.doubk pcoHmt m)*CLS*)ipraitlf*M(n*tprocC 10)30.使用VC+2010打开考生文件夹下p rog l中的解决方案。此解决方案的项目中包含一个源程序文件progl.c。在此程序中,学生的记录由学号和成绩组成,N 名学生的记录已放入主函数的结构体数组s 中。请编写函数fun(),其功能是把指定分数范围内的学生记录存放在b所指的数组中,分数范围内的学生人数由函数值返回。如输入的分数是60、69,则应当把分数在6 0 6 9的学生记录输出,包含6 0分和6 9分的
22、学生记录。主函数中把6 0放在l o w中,把6 9放在h i g h中。注意:部分源程序给出如下。请勿改动主函数m a i n。和其他函数中的任何内容,仅在函数f u n()的花括号中填入你编写的若干语句。试题程序:Si n c l u d e t t d e f i n e N 16t y p e d e f s t r u c t(c ha r n u m 10;i n t s;STREC;i n t f u n (STREC*a,STREC*b,i n t 1,i n t h)v o i d m a i n ()STREC s N =“GA005”,85,“GA003”,76 ,“G
23、A 0 0 2 ,69 ,“GA004”,85,“GA001”,96,“GA007”,72,“GA008”,64,“GA006”,87,“GA015”,85,“GA013”,94 ,“G A 0 1 2 ,64 ,“GA014”,91,“GA011”,90,“GA017”,64,“GA018”,64,“GA016”,72 ;STREC hN;i n t i,n,l o w,hi g h,t;p r i n t f (En t e r 2 i n t e g e r n u m b e r l o w&h i g h:);s c a n f (%d%d”,&l o w,&hi g h):i f
24、(hi g h p r i n t f (%s%4d nw,hi .n u m,hi .s);p r i n t f (“n”);)四、2.程序修改题(10题)3 1.下列给定程序中,函数fun()的功能是:实现两个整数的交换。例如给a和b分别输入60 和 6 5,输出为:a=65 b=60请改正程序中的错误,使它能得出正确的结果。注 意:不要改动m ain函数,不得增行或删行,也不得更改程序的结构。试题程序;#include#include/*fQUQ(j*/void fun(int a,b)int t;/*foup(j*/t=b;b=a;a=t;)main()int a,b;clrscr(
25、);printf(Enter a,b:);scanf(%d%d,&a,&b);fun(&a,&b);printf(a=%d b=%dn,a,b);32.给定程序中,函数fun()的功能是:使数组中的元素的值增加10倍。改正其中的错误,使它能得出正确的结果。注 意:不要改动main函数,不得增行或删行,也不得更改程序的结构.试题程序:#include#include iht m10;void fun(void)(int j;printf(ln subfunc after callingn);for(j=0;j IO;j+)/*fQ(JQ(j*/printf(”%3d”,mj*IO);)main(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2023 甘肃省 嘉峪关市 全国 计算机等级考试 语言程序设计 模拟考试 答案

限制150内