2021年内蒙古自治区通辽市全国计算机等级考试C语言程序设计测试卷(含答案).docx
2021年内蒙古自治区通辽市全国计算机等级考试C语言程序设计测试卷(含答案)学校:班级:姓名:考号:一、2.填空题(10题)1 .下列程序的运行结果是O#include<stdio.h>longfunc(intx)longp;if(x=0Ilx=1)return(l);p=x*func(x-l);return(p);)main()printf("%dn,func(4);2 .以下程序的输出结果是【#include<stdio.h>voidswap(int*a,int*b)int*t;t=a;a=b;b=t;)main()inti=3,j=5,*p=&i,*q=&j;swap(p,q);printf("%d%dN,*p,*q)3 .有以下程序intf(intn)if(n=l)return1;elsereturnf(n-l)+l;main()inti,j=0;for(i=l;i<3;i+)j+=f(i);printf(,'%dn',j);)程序运行后的输出结果是O4 .有以下程序,其功能是:以二进制“写”方式打开文件dl.dat,写入1100这100个整数后关闭文件。再以二进制“读”方式打开文件dl.dat,将这100个整数读入到另一个数组b中,并打印输出。请填空。#include<stdio.h>main()FILE*fp;inti,a100,b100;fp=fopen("dl.dat",nwb");for(i=0;i<100;i+)ai=i+l;fwrite(a,sizeof(int),1OO,fp);fclose(fp);fp=fopen(dl.dat,);fread(b,sizeof(int),100,fp);fclose(fp);for(i=0;i<100;i+)Prindr%dnbi);)5 .以下程序用于判断a、b、C能否构成三角形,若能,输出YES,否则输出NOo当给a、b、C输入三角形三条边长时,确定a、b、c能构成三角形的条件是需同时满足三个条件:a+b>c,a+c>b,b+c>a。请填空。main()floata,b,c;scanf(%f%f%,&a,&b,&C);if()printf(lYESn,);*axb、C能构成三角形*/elseprintf(NOn',)*axb、C不能构成三角形*/)6 .函数fun的功能是计算xnodoublefun(doublex,intn)inti;doubley=l;fbr(i=l;i<=n;i+)y=y*x;returny;)主函数中已正确定义m、a、b变量并赋值,并调用fun函数计算m=a4+b4-(a÷b)3o实现这一计算的函数调用语句为【】。7 .以下程序的功能是计算:s=l+12+123+1234+123450请填空。#include<stdio.h>main()intt=O.s=0,i:fbr(i=l;i<=5;i+)t=i+;s=s+t;prinff(,s=%dn,r.s);8 .下列程序的功能是将2个数从小到大输出。main()floata,b.;scanf(,&a,&b);if(a>b)t=a;b=t;)printf(,'%5.2f,%5.2n",a,b);)9 .函数Pi的功能是根据以下公式近似求得的:pi*pi6=l+l(2*2)+l(3*3)+.+l(n*n)请在下面的函数中填空,完成求Pi的功能。#include<math.h>doublepi(longn)doubles=0.0,longi;for(i=l;i<=n;i+)s=s+oretum(sqrt(6*s);)10.mystrlen函数的功能是计算Str所指字符串的长度,并作为函数值返回。请填空。intmystden(char*str)i11ti;fo,(i=0;!=,0,;i+);return(i);二、单选题(10题)11 .需求分析的主要任务是()。A.确定软件系统的功能B.确定软件开发方法C.确定软件开发工具D.确定软件开发入员12 .以下关于C语言的叙述中正确的是()。A.C语言中的注释不可以夹在变量名或关键字的中间B.C语言中的变量可以在使用之前的任何位置进行定义C.在C语言算术表达式的书写中,运算符两侧的运算数类型必须一致D.C语言的数值常量中夹带空格不影响常量值的正确表示13 .以下叙述中正确的是()。A.循环队列是队列的一种链式存储结构B.循环队列是队列的一种顺序存储结构C.循环队列中的队尾指针一定大于队头指针D.循环队列中的队尾指针一定小于队头指针14.在n个结点的顺序表中,算法的时间复杂度是O(I)的操作是()。A.访问第i个结点(l<=i<=n)和求第i个结点的直接前驱(2<=i<=n)B.在第i个结点之后插入一个新结点(l<=iv=n)C.删除第i个结点(l<=i<=n)D.将n个结点从小到大排序15 .关于排序算法的以下说法,错误的是()A.归并排序的平均时间复杂度O(Mogn),最坏时间复杂度O(M2)B.堆排序平均时间复杂度O(Mogn),最坏时间复杂度O(nlogn)C.冒泡排序平均时间复杂度0(22),最坏时间复杂度0(n2)D.快速排序的平均时间复杂度O(Mogn),最坏时间复杂度0(n2)16 .(34)已知Chal*s,下面正确的语句是(A)S=oABCDEFm;B)*s="ABCDEFm;C)*s="ABCDEF'D)s=,A,;17 .对序线性表23,29,34,55,60,70,78用二分法查找值为60的元素时,需要比较次数为()A.lB.2C.3D.418 .有以下程序:#include<stdio.h>typedefstructintnum;charname10;intscore;PER;voidfun(PERx)i11tt;if(xO.score>x1.score)t=xO.score;x0.score=xl.score;xl.score=t;)main()PERs2=1001,zhang,621,1002,“Wang”,585;inti;fun(s);for(i=0;i<2;i+)printf(t%d,%s,%d,si.num,si.name,si.score);程序的运行结果是OOA. 1001,zhang,585,1002,wang,621,B. 1001,zhang,621,1002,wang,585,C.l002,wang,585,1001,zhang,621,D.l002,wang,621,1001,zhang,585,19.某二叉树结点的中序序列为A、B、C、D、E、FsGj后序序列为B、D、C、A、F、G、E,该二叉树对应的层次遍历序列为()A.E、G、FsA、CsD、BB.E、A、CsB、DxGsFC.ExA、G、C、FsB、DD.EsG、A、C、D、F、B20 .二维数组A的元素都是6个字符组成的串,行下标i的范围从0到8,列下标j的范圈从1到10,则存放A至少需要()个字节。A.90B.180C.240D.270三、程序设计题(10题)21 .请编写函数Pn)C(),其功能是:将Str所指字符串中除了下标为奇数、同时ASCn值为偶数的字符外,其余的全部删除,串中剩余字符所形成的一个新串放在t所指的数组中。例如,若StI所指字符串中的内容为edB2A4Dsdg,其中字符A的ASCH码值为奇数,因此应当删除;其中字符B的ASCn码值为偶数,但在数组中的下标为偶数,因此也应当删除;而字符2的ASCn码值为偶数,所在数组中的下标为奇数,因此不应当删除。依此类推,最后t所指的数组中的内容应是d24。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数ProC()的花括号中填入所编写的若干语句。试题程序:tncldc<3曲hh>*mcldr<cono.K>9include<Mdioh>mclude<M11n*.b>voidproc<charMr»rmrt£J)(vod11Mn()ICharMT100t100tBVAtrm(*CLS*>ipnnt(<saPieaMentermriy,«canf(eHMr>aproc(<r.hrt(<*b*11m>EUhHt>22 .编写函数proc,它的功能是:计算和输出下列级数的和。S=I/(12)+1/(23)+.+1/(n(n+l)例如,当n=20时,函数值为0.952381。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:s>ndudt*t<11Kh>tfIndUde<couh>SndudNd)Lh>CkMIblprodinfn)vodmatn()QViUreiLCLS*)1PrmML¼n*proc(0>)彳23 .编写函数fun()1其功能是:求出11000中能被7或11整除,但不能同时被7和11整除的所有整数,并将其放在a所指的数组中,通过n返回这些数的个数。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。试题程序:Sinclude<Mdhb.h)林includeVeIMo.h>,mcludc<*ldio.h>>idfun<ina«mtwoidmain()tntal00.ky*tcm<*CLS->(un<aaSn>for("*Ok<nk÷÷>(<(k÷DMIO-0)(pntf(*H”"*卜»Ipff(<>f>个flleUeprwM(<aSSd'aCk)<pnntf<n">>24 .使用vc+2010打开文件夹下PrOgl中的解决方案。此解决方案的项目中包含一个源程序文件PrOgI.c°在此程序中,请编写函数fm(),其功能是在一组得分中,去掉一个最高分和一个最低分,然后求平均值,并通过函数返回该值。函数形参a指向存放得分的数组,形参n中存放得分个数(n>2)°例如,若输入9.98.57.68.59.39.58.97.88.68.4共10个得分,则输出结果为8.687500。注意:部分源程序存放在文件prog1.c,请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。试题程序:1 1include<stdio.h>2 voidNONOO;3 doublefun(doublea,intn)IBI56 7 mainO8 doubleblrr;inti;9 Printf("输入10个分数放入b数组中:10 for(i三0;i<10;i+)Ilscanf(n%lf,bi);Bprintf(”榆入的10个分数是:;13 for(i三0;i<10