2023年安徽省合肥市全国计算机等级考试C++语言程序设计真题(含答案).docx

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

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

1、2023年安徽省合肥市全国计算机等级考试C+语言程序设计真题(含答案)学校:班级:姓名:考号:一、1.选择题(10题)1 .设变量a是int型,f是double型,i是float型,则表达式10 + + i*封直的数据类型是A.int B.float C.double D.不确定2 .有如下程序:#includeniostream.hn void main() intx = l,a = 0,b = 0;swish(X) caseO : b+; case 1 : a+; case 2 : a+;b+; cout na = a b = b; 该程序的输出结果是A.a = 2, b = 1 B.a=

2、 1, b = 1 C.a = 1, b = 0 D.a = 2, b = 23 .对于语句 cout set自 11(*) setw(10) 1 setfill (*) setw (2) 2;的输出结果是A* *2B* *2C*2D.12*4.对于类定义:class A public : virtual void funcl() void func2(); class B :public A public : voidfuncl()cout class Bfiinc V endl ; virtual void func2()cout class B func 2 endl ; ;下面正确的

3、叙述是()oint x ;public :Base(int i)x=i ; Base();class Derived : public Base(public :/完成类Derive构造函数的定义);int main()(Derived Obj ;return 0 ;)在横线处应填入的语句是【】。32 .有如下程序:#include using namespace std;class Basepublic;int m,n;);class Derivedl:Base;class Derived2:public Derivedlpublic:void SetMN(int M, int N)m=M;

4、n=N;int GetSumMN() return(m+n););int main()Derived2 objD;objD.SetMN(3,4);cout M+N= objD.m+bojD.n endl;return 0: )编译时只有cout M+N= objD.m+bojD.n endl;”有语法错误,程序的其他地方没有语法错误,请判断横线处使用的关键字是O33 .请将下列类定义补充完整。class Basepublic :void fun( )cout Base:fun endl ; ;class Derived : public Basepublic :void fun()显式调用基类

5、的fun函数cout Derived:fun endt ;);34 .已知有函数f的定义如下:intf()static int s=0;s+=2;return s;)则在某程序中第二次执行函数调用语句f();时,函数f的返回值是35 .对基类数据成员的初始化必须在派生类的构造函数中的 处执行。四、程序改错题(10题)36 .使用VC+ +6 .0打开考生文件夹下的源程序文件1 .cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,输出的结果为Constructor, i=0,Destructor注意:错误的语句在/ / *error*的下面,修改该语句即可。试题程序:#include(

6、iostream . h)classTC (inti ;public :TC ;voiddisplay ;TC ;TC : TC coutnConstructor!n,i=0;7,7 7,不下个小不不enor不小不不不不TC :display tout k k kJ kJ kJ不不不不不小enor不不不不不不TC : TCCOUInDestructornendl :) voidmain(TCa ;a . display ;37 .使用VC+6. 0打开考生文件夹下的源程序文件1.cpp,但该程序运行有问题,请改正main函数中的错误,使该程序的输出结果正确。程序输出:88注意:错误的语句在/

7、*error* /的下面。修改该语句即可,其他的语句不能修改。试题程序:#include(iostream. h classCO public:7,7“ 7,个不个个个个个不rror个个个个个小个个staticintn=O :CO (n+ + :)CO(n:):*1# *1 *1*error不不不不不不个不intCO:n;voidmain(COobj ;COobj27;CO*C=NULL:c= & obj :errork1 k1k1 slryw ryw rj*eoutC . nendl ;coutC0: nendl; )38 .使用VC+6.。打开考生文件夹下的源程序文件1. cpp,该程序运

8、行时有错误,请改正错误,使程序正常运行,并且要求最后一个catch必须抛出执行的任何异常。程序异常,输出信息为error O ERROR注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在/ / *error*的下面。试题程序:#includeiostream. h)intmain( try(thro w( error);)/不不不不不不不不error不不不不,不不不catch(chars)(coutsendl;) try (throw(int)0);)/7,7,7,7,/不不不小不不不不error不不小不不不不不catch coutiendl;) try(thro

9、w(O);throw(nerrorn);)/不不不不不不不不error不不不不不不不不catch(coutnERRORnendl;returnO ;)39 .使用VC + +6 .0打开考生文件夹下的源程序文件1 .cpp,该程序运行有问题,请改正main函数中的错误,使程序的输出结果为:number= 1number= 10number=100注意:不要改动main函数,不能增加或删除行。也不能更改程序的结构,错误的语句在/ / *error*的下面。试题程序:#includeclassTC(public :TC(inti)number=i ;voidSetNumber(intm) (num

10、ber=m ;)intGetNumberconst(returnnumber ;voidPrintconst (coutnnumber=nnumberendl ;private :intnumber ;voidmainTCobjl ;objl . Print ;TCobj2(3);I Ierroiobjl . number= 10 ;不为不下不不不不 arret*不 Wxc不不不 不可不TC . SetNumber(lOO);objl . Print ;obj2 . Print ;40 .使用VC+ +6.0打开考生文件夹下的源程序文件1 .cpp,该程序运 行时有错,请改正其中的错误,使程序

11、正常运行,并使程序输出的结果 为:sizeof(Sl)=5 sizeof(s2)=10sizeof(s3)=l注意:不要改动main函数,不能增加或删除行,也不能更改程序的结 构,错误的语句在/ / *errc)r*的下面。不能删除assert ()语句。只能修改后面的数字。提示:assert函数如果为假,则会产生一个中断异常。试题程序:#include#include voidmain () char*sl=abc:errorassert(sizeof(s 1 )=3):coutnsizeof(sl)=5nendl ;chars210=nabnvl* vl* *1*个个个个个个个个个个个个个

12、个个个assert(sizeof(s2)=2); coutnsizeof(s2)=10nendl ;chars3=23 :*1个个个个个个个个个个个个个个个个assert(sizeof(s3)=4); coutnsizeof(s3)=lnendl ;return ;41 .使用VC+6. 0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,输出的结果为Constructor, i=0,Destructor注意:错误的语句在/ / *error*的下面,修改该语句即可。试题程序:#include(iostream h) classTC inti;publ

13、ic:TC;voiddisplay;TC;A.A : func2()和 B : funcl()都是虚函数B.A : func2()和 B : funcl()都不是虚函数C.B : funcl()是虚函数,而A : func2()不是虚函数D.B :funcl()不是虚函数,而A :func2()是虚函数5.将下面类TestClass中的函数fun()的对象成员n值修改为100的语句应该是()o class TestClass public: TestClass(int x) n=x; void SetNum(int nl)n=nl; private: int n; int fun() Test

14、Class*ptr=new TestClass(45); ; A.TestClass(lOO)B.ptr- SetNum(lOO) C.SetNum(lOO)D.ptr- n=1006 .常用的关系运算是关系代数和()。A.集合代数B.逻辑演算C.关系演算D.字段7 .下面对静态数据成员的描述中,正确的是()。A.静态数据成员可以在类体内进行初始化8 .静态数据成员不可以被类的对象调用C.静态数据成员可以直接用类名调用D.静态数据成员不能受protected控制符的作用8.sizeof(float)是()。;7 7 7 7 7,7 error不不小不小不TC:TCcoutnConstructo

15、rnn, ” ;i=0;7, 7kJ不不不不不个eue0r不不不不不不TC: display ( toutni=Hi% nendl;errorTC:TCCOUInDestructornendl :) voidmain(TCa;a. display; )42,使用VC+6.。打开考生文件夹下的源程序文件1.cpp,该程序运行有问题,请改正main函数中的错误,使程序的输出结果为: number= 1number=10number=100注意:不要改动main函数,不能增加或删除行。也不能更改程序的结构,错误的语句在/ / *errc)r*的下面。试题程序:#includeclassTC (pub

16、lic:TC(inti) (number=i;)voidSetNumber(intm)(number=m;)intGetNumberconst(returnnumber;)voidPrintconst (coutnnumber=nnumberendl;)private:intnumber;);voidmain (/不不不小不不不不error不不小不不不不不TCobjl;objl. Print;TCobj2(3);objl. number=10;Si*个个个个个个个个arrrr个v/ 个个个个个个TC. SetNumber(lOO);objl. Print;obj2. Print; )43 .使

17、用VC+6. 0打开考生文件夹下的源程序文件1. cpp,该程序 运行时有错。请改正程序中的错误,使程序输出的结果为1003732注意:错误的语句在/ / *error*的下面,修改该语句即可。试题程序:#include voidmainintm=0142:/k! 7,/不不不小个不error不不不不小不intn=0X27 :intq=32;cout m endl;cout nendl;cout q endl;return ;44 .使用VC + + 6 .。打开考生文件夹下的源程序文件1 . cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实现 的功能为从键盘输入一个字符串,并将结

18、果保存到文件1 . txt中。注意:不要改动main函数,不能增加或删除行,也不能更改程序的结 构,错误的语句在* * * * * * error* * * * * * 自勺 试题程序:#include #include*1* vl*1-* vi* vL*个小个小小,一小小nor个个个不不小个个usingstd ;voidWriteFile(char*s) ofstreamoutl ;*1,卜.卜.卜 、,j、error*1 *1 *1*1、4、,卜,j、.j、.j、.1、outl . open(Hl . txt, binary|app);for(inti=0 ; si!=0 ; i + +)

19、k1 k| *1*1 *1 k! *J*1 *J k! k! *Jk|个个个个个个个个nor个个个个个个个个outl . puts(si);)outl . close ;)voidClearFile(ofstreamoutl ;outl . open(nl . txt);outl . close ;)intmain(chars 1024;ClearFile ;coutnpleaseinputastrin9 :nendl ;cin . getline(s, 1024);WriteFile(s);returnO ; 45.使用VC+6. 0打开考生文件夹下的源程序文件1.cpp。本程序要求输入一个

20、字符串,然后将其中的小写字母改成大写字母,字符可 能输入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出 到屏幕中。注意:不要改动main函数,不能增加或删除行,也不能更改程序的结 构,错误的语句在/ / *error*的下面。试题程序:#include voidmain inti=O;charstr120;coutnEnterastringendwith?. nendl ;个个个个小个个个nor个个小个个个个个cin. getline(str, 120);*1个个个个个个个个nor个个个个个个个个while(str)7,k.j 7k! 7个个个不不不下不rror个个个小个个个个if

21、(stri)=a)stri=stri-a+A;i+ + ;coutstrendl ;return ;五、综合应用题(2题)46.请使用【答题】菜单命令或直接用VC6打开考生文件夹下的工程prog3,其中声明了 ValArray类,该类在内部维护一个动态分配的整型数组。ValArray类的复制构造函数应实现对象的深层复制。请编写ValArray类的复制构造函数。在main函数中给出了一组测试数据,此 种情况下程序的输出应该是:ValArray vl= 1, 2, 3, 4, 5) ValArray v2= 1, 2, 3, 4, 5要求:补充编制 的 内 容写在“* *333 *与不得修改程序的

22、其他部分。“* *666* * *1c之间,注意:程序最后将结果输出到文件out. dat中。输出函数write To File已经编译为boj文件,并且在本程序中调用。/ValArray. h #include using namespace std; class ValArray int*v: int size; public:ValArray(const int * P, int n): size(n) v=new intsize;for(int i=0; isize; i+) vi=Pi;47.(1)11次应改为11世(皿行用.get(ch),0(2)应添力口“burlen + + =

23、ch ;burlen=ch ;len + + ;”。(3)应添力口“outfHe2vburi + + ;或outfile2wbufi ; i + + ;”。(4)“TCobj ;”应改为TCob改为.txt); ”。【解析】本题考查了文件流的使用。根据题意,第1处要获得一个字符, 并判断是否到文件结尾,所以应使用get函数;第2处应将ch存入buf 数组,同时让len增1 ;第3处将buf中的字节输出给outfile2,注意同 时让i增1,否则while循环将进入死循环;第4处TC只确一个带char* 参数的构造函数,所以创建对象时必须使用构造参数,根据题意这个参 数应该是“”in .txt”

24、。六、3.综合应用题(2题)48.使用VC6打开考生文件夹下的工程testl7_3,此工程包含一个源程 序文件testl7_3.cpp,其中定义了用于表示点的类Point和表示内容的类 Text以及二者的派生类CircleWithText,但它们的定义并不完整。请按 要求完成下列操作,将它们的定义补充完整。定义类Point的构造函数,请使用参数列表的形式将成员函数x和y 分别初始化为参数xl和yl的值。请在注释“*1*。之后添加适当的 语句。(2)完成类Text的构造函数Text(char *str)的定义,将char型的str指向 的内容赋值给text并且输出str所指向的内容,请在注释“*

25、2*之后 添加适当的语句。定义类 CircleWithText 的构造函数 CircleWithText(int cx,int cy,char*msg), int型的ex和cy用于赋值给x和y, char型的指针*msg用于赋 值给text,请在注释“*3*”之后添加适当的语句。输出结果如下:Point : 3 4hello注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。源程序文件testl7_3.cpp清单如下:#include #include class Point int x,y; public: *cout nPoint:n x,!y n;)Point() );class

26、 Text char text100; public: Text(char *str)-Text() );class CircleWithText:public Point,public Text (public:()CircleW汕Text。);void main() (CircleWithText cm(3,4, hello”); )49.使用VC6打开考生文件夹下的工程test32_3o此工程包含一个 test32_3.cpp,其中定义了复数类complex,但该类的定义并不完整。请 按要求完成下列操作,将程序补充完整。定义复数类complex的私有数据成员real和image,用来分别

27、表示复 数的实部和虚部,它们都是double型的数据。请在注释“*1*之后添 加适当的语句。(2)添加复数类complex的带一个参数的构造函数,分别将real和image 赋值为参数r的值和0.0,请在注释“*2*”之后添加适当的语句。完成复数类complex的“+”运算符重载成员函数的定义,两个复数相 加是将复数的实部和虚部分别进行相加,请在注释“*3*”之后添加适 当的语句。(4)完成复数类 complex 的友元函数 isequal(complex *cl,complex *c2)的 定义,如果复数cl与c2相等即cl与c2的实部和虚部分别相等,则返 回1,否则返回0。请在注释“*4*

28、”之后添加适当的语句。程序输出结果如下:A.一个双精度型表达式B.一个整型表达式C一种函数调用D.一个不 合法的表达式9 .重载赋值操作符时,应声明为 函数。A.友元B.虚C.成员D.多态10 .执行语句序列int i=0;while(i25) i+=3;couti;输出结果是A.24 B.25 C.27 D.28二、单选题(13题)11 .有如下程序;#includeusing namespace std;class Basepublic:void output() cout 1;)virtual void Print()cout,B,;) );class Derived:public Ba

29、sepublic:void output() cout2;void Print() cout,D,; );int main()Base *ptr=new Derived;ptr-output();ptr-Print();36+0i=36+0i注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。源程序文件test32_3.cpp清单如下:#include class complex public:complex() real=image=O.O; complex(double r)* 2 *)complex operator+(const complex &c);friend bool

30、isequal(complex *cl,complex *c2 void display(););complex complex:operator+(const complex &c)* 3 *temp .real=real+c .real;temp.image=image+c.image;return temp;)bool isequal(complex *cl,complex *c2)/ /* 4 * return 1; else return 0;void complex: display() cout =0) cout image nin;else if (image 0) cout

31、image Hin;)void main()complex cl,c2(36.0);cl=cl+c2;cl.display();if (isequal(&cl,&c2) cout ”=;else coat n n;c2.display();cout ” 运算符。题目中,Print。函数之前已经有一个所以此处应填入一个 对象,所以就把指针P转化成指针所指的对象,填入表达式(*P)。25 .类类解析:在面向对象的模型中,最基本的概念是对象和类。对象 是现实世界中实体的模型化;将属性集和方法集相同的所有对象组合在 一起,可以构成一个类。26 .Base : 97 0Base : 97 o解析:本题主

32、要考查两个知识点,一是基类 指针可以指向派生类对象,并可以访问派生类的所有成员。二是在函数 重载中进行隐式类型转换。如pd-f(3);系统到底调用哪个重载函数 呢?实参既不是派生类中的形参,也不是基类中f函数的形参类型。此时 系统根据就近原则和从高优先级到低优先级的规则尝试隐式转换。单字 符更接近整数,故调用的是基类的f函数。27 .if stream 且 fin(C Atest .datios binary);或 if stream fin ;fin ,open(c : test . datios_binary) ; if stream 且 fin(C : Wtest . dat, ios_

33、binary);或 if stream fin, ; fin . open(c : Wtest . dat, ios_binary);解析:C+中打开文 件有两种方式 if stream fin (test . dat);if stream fin ; fin . open(44test . daf,) ;, ios_binary 的意义是以二进制文件打开。28.file2.open(fn2ios:out);file2.open(fn2,ios:out);解析:fstrream 没有默认 的打开模式,因此在打开文件时必须在ios_base:out. ios_base:ins ios_base:

34、in/ios_base:out这三个打开模式中指定29 .输出结果输出结果30 .改变改变 解析:本题考查的是定义常量的关键字const,由const定 义的变量的值不可以再改变,所以定义时必须进行初始化。31 .Derived(int i) :Base(i) Derived(int i) : Base(i)解析:本题考核派生 类中构造函数。程序中,类Derived是基类Base的公有派生。在类Derived 的构造函数应该包括调用基类构造函数使基类的数据成员得以初始化。 32.privateprivate解析:此题考查的是类的继承方式。类的继承方式有公 有、保护和私有三种。分析题目可以得到,

35、若横线处填入的是private. 即类Derivedl私有继承类Base将导致objD.m和objD.n出错,符合题 目要求。1 3.Base:fun() ; Base:fun();解析:显式调用基类的成员函数的一般格 式为:基类名:成员函数名();2 4.44解析:此题考查的是局部静态变量。局部静态变量是在函数或语 句块中以static关键字定义的局部变量。其作用域和普通局部变量一样 只在定义函数或语句块中有效,但生存周期却是和全局变量一样,一直 延续到程序结束。故第一次调用f(),局部静态变量s变为2。第二次调 用f(), s又自增2,所以函数f的返回值是4。35 .成员初始化列表成员初始

36、化列表解析:派生类是基类的具体化,而 基类则是派生类的抽象。派生类也就是基类的具体实现,所以对基类数 据成员的初始化是在派生类的构造函数中成员初始化列表执行的。36 .应改为“TC : TC”。n(2)应改为voidTC : display”。n(3)应改为“TC :TC”。n【解析】在类的外部定义成员函数时,必须在成员函数前面加上类名 和作用域运算符“:作用域运算符用采表示某个成员属于哪个类,使 用格式为“(类名):成员函数(参数函数),因此第1处应改为“TC :TC”,默认构造函数没有参数。由第2处“TC =display”后的语句看,这 是在类外实现TC函数,因此也有作用域运算符使用错误问题,display 函数返回值为void,因此第2处的语句应改为“voidTC :display。由第 3处的语句叮(?:丁小可知,显然这里是在类外实现析构函数,析构函 数是一个特殊的函数,它的名称和类名相同,并在前面加“”字符,用 采与构造函数加以区别,因此第3处的语句应改为“TC :TC”。37 .(1 )44staticintn=O,5S giJstaticintn ;

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

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

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

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