2023年四川省南充市全国计算机等级考试C++语言程序设计预测试题(含答案).docx
2023年四川省南充市全国计算机等级考试C+语言程序设计预测试题(含答案)学校:班级:姓名:考号:一、1.选择题(10题)1 .对于下面的程序,说法正确的是 #include < iostream . h > void main( ) int x=3, y=4, z=2 ;if(X=y+z) cout < <"x=y+Z" ;else cout < < "x!=y+Z" ; A.不能通过编译B.输出6 C.输出x! =y+z D.输出x=y+z2 .在结构化设计方法中,生成的结构图(SC)中,带有箭头的连线表示A.A.模块之间的调用关系B.程序的组成成分C.控制程序的执行顺序D.数据的流向3 .下列叙述中,不属于软件需求规格说明书的作用的是A.便于用户、开发入员进行理解和交流B.反映出用户问题的结构,可以作为软件开发工作的基础和依据C.作为确认测试和验收的依据D.便于开发入员进行需求分析4.有如下类的定义。横线处的语句是()。classclassTCI *error* /TC(inti)(m_i=i ;)voidprint(cout<<-m_i<<,;)public :intmj ;);intmain(/ *error* /inti ;TC04(10);while(i>5)(/ *errOr* /i+ + :04 . print ;)cout<<endl ;returnO ;)39 .使用VC+6. 0打开考生文件夹下的源程序文件1. cpp,该程序运行时有 错。请改正程序中的错误,使程序输出的结果为1003732注意:错误的语句在/ / *error*的下面,修改该语句即可。试题程序:#include<iostream. h>/ / *error*voidmain(/ / *error*intm=0142:/ / *errc)r*intn=0X27:intq=32;cout<<m<<endl; cout<<n<<endl; cout<<q<<endl; return;40 .使用VC+6. 0打开考生文件夹下的源程序文件L cpp,该程序运行有问 题,请改正main函数中的错误,使程序的输出结果为: number=l number=10 number=100注意:不要改动main函数,不能增加或删除行。也不能更改程序的结构,错误 的语句在/ / *errc)r*的下面。试题程序:#include<iostream. h> classTCpublic:TC(inti)(number二i;voidSetNumber(intm)(number=m;)intGetNumberconstreturnnumber;)voidPrintconst (cout<<z/number=/z<<nuiiiber<<endl;private:intnumber;;voidmain / / *error*TCobjl;objl. Print;TCobj2(3);/ / *error* objl. number=10;/ / *error*%()* TC. SetNumber(100);objl. Print;obj2. Print;41 .使用VC+6. 0打开考生文件夹下的源程序文件L cpp,但该程序运行有 问题,请改正main函数中的错误,使该程序的输出结果正确。程序输出:88注意:错误的语句在/ *error* /的下面。修改该语句即可,其 他的语句不能修改。试题程序:ftinclude(iostream. h> classCO public:/ *error* / staticintn=0:CO ( n+ + :) CO n: ):/ *error* /intCO: : n; voidmain (COobj;C0obj27;C0*C=NULL: c=&obj:/ *error* / eout<<C. n<<endl; cout<<CO: : n<<endl;42 .使用VC+6. 0打开考生文件夹下的源程序文件L cpp,该程序运行时有 错误,请改正错误,使程序正常运行,并且要求最后一个catch必须抛出执行 的任何异常。程序异常,输出信息为error0ERROR注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误 的语句在/ / *error*的下面。试题程序:#include<iostream, h) intmain( trythrow ("error");)/ / *error* catch(chars)cout<<s<<endl;) try ( throw(int)0);)/ / *error* catch(cout<<i<<endl;) try ( throw(0); throw("error"); / / *error*catch cout«z/ERRORz/«endl; returnO;43 .使用VC+6. 0打开考生文件夹下的源程序文件1. cppo本程序要求输入 一个字符串,然后将其中的小写字母改成大写字母,字符可能输入多行,当输 入字符“?”时,默认字符输入结束,最后把结果输出到屏幕中。注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误 的语句在/ / *errc)r*的下面。试题程序:#include<iostream. h>voidmain(inti=0;charstr120;cout<<z,Enterastringendwith?. /z<<endl;/ / *error*cin. getline(str, 120);/ / *error*while (str)(/ / *error*if(stri)=a)str i=str i-a+A; i + + ;)cout<<str<<endl;return;44 .使用VC + +6 .0打开考生文件夹下的源程序文件1.cpp。本程序要求输入一个字符串, 然后将其中的小写字母改成大写字母,字符可能输入多行,当输入字符时,默认字符 输入结束,最后把结果输出到屏幕中。注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在/ / *errc)r*的下面°试题程序:#include<iostream . h>voidmaininti二0 ; charstr120; cout<<"Enterastringendwith? . "<<endl ; / / *error* cin . getline(str, 120); I I *error* while(str) ( / / *error* if(stri)=a) stri=stri-a + A ; i+ + ; ) cout<<str<<endl ; return ; )45 .使用VC + + 6.0打开考生文件夹下的源程序文件1 . cpp,该程序运行时有错,请改正 其中的错误,使程序正常运行,输出的结果为 Constructor, i=0, Destructor注意:错误的语句在/ /*error*的下面,修改该语句即可。 试题程序: #include(iostream . h) classTC inti ; public : TC ; voiddisplay ; TC; ); / / *error*TC : TC ( cout<<"Constructor"<<","; i=0; ) / / *errc)r* TC : display tout<<"i=,<<i<<", "<<endl ;/ / *eirc)r*TC : TC(COUI<<"DestructorH<<endl :)voidmain(TCa ;a . display ;)五、综合应用题(2题)46 .(1) "while"应改为 uwhile(infile . get(ch)"。应添加 Uburlen + +=ch ; burlen=ch ; len + + ; no应添加 Uoutfile2<<buri+ + ; M或 Moutfile2«bufi ; i + + ; no(4) “TCobj ; ”应改为 “TCobiJin . txt"); ”。【解析】本题考查了文件流的使用。根据题意,第1处要获得一个字符,并判断是否到文件 结尾,所以应使用get函数;第2处应将ch存入buf数组,同时让len增1 ;第3处将buf 中的字节输出给。utfile2,注意同时让i增1,否则while循环将进入死循环;第4处TC只 确一个带char*参数的构造函数,所以创建对象时必须使用构造参数,根据题意这个参数应 该是>in.txt" o47 .使用VC+6. 0打开考生文件夹下的源程序文件3.cppo其中定义的类不 完整,按要求完成下列操作,将类的定义补充完整。每卖出一个水果,则计算 水果的重量,还要计算所有卖出水果的总重量以及总个数,同时允许退货,请 按照以下的操作,把类补充完整。定义类TCFruit的私有静态数据成员float型变量AllWeight和int型变量 A11N0,请在注释1后添加适当的语句。(2)完成类TCFruit的带一个float型变量w的构造函数,并把这个w加到 AllWeight中,并且AllNo自加。请在注释2后添加适当的语句。(3)在析构函数中,在AllWeight中减去weight,然后AllNo自减,请在注释3 后添加适当的语句。(4)完成静态成员变量的初始化为0,请在注释4后添加适当的语句。注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序 代码。试题程序:ftinclude(iostream. h>classTCFruit private:floatWeight;/I/ xjx xy* zjx jx xjx xjx xjx I xjx xjx xjx xjx xp* xjs staticintAHNo;public:TCFruit(floatw)/ *J> *J> *X* *A* *A*) *X* *1* >1* *J> *J> *J>/ 不不不不不不不不乙不不不不不不不不AllWeight + =w:AlINoH F: TCFruit/JkLz k!>/ 不不不不不不不不J不不不不不不不不AllWeight-二Weight:voiddisplay(cout<</zSellaFruitwith,<<Weight<</k9,<<endl;cout<< Allsellnumber: /z<<AllNo<<endl;cout<</zAll sell weight: ,/«AllWeight<<,k9,<< endl<<endl;);I I *4*floatTCFruit: : AllWeight=O. 0; intmain|TCFruitFruit1(1. 2);Fruitl. display;TCFruitFruit2(2. 3);Fruit2. display;returnO;六、3,综合应用题(2题)48 .使用VC6打开考生文件夹下的工程test5_3。此工程包含一个源程序文件test5_3.cpp, 其中定义了一个类Pn,用于求n!。请按要求完成下列操作,将程序补充完整。定义私有数据成员value(存放n)和fact(存放n!),它们都是ht型的数据。请在注释“丑1*” 之后添加适当的语句。完成默认构造函数Pn的定义,使Fn对象的数据成员value值为i, fact值为lo请在注 释“*2*”之后添加适当的语句。完成函数Cal的定义,该函数计算value的阶乘,并将运算结果保存在fact中,要求使用 while循环实现。请在注释7/*3*”之后添加适当的语句。将主函数补充完整,直接调用类的成员函数,在界面上输出value的阶乘值。请在注释V/*4*n之后添加适当的语句。注意;除在指定位置添加语句之外,请不要改动程序中的其他内容。源程序文件test5_3.cpp清单如下:#include < iostream.h >class Fn(/*public :Fn(int i);void Cal();void disp(););Fn:Fn(int i)(/*2*)void Frr:Cai()(/*3*fact*=i-;)void Fn:disp()(cout < < value < < "!=" < < fact < < endl;)void main()(int value;cout < < "Enter the value:"cin > > value;Fn A(value);/*4*)49 .使用VC6打开考生文件夹下的工程MyProjl2。此工程包含一个源程序文件MyMainl2.cpp0 程序中定义了两个类Base和Derived,但类的定义并不完整。请按要求完成下列操作,将类的定义补充完成:类Deriv6d是基类Base公有派生来的。请在注释7/* *1* *”之后添加适当的语句。完成构造函数Derived(int x)定义,采用初始化列表的方式使基类Base私有成员a初始化 为x,类Derived的私有成员b初始化为x+1。请在注释7/* *2* *”之后添加适当的语句。完成类Derived的成员函数show。的类体外的定义。函数show()中要输出基类数据成员a 的值,然后要输出私有成员b的值。请在注释“*3*之后添加适当的语句。注意;除在指定位置添加语句之外,请不要改动程序中的其他内容。源程序文件MyMainl2.cpp清单如下: /MyMainl2.cpp#include < iostream >using namespace std ;class Base(public :int a ;Base(int i)a = i ;);/* *(private :int b ;public :/*2*void show(););void Derived : show()(/*3*)int main()(Derived d(l);d.show();return 0 ;)参考合案l.D解析:解答本题关键是要理解if后面的括号里的是赋值语句而并非关系判断,赋完值后 x不等于零,C+语言里非零都作真处理,所以输出结果为“x=y+z”,故答案为选项D), 注意“二”与“二二”的区别。2 .A解析:让考生对常用的软件结构设计工具要有较深入的了解。常用的软件结构设计工具 是结构图(SC-structureChart),也称程序结构图。其中,矩形内用于注明模块的功能和名字; 箭头表示模块间的调用关系,带实心圆的箭头表示传递的是控制信息,带空心圆的箭头表示 传递的是数据。注意:根据结构图设计思想,了解结构图构成的基本形式。MyClass public:MyClass(int a=O,intb=0) X=a;Y 二b; voidChange()const X= 10; Y+= 10; private:int X, Y;A.static B.const C.mutable D.不需要填入内容5 .有以下程序 #include < iostream.h float fun(int x, int y) return(x+y); voidmain() inta=2, b=5, c=8; cout < < fun(int)fun(a+c, b), a-c) ; 程 序运行后的输出结果是()。A.编译出错B.9C.21 D.96 .下列程序的输出结果是#include < iostream . h > void main() double d=3.2 ; int x, y ; x=l .2 ;y=(x+3 8)/5 .0 ;cout < < y * d < < endl ; 7 .下列关于虚基类的描述,错误的是()oA.设置虚基类的目的是为了消除二义性8 .虚基类的构造函数在非虚基类之后调用C.若同一层中包含多个虚基类,这些虚基类的构造函数按它们说明的次 序调用D.若虚基类由非虚基类派生而来,则仍然先调用基类构造函数,再调用 派生类的构造函数8.一个在基类中说明的虚函数,它在该基类中没有定义,但要求任何派生类都必须定义自己的版本,此虚函数又称为A.虚析构函数B.虚构造函数C.纯虚函数D.静态成员函数3 .D解析:软件需求规格说明书(SRS, Soft ware Requirement Specification)是需求分析阶段 的最后成果,是软件开发中的重要文档之一。它有以下几个方面的作用:便于用户、开发 人员进行理解和交流;反映出用户伺题的结构,可以作为软件开发工作的基础和依据, 作为确认测试和验收的依据。4 .C5.B6c解析:本题中,先将x转换为浮点型再与3 . 8相加,得到结果与5.0相除。最后将得 到的结果去掉小数位化成整型数据赋给义另外,值得注意的是,整型、实型、字符型数据 间可以混合运算。在进行运算时,不同类型的数据先转换成同一类型,然后再进行运算。注 意:如果认为执行y=(x+3 . 8)/5 .。后y的值为1是错误的,此时v的值为。注意:x为 int型,将1.2赋值给x时,x的值为1。7.BBo【解析】虚基类的引入就是为了消除二义性,其构造函数的调用仍然是按照 继承的顺序进行的,对于多个虚基类则按它们说明的次序调用,虚基类的构造 函数先于非虚基类的构造函数执行。8 .C解析:本题考核纯虚函数的定义。纯虚函数是一种特殊的虚函数,纯虚函数是在虚函数 的后面加上“二0”,表示该虚函数无函数体,并非赋值运算。纯虚函数的一般格式如下: virtual <类型 > < 函数名 > (< 参数表> )=0 ;在很多情况下,在基类中不能对虚函数给出有意义的实现,而把它说明为纯虚函数,它的实 现留给该基类的派生类去做。题目中描述的是纯虚函数的特点。9 .A解析:test的构造函数重载,test A3调用test(int A)函数,然后删除时调用析构函数, 故输出选项A。10 .C重载运算符的规则如下:C+不允许用户自己定义新的运算符,只能对已有的 C+运算符进行重载;C+不能重载的运算符只有5个;重载不能改变运算 符运算对象的个数;重载不能改变运算符的优先级和结合性;重载运算符 的函数不能有默认的参数;重载的运算符必须和用户定义的自定义类型的对 象一起使用,至少应有一个是类对象,即不允许参数全部是C+的标准类型。 故本题答案为c。11.B解析:本题考核派生类中的访问权限问题。继承方式包括:public(公有派生), protected(保护派生)和private(私有派生)。不同的继承方式会导致原来具有不同访问属性的 基类成员在派生类中的访问属性也有所不同。这里的访问主要来自两个方面:一是派生类中 的新增成员对从基类继承来的成员的访问二是派生类外部通过派生类对象对从基类继承来 的成员的访问。私有继承时基类中的protected成员在派生类中变成了 private成员,所以B 选项的描述是错误的。12.B解析:面向对象思想的3个主要特征是:封装性、继承性和多态性。其中封装 性是指将数据和算法捆绑成一个整体,这个整体就是对象,描述对象的数据被 封装在其内部;继承性是指一种事物保留了另一种事物的全部特征,并且具有 自身的独有特征:多态性是指当多种事务继承自一种事物时,同一种操作在它 们之间表现出不同的行为。13.D在数组这部分的知识里面,数组下标越界是一个比较容易忽略的问题,其下标 是从0开始,至n 1为止,因此选项D是正确答案。14.BDo【解析】本题考查的知识点是豢的构造。建立一个类的对象时,构造函数的 执行顺序如下:执行基类的构造函数,调用顺序按照各个基类被继承时声明 的顺序(自左向右);执行成员对象的构造函数,调用顺序按照各个成员对象 在类中声明的顺序(自上而下);执行自身的构造函数。本题Derived类继承 于Base类,所以首先会构造基类Base,但Derived类的构造函数没有初始化 列表,所以将调用Base类的默认构造函数,输出一个0。接下来由于它的成员 中还定义了一个Base类的对象,两构造函数也没有显示初始化这个对象,所以 再次调用Base类的默认构造函数输出一个0。最后构造自身,因为主函数中传 入了构造参数1,所以构造自身时输出了一个1。故最终输出结果为001。15.D16 .C解析:选项A中声明p是一个指针,是一个指向数组的指针,所指向的数组的元素是 具有n个int元素的数组;选项B中的p则是一个函数指针,所指向的函数的形参不确定, 返回值为int;选项D中的p是一个函数,返回值是指向int类型的指针。17 .AAo【解析】本题考查虚基类的应用。虽然Derived1和Derived2都是由共同的 基类x派生而来的,但由于引入了虚基类,使得它们分别对应基类的不同副 本。这时数据成员X只存在一份副本,不论在类Derived1中修改,还是在 Derived2中修改,都是直接对这唯一副本进行操作。本题程序执行语句“Derivedobj; ”时.就会先调虚基类Base的构造函数,使得X=0,然后执行 类Derivedl的构造函数使得x=10,再执行类Derived2的构造函数,使得 x=20o最后输出x的值为20。18.B解析:本题考核虚基类的初始化。从虚基类直接或间接派生的派生类的构造函数的成员 初始化列表中都要列出对虚基类构造函数的调用,但只有用于建立对象的派生类的构造函数 调用虚基类的构造函数,而该派生类的所有基类中列出的对虚基类的构造函数的调用在执行 中被忽略,从而保证了对虚基类子对象只初始化一次。19.DDo【解析】函数可以被定义为模板;"template模板形参表X返回值类型X 函数名 > (模板函数形参表)/ /函数定义体, ”其中摸板形参表是由一个或 多个模板形参组成,每个模板形参可以有这几种形式:typename.(参数 名,class(参数名,类型修饰参数名;前两种是等价的typename和 Class可以互换,它们的参数为虚拟类型参数;最后一种参数是常规参数。20 .D解析:逻辑运算符表示或的意思。21 .C解析:C+语言中的类是可以组成层次结构的,类是用于描述事物的属性和对事物的操 作,类与类之间有相对的独立性,但其可以通过一些方法进行信息的通信。22c解析:在关系模型数据库中,基本结构是二维表,这种二维表称为关系。关系的列称为 属性,一个具有N个属性的关系称为N元关系。注意:各种关系查询语言与过程性语言和 非过程性语言的关系,过程性语言的特点。23 .C当有序线性表为顺序存储时才能用:二分法查找。可以证明的是对于长度为n的有序 线性表,在最坏情况下,二分法查找只需要比较1092n次,而顺序查找需要比较n次。24 .改变改变解析:本题考查的是定义常量的关键字const,由const定义的变量的值不可 以再改变,所以定义时必须进行初始化。25 .错误。错误。解析:数据库关系系统中具有把数据库从错误状态恢复到某一已知的正 确状态(亦称为一致状态或完整状态)的功能,就是数据库的恢复。26,8 9 2 127 .栈或Stack栈或Stack解析:栈和队列是两种特殊的线性表,其特殊性在于对它们的操作 只能在表的端点进行。栈中的数据按照后进先出的原则进行组织,而队列中的数据按照先进 先出的原则进行组织。因此,本题的正确答案是栈(stack)。28 .多态性多态性29.2430.ios31 .重载重载32 .友元友元解析:友元函数是对应于当前类的外部函数,但它可以访问该类的所有成员。 友元函数不是当前类的成员函数,可以是另外一个类的成员函数。在类中声明友元函数时, 需要在函数名前加关键字friendo33 .11解析:将一个二元运算符重载为类的成员函数,其形参个数应该是1个;如果将二元 运算符重载为类的友元函数,则其形参个数应该是2个。34 .传地址传地址 解析:本题考查的是传值调用和传址调用的区别传值调用只是进行值 的简单复制,返回之后不会改变原来的值;而传址调用是把参数的地址传入,会改变原来的 值。35 .类类解析:本题考查的是类模板的定义,C+语言中模板分为两种:类模板和函数模板, 类模板只能用于类型参数,函数模板可以重载。36 . (1)应改为 " catch (char*s) ”。(2)应改为 "cateh(inti) ”。(3)应改为 "catch。【解析】本题中第1个标识前的异常抛出语句为“throw(error); ",其中 的类型为字符串。所以对应的异常捕捉语句catch中应该符合这个类型,而程 序中给出的语句"catch(chars)"是字符型的,所以第1处的语句修改为“catch(char*S) ”。第2个标识前的异常抛出语句为"throw(int) 0);”, 其中的类型为int。对应的异常捕捉语句catch中应该符合这个类型,所以补 充catch子句中的类型,否则如果找不到匹配的catch块,系统就会调用一个 系统函数,使程序终止运行。即第2处的语句修改为“catch(inti)”。如果在 catch子句中没有指定异常信息的类型,那么就用删节号表示它可以捕 捉任何类型的异常信息,即修改为“catch()”。37 .应改为 “usingnamespacestd ;"。n(2)应改为"outl . open('l . txt', ios : binary | ios : app);"。n应改为 Moutl . put(si) ; n on【解析】本题第1处的“usingstd;”是在程序中引入标准命名空间std,对于C+中引 入标准命名空间的格式,缺少namespace ,所以第1处的语句修改为 “usingnamespacestd ; ”。第2处,调用成员函数open中,输入、输出方式是在ios类中 定义的,所以Uoutl . open(1l . txt', binary | app); ”语句缺少类ios,即第2处的语句修 改为 Uoutl . open(1l . txt', ios : binary | ios : app); ”。第 3 个标识应该用流成员函数 put输出字符,所以第3处的语句修改为Koutl . put(si)38 .应添加 “public :" on “inti” 应改为 “inti(10); ”。n “i+ + ; ” 应改为 “i- ; ”。n【解析】本题主要考查的是成员的访问属性。成员的访问属性有公有、保护和私有3种, 而默认的访问属性为私有,只有公有成员才能通过类的对象被访问。故应在构造函数前添加 “public:”,否则该类无法被实例化。变量的初始化可以通过“二”号,也可以和初始化对 象一样添加构造参数,题目已要求使用后者。本题要求输出5个数,while的循环变量i每 次减L在i>5时循环,故i初始化应为10。若循环中i每次增L则循环永远不会退出。 39. (1) “voidmain”。(2) uintm=0144; ” 。(3) “intn=0X25; ” 或 “intn=0x25; ”。【解析】本题主要考查了主函数定义及惠同进制之间的转换,包括十进制到八 进制,十进制到十六进制。主函数定义的定义形式为“main”,函数名之后必 须是一对括号,因此第1处应改为“voidmain"。cout输出默认是以十进制方 式输出的,根据题目要求输出的结果可发现变量的初值不正确,十进制的100 对应八进制的144,卡进制的37对应十六进制的25,因此2和3应分别改成“intm=0144; ”,“intn=0X25; ” 或 “intn=0X25; ”。40 .应改为"TCobjl(l); " o(2)应改为 “ObjL SetNumber(lO);”。应改为 “0bj2. SelNumber(lOO);【解析】本题第1处的“TCobjl; ”语句是声明TC类的对象Objl,根据TC类 构造函数的定义TC(inti),存在整型参数,并且题目要求第一个输出结果两 1,所以补全参数1,即第1处的“TCobjl(l); "。第2处处的“objl. number=10; ”应该是调用成员函数SetNumber赋值。在C+ +中成员 函数的使用形式应该是:对象名.成员函数,所以修改为“objl. SetNumber(lO); o类是对象的抽象,而对象是类的具体实例。第3 处“TC- SetNuinber(lOO); ”语句中的TC为类,并不是对象,这里应该使用定 义的对象,即obj2,所以将语句修改为“obj2. SetNumber (100) ; " o41 . (1) “staticintn=0” 应改为 “staticintn; "。(2) “intCO: : n; ” 应改为 “intCO: : n=0; ”。(3) Ucout<<c. n<<endl; ” 应改为 acout<<c->n<<endl; o【解析】本题要在屏幕上输出两个字符,首先要静态变量初始化,第1处应改 为“staticintn; ",第2处要给n赋值,第3处输出时引用c的对象,应改 为 ucout<<c->n<<endl;"。42 . (1)应改为 "catch (char*s) ”。应改为 “cateh(inti)”。应改为“catch()”。【解析】本题中第1个标识前的异常抛出语句为“throw(error); ",其中 的类型为字符串。所以对应的异常捕捉语句catch中应该符合这个类型,而程 序中给出的语句"catch(chars)"是字符型的,所以第1处的语句修改为“catch(char*S) ”。第2个标识前的异常抛出语句为“throw(int) 0);”, 其中的类型为int。对应的异常捕捉语句catch中应该符合这个类型,所以补 充catch子句中的类型,否则如果找不到匹配的catch块,系统就会调用一个 系统函数,使程序终止运行。即第2处的语句修改为“catch(inti)”。如果在 catch子句中没有指定异常信息的类型,那么就用删节号“”表示它可以捕 捉任何类型的异常信息,即修改为“catch()”。43 . (1)应改为 “ein. getline(str, 120, ?);(2)应改为 "while(stri)”。应改为 if(stri>=a&&stri<=2)no【解析】本题中要求以输入字符为结束符,用于字符输入的流成员函数 getline函数读入一行字符,格式为“cin. getline(字符数组,字符个数,终 止标志字符)",所以第1处改为“cin. getline(str, 120, ?); "。第2处 的“while(str)”语句应该是判断字符串str中的每一个字符是否为结束符, 若不是结束符,在循环中判断每一个字符是否为小写,若为小写,则转换。所 以应该修改为"while(stri)" o第3处的“ if (str i >=a) ”语句是判断字 符stri是否为小写字符,而现有的语句只是判断字符是否大于a,但是小写 字符应该是a到2,所以修改为uif(stri>=a&&stri>=z)" o44 .(1)应改为 “ein . getline(str, 120, ?) ; n。n应改为 uwhile(stri)Mon应改为 “if(stri>=a&&stri<=2)” on【解析】本题中要求以输入字符”?”为结束符,用于字符输入的流成员函数getline函数 读入一行字符,格式为“cin . getline(字符数组,字符个数,终止标志字符)”,所以第1处 改为“cin . getline(str, 120, ?); "。第2处的“while(str)”语句应该是判断字符串str中 的每一个字符是否为结束符,若不是结束符,在循环中判断每一个字符是否为小写,若为小 写,则转换。所以应该修改为“while(stri)”。第3处的“if(stri>=a)”语句是判断字符stri 是否为小写字符,而现有的语句只是判断字符是否大于a,但是小写字符应该是a到2,所 以修改为 uif(stri>=a& &stri>=z)no45 .应改为“TC :TCn on应改为 "voidTC : display”。n应改为“TC : TC” on【解析】在类的外部定义成员函数时,必须在成员函数前面加上类名和作用域运算符“ 作用域运算符用采表示某个成员属于哪个类,使用格式为“(类名):成员函数(参数函 数),因此第1处应改为“TC:TC”,默认构造函数没有参数。由第2处“TC : displ