2021年安徽省铜陵市全国计算机等级考试C++语言程序设计预测试题(含答案).docx

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

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

1、2021年安徽省铜陵市全国计算机等级考试C+语言程序设计预测试题(含答案)学校:班级:姓名:考号:一、1.选择题(10题)1 .数据的存储结构是指()oA.数据所占的存储空间B.数据的逻辑结构在计算机中的存放形式C.数据在计算机中的顺序存储方式D.存储在计算机外存中的数据2 .假定有下列变量定义:int k=7, x=12;则能使值为。的表达式是A.x*二k-k%5 B.x*=(k-k%5) C.x%=(k-=5) D.(x-=k)-(k+=5)3 .类是C+中的一种新的数据类型,下列有关类的说法不正确的是A.类是一种用户自定义的数据类型B.只有类中的成员函数才能存取类中的私有成员C.在类中,

2、如果不做特别说明,所指的数据均为私有类型D.在类中,如果不做特别说明,所有的成员函数均为公有类型4 .下列关于继承的描述中,错误的是()。试题程序:#includeclassTCpublic:TC(inti)(number二i;)voidSetNumber(intm)number二m;intGetNumberconst(returnnumber;)voidPrintconstcoutz,number=/znumberendl ;)private:intnumber;);voidmain/ / *error*TCobjl;objl. Print;TCobj2(3);/ / *error*objl

3、. number=10;/ / *error*%()*TC. SetNumber(100);objl. Print;obj2. Print;38 .使用VC+6. 0打开考生文件夹下的源程序文件1.cpp,该程序运行时有 错,请改正其中的错误,使程序正常运行,输出的结果为 Constructor, i=0,Destructor注意:错误的语句在/ /*error*的下面,修改该语句即可。 试题程序:#include(iostream, h) classTC inti;public:TC;voiddisplay;TC;);/ / *errc)r*TC: TC cout/Constructor,/

4、,, i=0;)/ / *error*TC: display toutz,ii z/endl;/ / *errc)r*TC: TCCOUI/Destructor/classCO public: / *error* / staticintn=O:CO ( n+ + : ) CO ( n: ):/ *error* / intCO: : n; voidmain(COobj;C0obj27;CO*C二NULL: c=&obj: / *error* / eoutC. nendl; coutC0: : nendl;40 .使用VC + + 6 . 0打开考生文件夹下的源程序文件1 . cpp,该程序运行时

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

6、sert(sizeof(s2)=2);coutsizeof(s2)=10endl ;chars3=23 :/ / *error*assert(sizeof(s3)=4);coutsizeof(s3)=lendl ;return ;)41 .使用VC+6. 0打开考生文件夹下的源程序文件1. cpp,该程序运行时有 错。请改正程序中的错误,使程序输出的结果为1003732注意:错误的语句在/ / *error*的下面,修改该语句即可。试题程序:#include/ / *error*voidmain(/ / *err()r*intm=0142:/ / *error*intn=0X27:intq=3

7、2;coutmendl;coutnendl;coutqendl;return;42 .使用VC + +6 .0打开考生文件夹下的源程序文件1 .cpp。本程序要求输入一个字符串, 然后将其中的小写字母改成大写字母,字符可能输入多行,当输入字符时,默认字符 输入结束,最后把结果输出到屏幕中。注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在/ / *火*error*的下面试题程序:#include voidmain ( inti=0 ; charstr120; coutEnterastringendwith? . endl ; I I *error* cin . g

8、etline(str, 120); / / *error* while(str) I I *error* if(stri)=a) stri=stri-a + A ; i + + ; coutstrendl ; return ; )43 .使用VC+6. 0打开考生文件夹下的源程序文件1. cpp,该程序运行时有 错误,请改正错误,使程序正常运行,并且要求最后一个catch必须抛出执行 的任何异常。程序异常,输出信息为 error0 ERROR 注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误 的语句在/ / *errc)r*的下面。试题程序:#includeiostre

9、am, h) intmain ( try (throw (error); / / *error* catch(chars) coutsendl; try(throw(int)0);)/ / *error* catch(coutiendl;trythrow(0);throw(error);)/ / *error* catch(coutz/ERR0Rzzendl;)returnO;44 .使用VC+6. 0打开考生文件夹下的源程序文件1. cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实现的功能 为从键盘输入一个字符串,并将结果保存到文件1.txt中。注意:不要改动main函数,不能增

10、加或删除行,也不能更改程序的结构,错误 的语句在/ / *error*的下面。试题程序:#include#include/ / *error*usingstd;voidWriteFile(charts)(ofstreamout1;/ / *error*outl. open(l txt, binary|app);for (inti=0; s i !=0; i + +) / / *error* outl. puts(si);outl. close; voidClearFileofstreamoutl;outl. open(/zl. txt);outl. close;intmain(chars102

11、4;ClearFile;cout/zpleaseinputastrin9: z/endl;cin. getline(s, 1024);WriteFile(s);returnO;45 .使用VC + + 6 . 0打开考生文件夹下的源程序文件1 .cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实现的功能为从键盘输入 一个字符串,并将结果保存到文件1 . txt中。注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在/ / *error*的下面。试题程序:#include#include/ / *error*usingstd ;voidWriteFile(c

12、har*s)ofstreamoutl ;/ / *error*outl . open(l . txt, binary|app);for(inti=0 ; si!=0 ; i + +)(/ / *error*outl . puts(si);)outl . close ;)voidClearFileofstreamoutl ;outl . open(l . txt);outl . close ;)intmain(chars1024;ClearFile ;coutpleaseinputastrin9 : endl ;cin . getline(s, 1024);WriteFile(s);return

13、O ;)五、综合应用题(2题)46 .应添加 uBA(intm)a = m ; ”。应添加 uPAI(intm, intn) : BA(n)b=m ; ”。(3)应添力 II TA2(intm, intn, intk) : PAI(n, k)C=m ;)” 。(4)应添力口 coutgetagetbCendl ; 。【解析】根据第1处要求,构造函数的函数名和类名一致,显然BA构造函数的名称为BA. 在BA中通过参数m完成对成员变量a的赋值,因此构造函数的名称为BA(intm),在函数内 部对成员a赋值,故第1处的语句应添加“BA(intm)a=m ;)”。根据第2处的要求,构造 函数的形式为T

14、AI(intm, intn)n, 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类公有派生于PA1,而PA1公有派生于BA,因此在 PA2类中可以调用基类的geta和getb来获得基类私有成员a和b,再输出PA2的私有成员 C 即

15、满足要求,因此第 4 处应添加 “coutgetagetbCendl ; 。47 .使用VC+6. 0打开源程序文件3. cpp。其中类TC用于把文件输出到屏 幕,然后进行文件的分割。分割的方法如下:第一个文件的大小是文件的前一 半,另外一个文件的大小是剩余部分。此程序将in. txt文件中的内容输出到 屏幕,并且将文件按照以上方式分割,存于文件。utl. txt和out2. txt中。 其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。从输入文件中获得一个字符,并判断是否到文件结尾,如果到文件结尾,则退出循环。请在注释1后添加适当的语句。把获得的输入文件的内容存储到bur中,并且

16、用len记录下文件的长度。请在注释2后添加适当的语句。将输入文件的后一半内容存储在第二个文件中,请在注释3后添加适当的语句。使用文件流对象打开输入文件in. txt,请在注释4后添加适当的语句。注意:增加代码或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。试题程序:#include #include#includestdlib. h) classTC public:TC(char*fi1eName) len=0; fstreaminfile;infile, open(fileName, ios: : in); charch; while(coutch;/ *1* / 不不不不不

17、不不不乙不不不不不不不不infile, close;)voidsplitfstreamoutfilel;fstreamoutfile2;outfilel. open(z,outl. txt, ios: : out); outfile2. open(out2 txt, ios: : out); inti=0:for (i=0; ilen / 2; i + +)|outfilelbufi;) do /J *1/ 不不不不不不不不。不不不不不不不不while(i!=len); outfilel. close; outfile2. close; prwate:intlen; charbuf1024;

18、voidmainI I *4*TCobj;obj. split;return;六、3.综合应用题(2题)48.使用VC6打开考生文件夹下的工程test30_3。此工程包含一个test30_3.cpp,其中定义 了类A、A1和A2,其中A1类由A类公有派生,A2类由A1类公有派生。上述三个类的定 义并不完整,请按要求完成下列操作,将程序补充完整。定义类A的构造函数,该构造函数有一个整型的参数x,在构造函数中请将x赋值给数据 成员a。请在注释7/*1*”之后添加适当的语句。定义类A1的构造函数,该构造函数有两个整型的参数x和y,在构造函数中请将x赋值 给数据成员b,将y作为基类A构造函数的参数值传

19、入。请在注释7/*2*”之后添加适当 的语句。定义类A2的构造函数,该构造函数有三个整型的参数x, y和2,在构造函数中请将x赋 值给数据成员c,将y和z分别赋值给基类A1构造函数的参数x和V。请在注释“*3*” 之后添加适当的语句。完成类A2的成员函数show的定义,该函数调用基类成员函数,输出基类数据成员a和 b及类A2自身的数据成员c的值,上述三个值在输出时以空格隔开。请在注释“*4*” 之后添加适当的语句。注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。程序输出结果如下:96962源程序文件test3cL3.cpp清单如下:#include class A(int a;pu

20、blic:/* i *int geta() return a;);class Al:public AA.析构函数不能被继承B.派生类是基类的组合C.派生类的成员除了它自己的成员外,还包含了它的基类的成员D.派生类中继承的基类成员的访问权限到派生类保持不变5 .在面向对象方法中,()描述的是具有相似属性与操作的一组对象。A.属性B.事件C.方法D.类6 .下面关于派生类的描述中错误的是()A.派生类中至少有一个基类B.一个派生类可以作为另一个派生类的基类C.派生类只继承了基类中的公有成员和保护成员D.派生类的缺省继承方式是私有7 .关于C+语言与C语言关系描述中错误的是A.C+语言是C语言的超集

21、8 .C+语言对C洁言进行了扩充C.C+语言包含C语言的全部语法特征D.C+语言与C语言都是面向对象的程序设计语言9 .下列关于this指针的叙述中,正确的是()A.this指针是一个隐含指针,它隐含于类的成员函数中10 只有在使用this时,系统才会将对象的地址赋值给thisint b;public:/* 2 *int getb() return b;);class A2:public Al(int c;public:/* 3 *void show()(/* 4 *);void main()(A2 a(2,6,9);cout a.geta () endl;cout a, getb () en

22、dl; a. show();49.使用VC6打开考生文件夹下的工程test37_3。此工程包含一个test37_3.cpp,其中定义 了类Letter和Number以及Grid,其中Grid类由Letter类和Number类public派生,但三 个类的定义并不完整。请按要求完成下列操作,将程序补充完整。添加类Letter的带一个参数c的构造函数,c是char型的数据,默认值为A,该函数把 参数c的值赋给类的保护成员ch,请在注释“内1*”之后添加适当的语句。添加类Number的带一个参数n的构造函数,n是int型的数据,默认值为0,该函数把 参数n的值赋给类的保护成员num,请在注释“*2*

23、”之后添加适当的语句。添加派生类Grid构造函数的定义,传入的参数为char型的c和血型的n,并将其分别赋 值给基类的ch和num,请在注释7/*3丑”之后添加适当的语句。完成派生类Grid的友元函数“”运算符重载的定义,使其以格式“g.ch,g.num 输出,请在注释“*4*”之后添加适当的语句。源程序文件test37_3.cpp清单如下:#include class Letter(protected:char ch;public:/ * i *);class Number protected:int num;public:/ * 2 *);class Grid : public Lette

24、r, public Number(public:/ * 3 *friend ostream& operator (ostream &o,Grid &g););/ * 4 *(o g.ch , g,num return o;)int main ()Grid g(C, 3);cout Grid reference: g =ii + +;rni=i解析:首先计算字符串的长度,然后开始判断i是否大于等于 j,如果是则说明是可以逆转的。36 .应改为“TC : : TCnon应改为 uvoidTC : : display。n应改为“TC : TC” on【解析】在类的外部定义成员函数时,必须在成员函数前

25、面加上类名和作用域运算符“ 作用域运算符用采表示某个成员属于哪个类,使用格式为“(类名):成员函数(参数函 数),因此第1处应改为“TC:TC”,默认构造函数没有参数。由第2处“TC : display” 后的语句看,这是在类外实现TC函数,因此也有作用域运算符使用错误问题,display函数 返回值为void,因此第2处的语句应改为“voidTC : : display” o由第3处的语句“TC : TC”可知,显然这里是在类外实现析构函数,析构函数是一个特殊的函数,它的名称和类名 相同,并在前面加“”字符,用采与构造函数加以区别,因此第3处的语句应改为“TC: TC” o37 .应改为“T

26、Cob只;”。(2)应改为 “ObjL SetNumber(lO);应改为 “0bj2. SelNumber(lOO); 。【解析】本题第1处的“TCobjl; ”语句是声明TC类的对象Objl,根据TC类 构造函数的定义TC(inti),存在整型参数,并日.题目要求第一个输出结果两 L所以补全参数1,即第1处的“TCobjl(l); 。第2处处的“objl. number=10; ”应该是调用成员函数SetNumber赋值。在C+ +中成员 函数的使用形式应该是:对象名.成员函数,所以修改为objl. SetNumber(lO); o类是对象的抽象,而对象是类的具体实例。第3 处“TC. S

27、etNumber(lOO); ”语句中的TC为类,并不是对象,这里应该使用定 义的对象,即。bj2,所以将语句修改为“obj2. SetNumber(lOO);38 . (1)应改为 “TC: : TC o应改为 “voidTC: : display”。(3)应改为“TC:TC”。【解析】在类的外部定义成员函数时,必须在成员函数前面加上类名和作用域 运算符,作用域运算符用采表示某个成员属于哪个类,使用格式为“(类名):成员函数 (参数函数),因此第1处应改为“TC: : TC”,默 认构造函数没有参数。由第2处“TC: : display”后的语句看,这是在类外实 现TC函数,因此也有作用域运

28、算符使用错误问题,display函数返回值为 void,因此第2处的语句应改为“voidTC: : display”。由第3处的语句TC: : TC”可知,显然这里是在类外实现析构函数,析构函数是一个特殊的 函数,它的名称和类名相同,并在前面加“”字符,用采与构造函数加以区 别,因此第3处的语句应改为“TC:TC”。39 . (1) “staticintn=0” 应改为 “staticintn; 。(2) “intCO: : n; ” 应改为 “intCO: : n=0; ”。(3) Ucoutc. nendl; ” 应改为 coutnendl; 。【解析】本题要在屏幕上输出两个字符,首先要静态变量初始化,第1处应改 为“staticintn; ,第2处要给n赋值,第3处输出时引用c的对象,应改 为coutnendl; 。40 .(1)应改为 uassert(sizeof(sl)=4); ”。n应改为 =a&stri=2)n。n【解析】本题中要求以输入字符为结束符,用于字符输入的流成员函数getline函数

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

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

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

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