《2021年四川省广元市全国计算机等级考试C++语言程序设计真题(含答案).docx》由会员分享,可在线阅读,更多相关《2021年四川省广元市全国计算机等级考试C++语言程序设计真题(含答案).docx(44页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、2021年四川省广元市全国计算机等级考试C+语言程序设计真题(含答案)学校:班级:姓名:考号:一、1.选择题(10题)1 .下列属于大型数据库系统的是()。A.SQL-Server B.Foxpro C.Access D.Excel2 .用链表表示线性表的优点是()。A.便于随机存取B.花费的存储空间较顺序存储少C.便于插入和删除 操作D.数据元素的物理顺序与逻辑顺序相同3 .以下程序的输出结果是 #include void main( ) char x=040 ; cout (X 1);)A.100B.80C.64 D.324 .下面对于友元函数描述正确的是()A.友元函数的实现必须在类的内
2、部定义B.友元函数是类的成员函数C.友元函数破坏了类的封装性和隐藏性D.友元函数不能访问类的私有成员5.在表达式x+y*z中,+是作为成员函数重载的运算符,*是作为非成员函数重载的运算符。下列叙述中正确的是A.operator+有两个参数,operator*有两个参数32 .为满足运算符+的可交换性,必须将其重载为【。33 .算法的计算量的大小称为计算的【】。34 .若已定义,以下fun函数的功能是:在第一个循环中给前10个数组 元素依次赋1、2、3、4、5、6、7、8、9、10 ;在第二个循环中使a数 组前10个元素中的值对称折叠,变成1、2、3、4、5、5、4、3、2、 L请填空。fun(
3、int a) (int i ;for(i=l ; i =10 ; i+) =i ;for(i=0 ; i5 ; i+) ai; )35 .下列程序的运行结果是o#include class Sample(int a;public:Sample(int aa=0) a=aa;Sample( )cout nSample=n a n;);class Derived:public Sample int b;public:Derived(int aa=O,int bb=O):Sample(aa)(b=bb; Derived( )cout nDerived=n b classCO(public:*1*1*
4、 1* kL* vl* kJ* *1*/不不不不不不不不enor不不不不不不不不/staticintn=0 :CO n+ + :co(n:):errork1# *1 *1 *y*intCO: n;voidmainCOobj ;COobj27;COCNULL:c= & obj :7,kJ k、!、! ! 7,k1k1.! kJ 7,、! k1不不不不不不个个个个不不干不个不eoutC . nendl ;coutC0:nendl;37 .使用VC+ + 6 .0打开考生文件夹下的源程序文件1 .cpp0本程序要 求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输 入多行,当输入字符“?
5、”时,默认字符输入结束,最后把结果输出到屏幕 中。注意:不要改动main函数,不能增加或删除行,也不能更改程序的结 构,错误的语句在/ / *errc)r*的下面。试题程序:#include voidmain ( inti=O ;charstr120;coutnEnterastringendwith? . nendl ;/不不不不不不不不error不不不不不不不不cin . getline(str, 120);/2*/不不不不不不不不error不不不不不不不不while(str) (/不不不小个不不小error小不不外不不小不if(stri)=a) stri=stri-a +A ;i+ + ;
6、 )coutstrendl ;return ; )38 .使用VC+ + 6 .0打开考生文件夹下的源程序文件1 .cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,输出的结果为Constructor, i=0, Destructor注意:错误的语句在/ / *error*的下面,修改该语句即可。试题程序:#include(iostream . h) classTC inti ;public :TC ;voiddisplay ;TC ;TC : TC coutnConstructornn, i=0;TC : display toutni=nin, nendl ;1* *!* *1*v
7、i* vL*不下不不个个epj*or个下个个不不TC : TCCOUInDestructornendl :voidmainTCa ;a . display ;39 .使用VC+ +6 . 0打开考生文件夹下的源程序文件1 . cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实现 的功能为从键盘输入一个字符串,并将结果保存到文件1 . txt中。注意:不要改动main函数,不能增加或删除行,也不能更改程序的结 构,错误的语句在*1* *1* *1* *1* *1*error不小不小不不的下面。试题程序:#include#include! ?、outl . puts(si);)outl
8、. close ;)voidClearFile (ofstreamoutl ;outl . open(nl . txt”);outl . close ;) intmain(chars 1024;ClearFile ;coutnpleaseinputastrin9 :nendl ;cin . getline(s, 1024);WriteFile(s);returnO ; )40 .使用VC+6. 0打开考生文件夹下的源程序文件1. cpp,该程序运行时有错误,请改正错误,使程序正常运行,并且要求最后一个catch必须抛出执行的任何异常。程序异常,输出信息为error OERROR注意:不要改动m
9、ain函数,不能增加或删除行,也不能更改程序的结构,错误的语句在/ / *eirc)r*的下面。试题程序:#includeiostream. h) intmain( try(throw(nerrorn);* prrcr* *catch(chars)(coutsendl;) try (throw(int)0);* * *catchcoutiendl;) try (throw(O);throw(nerrorn);)*5rcr*catchcoutnERRORnendl ;)returnO ; )41 .使用VC + +6 .0打开考生文件夹下的源程序文件1 .cpp,该程序运行有问题,请改正main
10、函数中的错误,使程序的输出结果为:number=lnumber=10number= 100注意:不要改动main函数,不能增加或删除行。也不能更改程序的结构,错误的语句在/ / *error*的下面。试题程序:#includeclassTC (public :TC(inti) (number=i ;voidSetNumber(intm)(number=m ;intGetNumberconst returnnumber ; )voidPrintconst coutnnumber=nnumberendl ; )private :intnumber ;voidmainkJ 7,s.t 7 1* kI
11、 7, 个个个不不不个个nor个个个个个个个个TCobjl ;objl . Print ;TCobj2(3);kL*1* vL*vL*vL* vt不不不不不不不不nor不不不不不个不objl . number=10 ;! 1* ej*or* *TC . SetNumber(lOO);objl . Print ;obj2 . Print ;42 .使用VC+6. 0打开考生文件夹下的源程序文件1. cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,输出的结果为Constructor, i=0,DestructorB .operator+有两个参数,operator *有一个参数 C.o
12、perator+有一个参数,operator*有两个参数 D.operator+有一个参数,operator*有一个参数6 .函数swap(a, n)可完成对a数组从第1个元素到第n个元素两两交 换。其中b=l ; bl = 2 ; swap(b, 2)o在运行调用函数中的语句后,b0 和1的值分别为()。A.1, 1 B.l, 2c.2, 2D.2, 17 .如下函数的作用是以双倍行距输出文件:voiddouble_space(ifstream &f, ofstream&t) chare ; while(); if(c=,n,)t .put(c) ; 画线处缺失的部分是A.f.get(c)与
13、 t.put(c)8 .f.put(c)与 t.get(c)Ctget(c)与 f.put(c)D.t.put(c)与 f.get(c)8 . C+程序由类和函数组成,模板也可分为()和()。A.类模板函数模板B.模板类模板函数C.类函数D.对象函数9 .有以下程序:#include void fun(int a, mt b, int C) a = 456, b = 567, c = 678; voidmainQ intx= 10, y = 20, z = 30 ; fun(x,y, Z); cout x ; f y ! z endl ; )输出结果是注意:错误的语句在/ / *eiror*的
14、下面,修改该语句即可。试题程序:#include(iostream. h) classTC inti;public:TC;voiddisplay;TC;*#不下不不不不en*or不可不不不不TC: TC coutnConstructornn, i=0;TC: display toutni=ni% nendl;TC: TCCOUInDestructornendl :) voidmain(TCa;a. display;)43 .使用VC+6. 0打开考生文件夹下的源程序文件1. cpp,该程序运行时有错误,请改正错误,使程序正常运行,并且要求最后一个catch必须抛出执行的任何异常。程序异常,输出
15、信息为error0ERROR注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在/ / *errc)r*的下面。试题程序:#include 7 7 7 kJ 7 7 77 7, 7 7 7 7,7 7”/不不不不不不不不error不不不不个不不个catch(coutHERRORHendl ;)returnO ;44 .使用VC+6. 0打开考生文件夹下的源程序文件1. cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实 现的功能为从键盘输入一个字符串,并将结果保存到文件1. txt中。注意:不要改动main函数,不能增加或删除行,也不能更改程序的结 构,错
16、误的语句在* error* * 白勺 卜 | H jo试题程序:#include#include*1*vl*个个个个个个个个rror个个个个个个个个usingstd;voidWriteFile(char*s) ofstreamoutl ;个个个个个个个个rror个个个个个个个个outl. open(Hl. txtn, binary|app);for(inti=0; si!=0; i + +)个个个个个个个个noi*个个个个个个个个outl. puts(si);outl. close;)voidClearFile ofstreamoutl ;outl. open(nl. txt”);outl.
17、close;) intmainchars 1024;ClearFile;coutnpleaseinputastrin9 :nendl;cin. getline(s, 1024);WriteFile(s);returnO;)45 .使用VC+6. 0打开考生文件夹下的源程序文件L cpp,该程序运行时有错。请改正程序中的错误,使程序输出的结果为1003732注意:错误的语句在/ / *error*的下面,修改该语句即可。试题程序:#include voidmainvl*不不不不不不enor不不个个不不intm=0142:intn=0X27 :intq=32;cout m endl;cout n
18、endl ;cout q endl;return ; )五、综合应用题(2题)46 .应添加“BA(intm)a=m ;(2)应添力rPAKintm, intn) :BA(n)b=m ; “。(3)应添力 IIPA2(intm, intn, intk) : PAl(n, k)C=m ;(4)应添力;“。【解析】根据第1处要求,构造函数的函数名和类名一致,显然BA构 造函数的名称为BA,在BA中通过参数m完成对成员变量a的赋值, 因此构造函数的名称为BA(intm),在函数内部对成员a赋值,故第1处 的语句应添加“BA(intm)a=m ;)”。根据第2处的要求,构造函数的形式 为“PAl(in
19、tm, intn)”,m赋值给PA1类成员b,将n作为基类BA构造函 数的参数值传入,故第2处应添加“PAl(intm, intn) :BA(n)b=m ; ”。 根据第3处的要求,函数形式为PA2(intm, intn, intk),在构造函数中 将m赋值给数据成员c,将n和k分别赋值给基类PA1构造函数的参 数 m 和 n,因此第 3 处应添力口“PA2(intm, intn, intk) PAl(n, k)C=m 根据第4处的要求,PA2类公有派生于PAI,而PA1公有派生于BA,因此在PA2类中可以调用基类的geta和getb来获得基类私有成员a和b,再输出PA2的私有成员C即满足要求
20、,因此第4处应添加 “coutvvgetavvvvgetbvvvCvendl ;。47.(1)“比招”应改为“亚11加口11行k.get(ch)”。(2)应添力burlen + + =ch ;burlen=ch ;len + + ;”。(3)应添力outfile2vvburi + + ; ”或outfle2bufi ; i+ + ; ”。(4)“TCobj ; ”应改为“TCob改,in . txt);”。【解析】本题考查了文件流的使用。根据题意,第1处要获得一个字符, 并判断是否到文件结尾,所以应使用get函数;第2处应将ch存入buf 数组,同时让len增1 ;第3处将buf中的字节输出给
21、outfile2,注意同 时让i增1,否则while循环将进入死循环;第4处TC只确一个带char* 参数的构造函数,所以创建对象时必须使用构造参数,根据题意这个参 数应该是“”in . txt“。六、3.综合应用题(2题)48.使用VC6打开考生文件夹下的工程test32_3o此工程包含一个 test32_3.cpp,其中定义了复数类complex,但该类的定义并不完整。请 按要求完成下列操作,将程序补充完整。(1)定义复数类complex的私有数据成员real和image,用来分别表示复 数的实部和虚部,它们都是double型的数据。请在注释“*1*之后添 加适当的语句。(2)添加复数类c
22、omplex的带一个参数的构造函数,分别将real和image 赋值为参数r的值和0.0,请在注释“*2*”之后添加适当的语句。(3)完成复数类complex的“+”运算符重载成员函数的定义,两个复数相 加是将复数的实部和虚部分别进行相加,请在注释“*3*”之后添加适 当的语句。(4)完成复数类 complex 的友元函数 isequal(complex *cl,complex *c2)的 定义,如果复数cl与c2相等即cl与c2的实部和虚部分别相等,则返 回1,否则返回0。请在注释“*4*”之后添加适当的语句。程序输出结果如下:36+0i=36+0i注意:除在指定位置添加语句之外,请不要改动
23、程序中的其他内容。源程序文件test32_3.cpp清单如下:#include class complex public:complex() real=image=O.O;) complex(double r)* 2 *)complex operator+(const complex &c);friend bool isequal(complex cl,complex *c2 void display(););complex complex:operator+(const complex &c)* 3 * temp .real=real+c. real;temp.image=image+c.i
24、mage;return temp; )bool isequal(complex cl,complex *c2) (/ /* 4 *return 1;elsereturn 0; )void complex: display() (cout =0) cout image i;else if (image 0) cout image nin; )void main() (complex cl,c2(36.0);cl=cl+c2;cl.displayO;if (isequal(&cl ,&c2) cout else coat n n;c2.display();cout endl; )49.使用VC6打
25、开考生文件夹下的工程testl9_3,此工程包含一个源程 序文件testl9_3.cpp,其中定义了用于表示向量的类vector,但类vector 的定义并不完整。请按要求完成下列操作,将类vector的定义补充完整。 补充类vector的构造函数,该函数有参数x和y,它们都是int型的 数据,默认值都为0。请使用参数列表的形式分别将类的数据成员a和 b分别初始化为参数x和y的值。请在注释“*1*”之后添加适当的语 句。完成类vector的成员函数input(int x,int y)的定义,将int型的参数x 和y分别赋值给数据成员a和b,请在注释“*2*”之后添加适当的语 句。(3)完成类
26、vector 的友元函数 friend double Multiply (vector &x,vector &y) 的定义,先定义double型的临时变量c,然后将参数对象x和对象y的 数据成员a与b分别相乘再相加后赋值给c,最后返回c的值,将请在 注释“*3*”之后添加适当的语句。输出结果如下: (10. 20)(2, 3)80注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。源程序文件testl9_3.cpp清单如下:#include class vector(int a;int b;public:*void input(int x, int y) ()void output (
27、) (cout V a b n)n endl;)friend double Multiply(vector &x,vector &y);)A.30, 20, 10B.10, 20, 30C.456, 567, 678 D.678, 567, 45610.下面程序的运行结果为()OclassA(static int n ;public :A()n=l ; void print() cout n ; )main()A(int num)n=num ; A : n=0 ;voidA a , b(2);a.print();b.pintQ ;二、单选题(13题)IL按照标识符的要求,开头的符号不能是()。
28、A.大写字母B.小写字母C.数字字符D.下划线 12.关于静态数据成员的描述中正确的是()。A.类的静态数据成员不是类的所有对象共享的数据B.类的静态数据成员不能被类的成员函数调用C.类的静态数据成员不能被类的构造函数调用D.类的静态数据成员必须进行初始化13.如果类A被说明成类B的友元,则()oA.类A的成员即类B的成员B.类B的成员即类A的成员C.类A的成 员函数不得访问类B的成员D.类B不一定是类A的友元double Multiply (vector &x,vector &y) (c二x.a*y.a+x.b*y.b;return c;)void main()(vector x(10,20
29、),y;double d;y.input (2,3);d=Multiply (x,y);x. output ();y. output ();cout d nn=a & & stri=a)”语句是 判断字符stri是否为小写字符,而现有的语句只是判断字符是否大于a, 但是小写字符应该是a到2,所以修改为“if(stri=a& &stri=z)38 .(1)应改为“TC :TC”。n(2)应改为voidTC : display”。n(3)应改为“TC :TC”。n【解析】在类的外部定义成员函数时,必须在成员函数前面加上类名 和作用域运算符“:”,作用域运算符用采表示某个成员属于哪个类,使 用格式为
30、“(类名)成员函数(参数函数),因此第1处应改为“TC :TC”,默认构造函数没有参数。由第2处“TC display”后的语句看,这 是在类外实现TC函数,因此也有作用域运算符使用错误问题,display 函数返回值为void,因此第2处的语句应改为“voidTC :display。由第 3处的语句叮(2:丁小可知,显然这里是在类外实现析构函数,析构函 数是一个特殊的函数,它的名称和类名相同,并在前面加“”字符,用 采与构造函数加以区别,因此第3处的语句应改为“TC :TC”。39 .(1)应改为usingnamespacestd ;n(2)应改为“outl . open, 1 . txt, ios : binary | ios : app);n(3)应改为“outl . put(si); ”。n【解析】本题第1处的“usingstd厂是在程序中引入标准命名空间std, 对于C + +中引入标准命名空间的格式,缺少namespace,所以第1处 的语句修改为usingnamespacestd ;。第2处,调用成员函数open中,