2023年河南省南阳市全国计算机等级考试C++语言程序设计预测试题(含答案).docx
2023年河南省南阳市全国计算机等级考试 C+语言程序设计预测试题(含答案)学校:班级:姓名:考号:一、1.选择题(10题)1 .以下程序的输出结果是 #include < iostream .h > voidreverse(int a, int n) inti , t ; for(i=0; < n/2;i+) t=ai=ai =an-l-i ; an-l-i=t ; voidmainQ intb10=l, 2, 3, 4, 5, 6, 7, 8, 9, 10 ; inti, s=0 ; reverse(b, 8) ; for(i=6;i < 10;i+)s+=bi ; cout < < s ; ) A.22B.10C.34 D.302 .若有如下程序:#include < iostream > using namespace std; class A public: A(int ijnt j) a=i; b=j; void move(int x,int y) a+=x; b+=y; void show() cout < < a < < "J < < b < < endl; private: int a,b; ; class B:private A public: B(int i,intj):A(ij) void fun() move(3,5); void fl() A:show(); ; int main() B d(3,4); d.fun(); d.fl(); return 0; 程序执行 后的输出结果是()。A.3,4 B.6,8 C.6,9 D.4,33 .数据库管理系统是位于用户与操作系统之间的一个数据管理软件,以 下不属于它的基本功能的是()oA.数据共享功能B.数据定义功能C.数据操纵功能D.数据库的运行管 理与控制功能4 .下面对于友元函数描述正确的是()A.友元函数的实现必须在类的内部定义void main() char a = nclanguage, t;intl,j,k;k = strlen(a);for(i = 0;i < = k - 2;i + = 2)for(j = i + 2;j < = k;) if() t = ai ;ai = aj ;aj =t; cout < < a;cout < < endl;)35 .从一个函数模板产的模板函数是同名的,因此编译器用 的解决方法调用相应函数。四、程序改错题(10题)36 .使用VC+ + 6 .0打开考生文件夹下的源程序文件1 .cpp0本程序要 求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输 入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出到屏幕 中。注意:不要改动main函数,不能增加或删除行,也不能更改程序的结 构,错误的语句在/ / *errc)r*的下面。试题程序:#include<iostream . h>voidmain inti=O ;charstr120;cout«nEnterastringendwith? . n«endl ;7,1>kI> 7,、!>、!> 7"个个个不不不下不rror个个个小个个个个cin . getline(str, 120);vl*J> *J> *1> vi*个个个个个个个个nor个个个个个个个个while(str)vt*vL*vL*个个个不不不不不不不不不不个不stri=stri-a + A ;1+ + ;cout«str«endl ;return ;37 .使用VC+6. 0打开考生文件夹下的源程序文件1. cpp,该程序运行时有错误,请改正错误,使程序正常运行,并且要求最后一个catch必须抛出执行的任何异常。程序异常,输出信息为errorOERROR注意:不要改动main函数,不能增加或删除行,也不能更改程序的结的下面。构,错误的语句在/ / *eiror*试题程序:#include<iostream h) intmain throw(nerrorn);!> !> !* !*!> kJ* kJ*.!>个个个小小个不小nor个个不不不不不不catch(chars) cout«s«endl;) try throw(int)0);*1*个个个个个个个个nor不不不不不不不不catch cout«i«endl;) try throw(O);throw。error");kL*个小小个个小个下个不不不不不不catch cout«nERRORn«endl;)returnO; )38 .使用VC+6. 0打开考生文件夹下的源程序文件1. cpp,该程序运行有问题,请改正main函数中的错误,使程序的输出结果为:number= 1number= 10number= 100注意:不要改动main函数,不能增加或删除行。也不能更改程序的结构,错误的语句在/ / *eirc)r*的下面。试题程序:#include<iostream. h>classTC (public:TC(inti) ( number=i;)voidSetNumber(intm)(number=m;)intGetNumberconst(returnnumber;)voidPrintconst)private:intnumber;voidmain个个个个个个个个nor个个个个个个个个TCobjl;objl. Print;TCobj2(3);7,7,7< 7,个个个个个个个个个个个个个个个个objl. number=10;/ * enor* 0 * *TC. SetNumber(lOO);objl. Print;obj2. Print;39 .使用VC+ + 6 .0打开考生文件夹下的源程序文件1 .cpp,该程序运 行时有错误,请改正程序中的错误,使得程序输出:9, 8, 7, 6, 5注意:错误的语句在/ *error* /的下面,修改该语句即 可。其他的语句不能修改。试题程序:#include(iostream . h>classTC(不不不不不不不不en*or不不不不不不不不TC(inti)(m_i=i ;) voidprint(cout«m i«,;)public :intm_i ;intmain7,7,7,7,7,7"个个个个个不不个个个不不不不不不inti ;TC04(10);while(i>5)! * eirOr * * / i+ + :04 . print ;cout«endl ;returnO ;)40 .使用VC+ + 6 .0打开考生文件夹下的源程序文件1 .cpp,该程序运 行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果 为:sizeof(Sl)=5sizeof(s2)=10sizeof(s3)=l注意:不要改动main函数,不能增加或删除行,也不能更改程序的结 构,错误的语句在/ / *error*的下面。(1)不能删除assert ()语句。只能修改后面的数字。提示:assert函数如果为假,则会产生一个中断异常。试题程序:#include<iostream . h>#include<assert . h>voidmain () (chartsl=nabcn:/vl*vl* 1*/不不不不不不不不eiror不不不不,不不不assert(sizeof(sl )=3):cout«nsizeof(sl)=5n«endl ;chars210="ab":/不不不不不不不不error不不不不不不不不assert(sizeof(s2)=2);cout«nsizeof(s2)=10n«endl ;chars3=23 :error%>!>?、q. rj. rj、assert(sizeof(s3)=4);cout«nsizeof(s3)=ln«endl ;return ;41 .使用VC+6. 0打开考生文件夹下的源程序文件1. cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实 现的功能为从键盘输入一个字符串,并将结果保存到文件1. txt中。 注意:不要改动main函数,不能增加或删除行,也不能更改程序的结 构,错误的语句在error的下面。试题程序:#include<iostream>#include<fstream>个个个个个个个个nor个个个个个个个个usingstd;voidWriteFile(chars) (ofstreamoutl ;erroroutl. open(Hl. txt",binary|app);for(inti=0; si!=O; i+)/不下不不不不可不error不不不不个不不不outl. puts(si);outl. close;)voidClearFile(ofstreamoutl ;outl. open(nl. txt'');outl. close;) intmain(chars 1024;ClearFile;cout«npleaseinputastrin9 :n«endl ;cin. getline(s, 1024);WriteFile(s);returnO;)42.使用VC+6. 0打开考生文件夹下的源程序文件1.cpp。本程序要求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出 到屏幕中。注意:不要改动main函数,不能增加或删除行,也不能更改程序的结 构,错误的语句在/ / *errc)r*的下面。试题程序:#include<iostream. h> voidmain inti=O;charstr120;cout«nEnterastringendwith?. n«endl;*1* *1*k1* vt* *1不个不不不不不不error个个个个个个个个cin. getline(str, 120);不不不不不不不不enoj*不不不不不不个个while(str)kJ*1* *1* kJ#不不不不不不不不error不不个个个个小小if(stri)=a) stri=stri-a+A;cout«str«endl;return ;B.友元函数是类的成员函数C.友元函数破坏了类的封装性和隐藏性D.友元函数不能访问类的私有成员5 .若二叉树中度为2的结点有15个,度为1的结点有10个,则有()个 叶结点。A.25B.30C.31 D.166 .考虑下面的函数原型:void testDefaulParam (int a, int b=7,char z='*'); 下面的函数调用中,不合法的是()。A.testDefaulParam(5);B.testDefaulParam(5, 8);C.testDefaulParam(6, f#f);D.testDefaulParam(0,0/*t);7 .以下类定义中可能会引起错误的语句是class A public :A()/1 int i ; 111 private : int j /3 A(int i)i+ ; /4 ;A.l B.2C.3 D.48 .下列描述中,()是抽象类的特性。A.可以说明虚函数B.可以进行构造函数重载C可以定义友元函数D. 不能说明其对象9 .下列叙述中正确的是A.程序设计过程中的主要工作是编制程序43 .使用VC+6.。打开考生文件夹下的源程序文件1.cpp,该程序 运行时有错误,请改正错误,使程序正常运行,并且要求最后一个 catch必须抛出执行的任何异常。程序异常,输出信息为error0ERROR注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在/ / *errc)r*的下面。试题程序:#include<iostream. h) intmain try throw(nerrorn);不不不不不个个个个个个个个个个个catch(chars) cout«s«endl ;throw(int)0);.L*1*1* *1*1* *1* 1*不不不不不不不不error不不不不不不不不catch cout«i«endl;) try (throw(O);throw(nerrorn);)/不不小不个不不小error小不不外不不小不catch(cout«nERRORn«endl ;returnO ;44 .使用VC+6. 0打开考生文件夹下的源程序文件1. cpp,但该程序运行有问题,请改正main函数中的错误,使该程序的输出结果正确。程序输出:88注意:错误的语句在/ *error* /的下面。修改该语句即可,其他的语句不能修改。试题程序:#include(iostream. h>classCO public:I *error* /staticintn=O :CO n+ + :)co):I * error* * / intCO: n;voidmain (COobj ;COobj27;COCNULL:c二 & obj :I * *error* * *eout«C. n«endl;cout«C0: n«endl;45 .使用VC + + 6 .。打开考生文件夹下的源程序文件1 . cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实现的功能为从键盘输入一个字符串,并将结果保存到文件1 . txt中。注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在error的下面。试题程序:#include<iostream>#include<fstream>*1*1> kL*?、rr> rr> rrwerror*1* *1* k1*kL«*J>rT>r*rr>usingstd ;voidWriteFile(char*s) (ofstreamoutl ;vl>", -J、*1* 1*k£ !* .!*error不不不不不不不不 outl . open(nl . txt", binary|app);for(inti=0 ; si!=0 ; i + +)*1 *1* *1* 1* *1error outl . puts(si);)outl . close ;)voidClearFile(ofstreamoutl ;outl . open(nl . txt");outl . close ; )intmain chars 1024;ClearFile ;cout«npleaseinputastrin9 :n«endl ;cin . getline(s, 1024);WriteFile(s);returnO ; )五、综合应用题(2题)46 .使用VC+6. 0打开考生文件夹下的源程序文件3. cpp。其中定 义的类不完整,按要求完成下列操作,将类的定义补充完整。定义类的公有数据成员函数NO、Name32,其中NO是血型的数据,Name32为字符型。请在注释1后添加适当的语句。(2)完成函数Set的定义,分别设置NO和Name的值,请在注释2后添 加适当的语句。完成函数print,请在注释3后添加适当的语句,输出结果如下:N0=12345Name=HelloWorld!(4)添加默认构造函数,设置NO为0, Name为空,请在注释4后添加 适当的语句。注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其 他的程序代码。试题程序:#include<iostream. h>classTC public:/1k£> k!>/ q. "、.、q. .、.> I .卜,,、q. .、,>.、,,、/ *J> *J> *1> *J> *J> *J> *J> *J>*J> *J> *J> *J>/rj* rj*ry* J?、No=no;for(inti=0; strNamei!=O; i+)Namei=strNamei;Namei+1=0; ) voidprint ()/*Tw)TC ()1 I *4*);intmain ()(TCstu:stu. Set( 12345, nHelloWorld!n); stu. print ();returnO ;47 .(1)应添力"virtualvoidGetNamt!=0 ;"。应添加“constchar* GetName2”。应添加“TC2(char*str)”。(4)应添加“m_stri=0 ;【解析】本题第1处要求“在类TC1中定义接口函数GetName,为纯虚 函数在C+ +中,在基类中用virtual声明成员函数为虚函数。纯虚 函数是在声明虚函数时被"初始化为0的函数,即 t4virtualvoidGetName=0 ; "。第2处要求“函数GetName2实现获得名字 的缓存,但只获得读允许操作这个缓存”。只能引用数据成员,而不能修 改,所以使用常成员函数,其一般形式为“const函数类型函数名”,即 “constchar*GetName2"。第3处要求“实现TC2的构造函数”。TC2的构 造函数与类TC2的名称应该相同,而且第3处的大括弧中是对字符数 组str的操作,所以类TC2的构造函数中的参数为str,即这里补全为 “TC2(char*str)”°第4处要求“完成TC2的构造函数,实现对名字的处 理”,补全类TC2的构造函数,构造函数中的名字变量str对应于类TC 中的成员变量m_str,所以这里补全变量赋值操作“m_stri=0 ;六、3.综合应用题(2题)48 .使用VC6打开考生文件夹下的工程test25_3,此工程包含一个源程 序文件test25_3.cpp,其中定义了用于表示堆的类Set,但它的定义并不完 整。请按要求完成下列操作,将程序补充完整。(1)完成成员函数int IsMemberOf(int n)的定义,该函数检查参数n是否 在类的数据成员数组elems中,如果在返回1,反之返回0。请在注释 “* 1 *,,之后添加适当的语句。(2)完成成员函数int Add(intn)的定义,如果参数n包含在类的数据成员 数组elems中则返回1如果数组超界则返回0,如果都不是,则将参数 n插入到elems中,下标大小为类的数据成员PC,之后PC自加一。请在 注释“*2*,之后添加适当的语句。完成拷贝初始化构造函数Set(Set&s)的定义,请在注释“*3*之后 添加适当的语句。输出结果如下:1()1, 2, 3, 4, 5, 6, 7, 8)注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。源程序文件test25_3.cpp清单如下:#include < iostream.h >class Setpublic :Set() PC=O;Set(Sct &s);void Empty() PC=O;int IsEmptyO return PC=O;int IsMemberOf(int n);int Add(int n);void Print();private:int elems100;int PC;);int Set: :IsMemberOf(int n)* if(elemsi=n)return 1;return O;)int Set:Add(int n) return 1;else if(PC > =100) return O; else elemsPC+=n;return 1;Set:Set(Set &s) for(int i=O; i < PC; i+)elemsi=s.elemsi;)void Set:Print()(cout< <”";for(int i=O; i < PC-1; i+) cout < < elemsi < < "J;if(PC > O)cout < < elemsPC-l;cout < << < endl;)void main()Set A;cout < < A.IsEmptyO < < endl;A.Print();SetB;for(int i=l; i < =8; i+)B.Add(i);B.Print(); )49.使用VC6打开考生文件夹下的工程MyProj3。此工程包含一个源程 序文件MyMain3.cpp,其中定义的类并不完整。请按要求完成下列操作, 将类的定义补充完整。定义类Planet的保护数据成员distance和revolve,它们分别表示行星 距太阳的距离和行星的公转周期。其中,distance为double型,revolve 为int型。请在注释“*1*”之后添加适当的语句。定义类Earth的构造函数Earth(double d,int r),并在其中计算地球绕太 阳公转的轨道周长。假定:circumference=2*d*3.1416。请在注释“*2* 之后添加适当的语句。定义类Earth的成员show。,用于显示所有信息。包括地球距太阳的 距离,地球的公转周期,以及地球绕太阳公转的轨道周长。请在注释 “*3*,之后添加适当的语句。文件MyMain3.cpp中源程序如下: /MyMain3.cpp#include < iostream >B.程序设计的主要目标是编制出运行结果正确的程序C.不良的程序设计风格会增加程序的复杂性D.上述三种说法都不对10.请找出下列程序中错误之处 O#include < iostream.h >class A private :int xl ;protected :int x2 ;public :int x3 ;);class B : public Aprivate :int yl ;protected :int y2 ;public :int y3 ;void disp()cout < < xl < < yl < < endl : /A void set(int i) x2=i ; /B using namespace std; class Planet ( protected: * public: Planet(double d, int r) ( distance = d; revolve = r;);class Earth:public Planet ( private:double circumference;public:* * 2 * * * 3 * *);int main () (Earth obj (9300000, 365);obj. show;return 0;)参考答案1 .A解析:在main函数中,调用reverse函数将b数组中的前8个成员 进行互置,执行完毕后,b数组中的成员为8, 7, 6, 5, 4, 3, 2, 1, 9, 10),在执行for循环结构后,将b6, bb9的值相加,结果 为1+2+9+10=22。注意:在计算累加和时,应将累加变量赋值为零。2 .C解析:此题的执行过程如下:首先B d(3,4);语句调用B类的构造 函数,B(int i,intj), B的构造函数中调用基类A的构造函数,使得 a=3,b=4;d.fun()会调用函数1110丫(3,5),使得(3,4)和(3,5)的对应部分分别 相加,最后输出6,9o3 .A4 .C解析友元函数的定义既可以在类内部进行,也可以在类外部进行。 它提高了程序的运行效率,但破坏了类的封装性和隐藏性,使得类的非 成员函数可以访问类的私有成员。5 .D本题考查的是二叉树的性质。叶结点是度为。的结点。对任何一棵 二叉树T,如果其终端结点数为nO,度为2的结点数为n2,则no=n2+l0 所以,在本题中叶结点数=15+1=16。6 .C7 .D解析:在C+语言中类定义中的构造函数是私有的,但是其却调用 了其中的公有变量,在实例化时会出现错误。注意:C+语言类的定义 8.D解析:本题考核抽象类的特性。抽象类是指至少有一个纯虚函数的类。它往往表示一些抽象的概念, 它的成员函数没有什么意义。抽象类是一种特殊的类,它是为了抽象和设计的目的而建立的,它处 于继承层次结构的上层。抽象类的主要作用是将有关的类组织在一个继 承层次结构中,由它来为它们提供一个公共的根,相关的子类是从这个 根派生出来的。对于抽象类的使用有几点规定:抽象类只能用作其他类的基类,不能 建立抽象类对象;抽象类不能用作参数类型、函数返回类型或显式转换 的类型;可以说明指向抽象类的指针和引用,此指针可以指向它的派生 类,进而实现多态性。由此可知,抽象类区别于其他类的最根本的特征是不能定义对象。因此 也一般将抽象类的构造函数说明为保护的访问控制。9 .C解析:程序设计过程中包括很多步骤,编制程序只是其中的一步。 所以,选项A错误。程序设计的最终产品是程序,但仅设计和编制出一个运行结果正确的程 序是不够的,还应养成良好的程序设计风格。所以,选项B错误。程序设计的根本目标是要降低程序的复杂性和提高程序的可读性。而程 序的复杂性主要来自以下两个方面:问题固有的复杂性;不良的设计风 格人为增加了程序的复杂性。所以,良好的设计风格对于降低程序的复 杂性是很重要的,并且,好的设计风格是好的程序风格的基本保证。选 项C正确。10 .A11 .A根据数据结构中各数据元素之间前后件关系的复杂程度,一般将数据 结构分为两大类型:线性结构与非线性结构。如果一个非空的数据结 构满足下列两个条件:1,有且只有一根节结点,2,每一个结点最多 有一个前件,也最多有一个后件,则称该数据结构为线性结构,又称 线性表。所以线性表、栈与队列、线性链表都是线性结构,而二叉树 是非线性结构。12 .D本题考查函数调用及传值方式传递参数,执行函数function时,并没 有将3的值传回来,而val又没有初始化,所以会输出一个不确定的 值,D选项正确。13 .C数据定义语言:负责数据的模式定义与数据的物理存取构建;数据操纵语言:负责数据的 操纵,包括查询及增加、删除、修改等操作;数据控制语言:负责数据完整性、安全性的 定义与检查以及并发控制、故障恢复等功能。因此本题答案为C)。14 .D本题主要考查了运算符重载。C+把重载的运算符视为特殊的函数, 称为运算符函数,函数名就是在运算符前加上保留字operator。一般而 言,如果a是类X的对象,在类X中重载前置单目运算符,则下列 两种函数调用方法是等价的:第一种是通过运算符构成表达式的形式 进行调用,rn即第第二种是像一般函数那样用函数名进行调用: 当把作为成员函数重载时,调用形式为a.operator rn();当把作为 非成员函数重载时,调用形式为。peratorrn(a)。本题是把前置单目 运算符+重载为成员函数,因此与表达式+a等效的表示为a.operator +()。15 .A解析:面向对象语言包含3个要素,即对象、类和继承。这3个要 素反映了面向对象的传统观念。面向对象程序设计的本质是把数据和对 数据的操作当成一个整体即对象。16 .DDo【解析】本题考查引用调用,因为函数swap引用调用参数a,所 以在swap函数中a的变化会改变主函数中a的值,即a自力口1。但b 的值并未改变。17 .D题干表示的是回车换行,选项A、B、c都表示回车换行,而选项D是 字符串的结尾标志。18 .D19 .D解析算法的复杂度主要包括算法的时间复杂度和算法的空间复杂 度。所谓算法的时间复杂度是指执行算法所需要的计算工作量;算法的 空间复杂度一般是指执行这个算法所需要的内存空间。20 .C本题考查常对象、常成员函数及构造函数。常对象只能调用常成员函 数,普通对象调用普通成员函数。所以本题中。bjl为常对象,执行 objl. print后,会执行常构造函数,输出const: val=10;而obj2为普 通对象,执行obj2. print时,会执行默认构造函数,输出val=20。放 答案为C。21 .DAo【解析】C+流的输入运算符“>>”和输出运算符只能作为非 成员函数重载。重载输入流运算符“>>”须使用的原型是istream& operator»(istream& ,类名>&);。22 .A解析:本程序设计了一个点类Point,包含了横,纵两个坐标数据 x和y,由它派生出了圃类Circle,并加入了新的数据成员,即一个半径 r和一个求圆面积的函数成员area。在主函数main中,首先定义了一个Circle类的对象cl,并通过它的构造函数初始化其数据成员。由此可知,其半径r的值为10,所以其面积为PI*10*10=314,即对象cl的函 数成员area的返回值为314。23.AAo【解析】选项A中,重载函数中是允许使用默认参数的;为了使重载函数有意义,不要使用重载函数来描述毫不相干的函数;重载函 数中编译是根据参数表进行选择的,包括参数的个数和类型。24 .软件开发软件开发解析:基于软件下程的目标,软件工程的理论和 技术性研究的内容主要包括:软件开发技术和软件工程管理。软件开发 技术包括:软件开发方法学、开发过程、开发工具和软件工程环境,其 主体内容是软件开发方法学。软件工程管理包括:软件管理学、软件工 程经济学,以及软件心理学等内容。25 .循环结构循环结构解析:C+语言3种基本结构就是顺序结构,选 择结构,循环结构。26.1616解析:在深度为5的完全二叉树中,就属深度为5的满二叉树 中的叶子结点的个数最多,这些叶子结点均在最后一层(即第5层)上。 又根据二叉树的性质1 :在二叉树的第k层上,最多有2"(41)个结点。 因此,在第5层上最多的结点数为2. = 16。27 .投影投影解析:专门的关系运算主要包括对单个关系进行垂直分解 (投影操作)或水平分解(选择操作)和对多个关系的结合(连接操作)等。28 .b=762b=762解析:本题考查了*a+的用法,*a+作为表达式时,先 计算*a作为表达式的值,然后使指针变量a本身增1,在本题中,s*=*a+ 等同于s=s*a, a+, S后面第一个*是乘号。29 .模式或逻辑模式或概念模式模式或逻辑模式或概念模式30 .传地址传地址 解析:本题考查的是传值调用和传址调用的区别 传值调用只是进行值的简单复制,返回之后不会改变原来的值;而传址 调用是把参数的地址传入,会改变原来的值。31 .Derived(int i) :Base(i) Derived(int i) : Base(i)解析:程序中,类 Derived是基类Base的公有派生。在类Derived的构造函数应该包括调 用基类构造函数,使基类的数据成员得以初始化。32.1233.1934 .j+ = 2 ai > =aj或 ai > ajj + = 2rnai > = afj或 ai > aj 解析:strlen函数是测试字符串长度的函数,函数的值为字符串中的实 际长度,不包括'0'在内。35 .重载重载36 .(1)应改为“ein . getline(str, 120, ?);n(2)应改为 "while(stri)”。n应改为 <4if(stri>=a & & stri<=2)>,。n【解析】本题中要求以输入字符“?”为结束符,用于字符输入的流成员 函数getline函数读入一行字符,格式为“cin . getline(字符数组,字符个 数,终止标志字符字 所以第1处改为“cin . getline(str, 120, ?);”。第 2处的“while(str)”语句应该是判断字符串str中的每一个字符是否为结 束符,若不是结束符,在循环中判断每一个字符是否为小写,若为小写, 则转换。所以应该修改为“while(stri)"°第3处的“if(stri>=a)”语句是 判断字符stri是否为小写字符,而现有的语句只是判断字符是否大于a, 但是小写字符应该是a到2,所以修改为“if(stri>=a& &stri>=z)”。37 .( 1)应改为"catch(char*s)'。(2)应改为"cateh(inti)”。(3)应改为"catch(.)"°【解析】本题中第1个标识前的异常抛出语句为“throw("error");",其 中的类型为字符串。所以对应的异常捕捉语句catch中应该符合这个类 型,而程序中给出的语句“catch(chars)”是字符型的,所以第1处的语 句修改为"catch(char*S)”。第2个标识前的异常抛出语句为 4tthrow(int)0); ",其中的类型为int。对应的异常捕捉语句catch中应 该符合这个类型,所以补充catch子句中的类型,否则如果找不到匹配 的catch块,系