2021年辽宁省盘锦市全国计算机等级考试C语言程序设计真题(含答案).docx
2021年辽宁省盘锦市全国计算机等级考试C语言程序设计真题(含答案)学校:班级:姓名:考号:一、2.填空题(10题)1 .类是一个支持集成的抽象数据类型,而对象是类的【】。2 .以下程序运行时若从键盘输入:102030<回车>。输出结果是【#include<stdio.h>main()(inti=O,j=O,k=O;SCanf("d%*d%d”,&i,&j,&k);printf("%d%d%dn",i,j,k);)3 .当先后输入1、3、4、12、23时,屏幕上出现【】;再输入12时,则屏幕上出现【】。#include<stdio.h>#defineN5main()inti,j,number,top,bott,min,locajaN,flag;chare;printf(,'Pleaseinput5numbers(ai>ai-l)n);scanf(%d,j&a0);i=l;while(i<N)scanf(,%du,&ai);if(aij>=ai-l)i+;)printf(un);for(i=0;i<N;i+)printf(%d,jai);printf(un);Aag=I;while(flag)scanf(',%d",&number);Ioca=O;top=0;bott=N-l;if(number<aOJ)(number>alN-l)Ioca=-I;while(Ioca=O)&&(top<=bott)min=(bott+top)2;if(number=amin)loca=min;printf("%disthe%dthnumbern",number,loca+1);)elseif(number<aminj)bott=min-l;elsetop=min+l;if(Ioca=OIIloca=-1)printf(',%disnotinthelist.n,number);c=getchar();if(C=NIIc=H)flag=O;4 .设一棵完全二叉树共有700个结点,则在该二叉树中有【】个叶子结点。5 .以下程序的运行结果是o#include<stdio.h>longfib(intg)switch(g)case0:return0;case1:case2:return1;return(fib(g-l)+fib(g-2);)main()longk;k=fib;printf("k=%51dn",k);)6 .数据库设计分为以下6个设计阶段:需求分析阶段逻辑设计阶段、物理设计阶段、实施阶段、运行和维护阶段。7 .若a是int型变量,则下列表达式的值为o(a=2*3,a*2),a+48 .数据的结构在计算机存储空问中的存放形式称为数据的存储结构或物理结构。9 .以下程序中,函数fun的功能是计算x2-2x+6,主函数中将调用fun函数计算:y1=(x+8)2-2(x+8)+6y2=sin2(x)-2sin(x)+6请填空。doublefun(doublex)return(x*x-2*x+6);doublex,yl,y2;printf(uEnterx:n);scanf(%lf',&x);yl=fun(6);y2=fun(7);printf(,yl=%lfjy2=%ln1yl,y10 .以下程序的输出结果是【】。main()intx=0;SUb(&x,8,1);printfCt%dn,x);)sub(int*a,intn,intk)if(k<=n)sub(a,n2,2*k);*a+=k;二、单选题(10题)11 .下列程序的运行结果是()。#include<stdio.h>#defineADD(x)x+xmainintm=1,n=2,k=3;intS=ADD(m+n)*k;printf("s=%d,s);)A.sum=18B.sum=10C.sum=9D.sum=2512 .有以下程序:#include<stdio.h>int*f(int*s)sl+=6;*s=7;s+=2;returns;)main()i11ta5=1,2,3,4,5,*p=a;P=f(P);Printfr%d,%d,%d,a0,al,*p);)程序运行后的输出结果是OOA.9,8,9B.7,8,7C.7,8,3D.l,2,l13 .以下不能将s所指字符串正确复制到t所指存储空间的是()。A.while(*t=*s)t+;s+;)B.for(i=0;ti=sij;i+);C.do*t+:*s+;while(*s);D.for(i=0,j=0;ti+=sj+;);14 .链表不具有的特点是()。A.插入、删除不需要移动元素B.可随机访问任一元素C.不必事先估计存储空间D.所需空间与线性长度成正比15 .对一个算法的评价,不包括()方面的内容。A.健壮性和可读性B.并行性C.正确性D.时空复杂度16 .若有“doublea;二则正确的输入语句是()。A.scanf(,'%lf,a);B.scanf("%f',a);C.scanf("%lf,a)D.scanf(,'%le,a);17 .关于指针,以下说法正确的是0。A.可以直接向指针中写入数据B.若指针指向变量,则可以向指针所指内存单元写入数据C.指针可以指向内存中任何位置,并写入数据D.两个指针可以通过加运算求和,形成一个功能更强大的指针18 .有以下程序段:#include<stdio.h>intj;floaty;charname50;SCanf("%2d%fs”,&j,&y,name);当执行上述程序段时,从键盘上输入555667777abc后,y的值为OOA.566.0B.55566.0C.7777.0D.566777.019 .下列数据结构中,能够按照“先进后出”原则存取数据的是()。A.循环队列B.栈C.队列D.二叉树20 .若在以下定义和赋值语句,则才S数组的第i行第j歹J(假设i,j已正确说明并赋值)元素地址的合法引用为ints23=0,(*p)3;P=S;A*(*(p+i)+j)B.*(pi+j)C.(p+i)+jD.(*(p+i)j三、程序设计题(1。题)21 .请编写函数ProC(),其功能是:利用以下所示的简单迭代方法求方程cos(x)-x=0的一个实根。xn÷l=COS(xn)迭代步骤如下:(1)取Xl初始值为Q0;(2)x0=xl,把?Xl的值赋给x;(3)xl=cos(x),求出一个新的X1;(4)若xxl的绝对值小于0.000001,则执行步骤(5),否则执行步骤(2);(5)所求Xl就是方程Cos(X)-X=O的一个实根,作为函数值返回。程序将输出结果root=。.739085o注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数ProC()的花括号中填入所编写的若干语句。试题程序:tnciudc<coah>9mcludc<math,h>Winclude<*th>IkMQProC(>11o*)*O.OaO)w*lKl»co(9)Iwhit(UIm(MD-jl>>-1-6)1rmmm!vo«dtnain()11clf三PfoC()1rutf(*roo*S(n*.1)22.学生的记录由学号和成绩组成,M名学生的数据已在主函数中放人结构体数组StU中,请编写函数PrOC(),它的功能是:把指定分数范围之外的学生数据放在b所指的数组中,分数范围之外的学生人数由函数值返回。例如,输入的分数是70和79,则应当把分数低于70和高于79的学生数据输出,不包含70分和79分的学生数据。主函数中把70放在IOW中,把79放在heigh中。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数PrOC()的花括号中填人所编写的若干语句。试题程序:gMM-Iud*<BldkkK>林deluveM16typdefMruci(durumlantISTREC,miPrOe(STRECSTRKbmilimh>*odmamC>(KrRECRtM=11<iADQS.SSHGA03.M.<GA002*.S0).IeGAW.M><aGAOOI.88.<GA7.74h<GA00a*.S).GA00*.89KGAOIS.90)GA013*51UGOI2*.MHCCiAOH*.82hGAO11.73.(GAO11.S9HGAOIS.MlGAO)*.MHSTRECh(Mntinlow.heigh,tpnnt(vEnterZm<e<ernumberlow&Krtght”«cnf«,d%J"&knr&hc<b).(«het<h<low)1三hetghheh*lowlow-kt)n-pvoc(nMhlowlwh)Iprnt(<*TbcHtudcAt'»<htaoutKdHda*k>whet*h)tlor(ivO<a÷+)rtntf<e¼s¼4dnhl),出指定分题内的学生记*prmf<*n")23.下列程序定义了MM的二维数组,并在主函数中自动赋值。请编写函数PrOC(intaM),该函数的功能是:使数组左下半三角元素中的值全部置成0。例如,a数组中的值为:a三i740948824551711527614232则返网主程序后a数纨中的值应为:注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数PrOC()的花括号中填入所编写的若干语句。试题程序:5includeconio.h>三include<stdo.h>Hinclude<imc.h>养includeVstdlib.h>HdefineM5voidproc<intaM)voidmain()<intarrfMM.i.jSrandaunsigned)tie(NULL)tsystem("CLS")prinf("»Thearrayn">for(i-OjiVMji+)产生一个随机的55矩阵<for(j-0j<Mtj+÷>rr(i0=rand()%10pnntf<*%4d*rrtiJU3>)printf(*n")j)proc<arr)tprintf("THERESULTn")tfor(i=0M<M*i÷÷)(for(j-0j<Mj+÷)Printf("%4d,rrij)tprintf(n")24.使用VC+2010打开考生文件夹下PrOgl中的解