版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021年辽宁省盘锦市全国计算机等级考试
C++语言程序设计真题(含答案)
学校:班级:姓名:考号:
一、1.选择题(10题)
i.在下列程序的横线处填上适当的内容,使程序执行后的输出结果为
ABCD。#include<iostream>usingnamespacestd;classA
{public:A(){cout<<'A';}};classB:{public:B(){cout<<'B';}};
classC:virtualpublicA{public:C(){cout<<'C';}};classD:publicB,public
C{public:D(){cout<<'D';}};voidmain(){Dobj;}
A.publicAB.privateAC.protectedAD.virtualpublicA
2.下面字符串中,不可以用作C++标识符的是()。
A.caseB._test_cC.ReturnD.x_2008
3.在重载一个运算符为成员函数时,其参数表中没有任何参数,这说明
该运算符是
A.后缀一元运算符B.前缀一元运算符C.无操作数的运算符D.二元运
算符
4.下面描述正确的是()o
A.类的普通成员函数可以操作常对象
B.类的成员函数可以修改常对象
C只有常成员函数才可以操作常对象
D.常对象可以被常函数更新
5.C++源晚间中包含的输入/输出头文件为()。
A.stdio.hB.stdafx.hC.iostream.hD.stream.h
6.已知一函数的形参说明为intarr[5][6],则与此等效的形参说明为
()o
A.intarr[][]B.int[5][]C.int*a[6]D.int(*a)[6]
7.有如下类定义:
classAA{
inta;
public:
intgetRef()const{return&a;}//①
intgetValue()const{returna;}//②
voidset(intn)const{a=n;}//③
friendvoidshow(AAaa)const{cout<<a;}//④
);
其中的四个函数定义中正确的是
A.①B.②C.③D.④
8.下列对模板的声明中,正确的是()。
A.template<T>
B.template<classT1.T2>
C.template<classTl.classT2>
D.template<classTl;classT2>
9.()既可重载为一元运算符,又可重载为二元运算符。
A.“*B."="C."=”和DJ'*”和“*++”
10.深度为k的二叉树至多有o
A.2k个结点
B2k⑴结点
C2-1结点
D.2g)-1个结点
二、单选题(13题)
11.有如下程序:
#include<iostream>
usingnamespacestd;
classToy{
public:
Toy(char*_n){strcpy(name,_n);count++;)
Toy(){count一一;)
char*GetName(){returnname;}
staticintgetCount(){returncount;)
private:
charname[10];
staticintcount;
};
intToy::count=0;
intmain(){
Toytl("snoopy"),t2("Mickey"),t3("Barbie");
tout«tl.getCount()«endl:
returnO;
)
运行时的输出结果是()oA.lB.2c.3D.运行时出错
12.下列说法正确的是()。
A.定义inta[4]={1,3};,则a⑼=l,a[l]=3,a⑶的值不确定
B.定义staticinta[4];,则元素值不确定
C.constintx;x=5;表示给常量x赋初值
D.定义inta[4];,则其元素的值是不确定的
13.当使用fstream流类定义一个流对象并打开一个磁盘文件时,文件
的隐含打开方式为()。
A.ios::inB.ios::outC.ios::inIios::outD.以上都不对
14.数据库系统的三级模式不包括()。
A.概念模式B.内模式C.外模式D.数据模式
15.有如下程序;
#include<iostream>
usingnamespacestd;
classBase{
public:
voidoutput(){cout«1;}
virtualvoidPrint(){cout«'B';}
);
classDerived:publicBase{
public:
voidoutput(){cout«2;)
voidPrint(){cout«'D';}
};
intmain(){
Base*ptr=newDerived;
ptr->output();
ptr->Print();
deleteptr;
return0;
)
程序的输出结果是
A.1BB.1DC.2BD.2D
16.在下列枚举符号中,用来表示“相对于当前位置”文件定位方式的是
()o
A.ios_base::cur
B.ios-base::beg
C.los_base::Out
D.ios-base::end
17.模板参数表中参数使用的分隔符号是
A.,B.;C./D.以上都不是
18.下列对重载函数的描述中,错误的是()。
A.重载函数中不允许使用默认参数
B.重载函数中编译是根据参数表进行选择的
C.不要使用重载函数来描述毫不相干的函数
D.构造函数重载将会给初始化带来多种方式
19.下列虚基类的声明中正确的是()
A.classvirtualB:publicA
B.virtualclassB:publicA
C.classB:publicAvirtual
D.classB:virtualpublicA
20.关于函数返回值类型和返回值表达式的类型的描述中,错误的是()。
A.函数返回值类型决定了返回值表达式的类型
B.函数返回值的类型是在定义函数时确定的,在函数调用时不能改变
C.函数返回值的类型就是返回值表达式的类型
D.函数返回值表达式类型与返回值类型不同时,函数表达式类型应转换
成函数返回值类型
21.数据库设计中反映用户对数据要求的模式是()。
A.内模式B.概念模式C.外模式D.设计模式
22.有如下程序:
#included<iostream>
usingnamespacestd;
voidfl(int&X,int&y){intz=x;x=y;y=z;)voidf2(intX,inty){intz=x;
x=y;y=z;Jintmain(){
intx=10,y=26;
fl(X,y);
f2(x,y);
cout«y«endl;
returnO;
)
运行时的输出结果是()oA.10B.16C.26D.36
23.软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。
下列属于应用软件的是()o
A.编译程序B.操作系统C.教务管理系统D.汇编程序
三、2.填空题(12题)
24.运算符重载仍然保持其原来的优先级、和0
25.使用ifstream流类定义一个流对象并打开一个磁盘文件与用使用
fstream流类定义一个流对象并打开一个磁盘文件默认打开方式分别为
和没有默认。
26.在树中,度为零的结点称为【】。
27.重载的运算符保持其原有的【】、优先级和结合性不变。
28.执行“cout<<char(W+2)<<endl语句后,得到的输出结果为【】。
29.在数据的存储结构中,不仅需要存储各数据元素的信息,还要存放
各元素之间的信息。
30.将一个函数声明为一个类的友元函数必须使用关键字【】。
31.已知程序的结果为123,请填空。
#include<iostream.h>
template<classT>
classA
(
public:
Tx,y,Z;
voiddisplay(){cout<<x<<""<<y<<""<<z;)
);
voidmain()
(
A<int>al;
【】
[1
[1
al.display();
)
32.友元类的所有成员函数都是另一个类的【】°
33.C++语言的函数参数传递方式有值传递和【】、引用传递。
34.在面向对象方法中,属性与操作相似的一组对象称为【】。
35.在关系代数运算中,并、笛卡尔积、投影、选择和【】为基本的运
算。
四、程序改错题(10题)
36.使用VC++6.。打开考生文件夹下的源程序文件1.cppo本程序
要求输入一个字符串,然后将其中的小写字母改成大写字母,字符可
能输入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出
到屏幕中。
注意:不要改动main函数,不能增加或删除行,也不能更改程序的结
构,错误的语句在//******error******的下面。
试题程序:
#include<iostream.h>
voidmain
inti=O;
charstr[120];
cout«"Enterastringendwith?."«endl;
II********error********
cin.getline(str,120);
!I********error********
while(str)
II********enor********
if(str[i])=a)
str[i]=str[i]-a+A;
i++;
cout«str«endl;
return;
)
37.使用VC++6.。打开考生文件夹下的源程序文件1.cpp,该程序
运行有问题,请改正main函数中的错误,使程序的输出结果为:
number=1
number=10
number=100
注意:不要改动main函数,不能增加或删除行。也不能更改程序的结
构,错误的语句在//******error******的下面。
试题程序:
#include<iostream.h>
classTC
public:
TC(inti)
(
number=i;
)
voidSetNumber(intm)
(
number=m;
)
intGetNumberconst
(
returnnumber;
)
voidPrintconst
{
cout«"number="«number«endl;
}
private:
intnumber;
};
voidmain
(
IJ********error*********
TCobjl;
objl.Print;
TCobj2(3);
!I********error********
objl.number=10;
II********enx)r*%()******
TC.SetNumber(lOO);
objl.Print;
obj2.Print;
)
38.使用VC++6.。打开考生文件夹下的源程序文件1.cpp,该程序
运行时有错,请改正其中的错误,使程序正常运行,输出的结果为
Constructor,i=0,
Destructor
注意:错误的语句在//******error******的下面,修改该语句即
可。
试题程序:
#include(iostream.h)
classTC
(
inti;
public:
TC;
voiddisplay;
TC;
};
I/******ej*j*or******
TC:TC
(
cout«"Constructor"«",";
i=0;
)
I/******enor******
TC:display
(
tout«"i="«i<<","«endl;
}
II******error******
TC:TC
{
COUI«"Destructor"«endl:
)
voidmain
{
TCa;
a.display;
)
39.使用VC++6.0打开考生文件夹下的源程序文件1.cppo本程序要
求输入一个字符串,然后将其中的小写字母改成大写字母,字符可能输
入多行,当输入字符“?”时,默认字符输入结束,最后把结果输出到屏幕
中。
注意:不要改动main函数,不能增加或删除行,也不能更改程序的结
构,错误的语句在//******errc)r******的下面。
试题程序:
#include<iostream.h>
voidmain
(
inti=O;
charstr[120];
cout«"Enterastringendwith?."«endl;
cin.getline(str,120);
while(str)
I!********enor********
if(str[i])=a)
str[i]=str[i]-a+A;
i++;
)
cout«str«endl;
return;
40.使用VC++6.。打开考生文件夹下的源程序文件1.cpp,但该程
序运行有问题,请改正main函数中的错误,使该程序的输出结果正
确。
程序输出:
8
8
注意:错误的语句在/********error********/的下面。修改该语句
即可,其他的语句不能修改。
试题程序:
#include(iostream.h>
classCO
{
public:
I********error********/
staticintn=O:
CO
(
n++:
)
〜CO
(
n—:
)
}:
!********error********/
intCO::n;
voidmain
COobj;
COobj2[7];
CO*C=NULL:
c=&obj:
I********error********
eout«C.n«endl;
cout«C0::n«endl;
)
41.使用VC++6.。打开考生文件夹下的源程序文件
1.cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实
现的功能为从键盘输入一个字符串,并将结果保存到文件1.txt中。
注意:不要改动main函数,不能增加或删除行,也不能更改程序的结
构,错误的语句在
II******error******白勺-|什|~。
试题程序:
#include<iostream>
#include<fstream>
II********enor********
usingstd;
voidWriteFile(char*s)
ofstreamoutl;
********eiTor********
outl.open("l.txt",binary|app);
for(inti=0;s[i]!=0;i++)
{
II********enor********
outl.puts(s[i]);
)
outl.close;
)
voidClearFile
(
ofstreamoutl;
outl.open("l.txt");
outl.close;
)
intmain
{
chars[1024];
ClearFile;
cout«"pleaseinputastrin9:"«endl;
cin.getline(s,1024);
WriteFile(s);
returnO;
42.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运
行时有错,请改正其中的错误,使程序正常运行,输出的结果为
Constructor,i=0,
Destructor
注意:错误的语句在//******error******的下面,修改该语句即可。
试题程序:
#include(iostream.h)
classTC
(
inti;
public:
TC;
voiddisplay;
~TC;
};
/*1**1**1**1**1**1**1**1**1**1*
//小不不*•4•个prrcr不不不不不不
TC:TC
cout«"Constructor"«","
i=0;
)
/、卜*1**1*
//小不不小不不prmr不不不不不不
TC:display
tout«"i="«i<<","«endl;
}
/*1**1**1**1,*1**1**1**1**1*
//不不不小不不prrcr不不不不不不
TC:TC
COUI«"Destructor"«endl:
)
voidmain
(
TCa;
a.display;
)
43.使用VC++6.。打开考生文件夹下的源程序文件1.cpp,该程序
运行时有错误,请改正错误,使程序正常运行,并且要求最后一个
catch必须抛出执行的任何异常。
程序异常,输出信息为
error
0
ERROR
注意:不要改动main函数,不能增加或删除行,也不能更改程序的结
构,错误的语句在//******errc)r******的下面。
试题程序:
#include<iostream.h)
intmain
(
try
{
throw("error");
catch(chars)
(
cout«s«endl;
)
try
{
throw((int)0);
)
//********error********
catch
(
cout«i«endl;
)
try
{
throw(O);
throw("error");
}
I!********enor********
catch
(
cout«"ERROR"«endl;
)
retumO;
}
44.使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运
行时有错误,请改正程序中的错误,使得程序输出:
9,8,7,6,5
注意:错误的语句在/********error********/的下面,修改该语句即
可。其他的语句不能修改。
试题程序:
#include(iostream.h>
classTC
!********enor********/
TC(inti)
(
m_i=i;
)
voidprint
(
cout«—m_i«,;
)
public:
intm_i;
);
intmain
I********error********/
inti;
TC04(10);
while(i>5)
I**************!
1++:
04.print;
)
cout«endl;
returnO;
)
45.使用VC++6.0打开考生文件夹下的源程序文件
1.cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实现
的功能为从键盘输入一个字符串,并将结果保存到文件1.txt中。
注意:不要改动main函数,不能增加或删除行,也不能更改程序的结
构,错误的语句在
I!******error******自勺~市
试题程序:
#include<iostream>
#include<fstream>
II********enor********
usingstd;
voidWriteFile(char*s)
{
ofstreamoutl;
********error********
outl.open("l.txt",binarylapp);
for(inti=0;s[i]!=0;i++)
1I********error********
outl.puts(s[i]);
)
outl.close;
voidClearFile
ofstreamoutl;
outl.open("l.txt");
outl.close;
)
intmain
(
chars[1024];
ClearFile;
cout«"pleaseinputastrin9:"«endl;
cin.getline(s,1024);
WriteFile(s);
retumO;
)
五、综合应用题(2题)
46.请使用VC6或使用【答题】菜单打开考生目录proj3下的工程文件
proj3,此工程中包含一个源程序文件proj3.cpp,补充编制C++程序
proj3.cpp,其功能是读取文本文件in.dat中的全部内容,将文本存
放到doc类的对象myDoc中。然后将myDoc中的字符序列反转,并
输出到文件out.dat中。文件in.dat的长度不大于1000字节。
要求:
补充编制的内容写在“〃***********与。/**********”两行之间。实现
将myDoc中的字符序列反转,并将反转后的序列在屏幕上输出。不得
修改程序的其他部分。
注意:程序最后已将结果输出到文件Out.dat中,输出函数
writeToFile已经给出并且调用。
//proj3.cpp
#include<iostream>
#include<fstream>
#include<catting>
usingnamespacestd;
classdoc
(
private:
char*sir;〃文本字符串首地址
intlength;〃文本字符个数
public:
//构造函数,读取文件内容,用于初始化新对象,filename是文件名字
符串首地址
doc(char*filename);
voidreverse;〃将字符序列反转
一doc;
voidwriteToFile(char*filename);
);
doc::doc(char}filename)
ifstreammyFile(filename);
intlen=1001,tmp;
atr=newcharflen];
length=O;
while((trap=myFile.get)!=EOF)
str[length++]=trap;
)
str[length]=4\0,;
myFile.close;
voiddoc::reverse{
//将数组atr中的length个字符中的第一个字符与最后一个字符交换,
第二个字符与倒数第二个
〃字符交换
〃*************333*************
//*不*********不*666*不不不*********
doc::〜doe
delete[]str;
voiddoc::writeToFile(char*filename)
OfstreamoutFile(filename);
outFile«str;
outFile.close;
)
voidmain
{
docmyDoc("in.dat");
myDoc.reveme;
myDoc.writeToFile(,,out.dat");
)
47.使用VC++6.。打开考生文件夹下的源程序文件3.cpp,其中定
义了类A、A1和A2,其中A1类由A类公有派生,A2类由A1类公
有派生。
(1)定义类A的构造函数,该构造函数有一个整型的参数x,在构造函
数中请将x赋值给数据成员a。请在注释“//********1*********之
后添加适当的语句。
(2)定义类A1的构造函数,该构造函数有两个整型的参数x和y,在构
造函数中请将x赋值给数据成员b,将y作为基类A构造函数的参数
值传人。请在注释“//********2*********之后添加适当的语句。
(3)定义类A2的构造函数,该构造函数有3个整型的参数x,y和z,
在构造函数中请将x赋值给数据成员C,将y和z分别赋值给基类A1
构造函数的参数x和y。请在注释“//********3********”之后添加
适当的语句。
(4)完成类A2的成员函数show的定义,该函数调用基类成员函数,输
出基类数据成员a和b及类A2自身的数据成员C的值,上述3个值
在输出时以空格隔开。请在注释“//********4*********之后添加适
当的语句。
程序输出结果如下:
7
3
738
注意:除在指定的位置添加语句之外,请不要改动程序的其他部分。
试题程序:
#include<iostream.h>
classA
(
inta;
public:
intgeta{retuma;}
};
classAl:publicA
(
intb;
public:
I[
intgetb{returnb;}
};
classA2:publicAl
intC;
public:
//****,****3********
voidshow
{
II********4********
)
};
voidmain
(
A2a(8.3.7):
cout«a.geta«endl:
cout«a.getb«endl:
a.show;
)
六、3.综合应用题(2题)
48.使用VC6打开考生文件夹下的工程MyProj3。此工程包含一个源程
序文件MyMain3.cpp,其中定义的类并不完整。请按要求完成下列操作,
将类的定义补充完整。
①定义类Planet的保护数据成员distance和revolve,它们分别表示行星
距太阳的距离和行星的公转周期。其中,distance为double型,revolve
为int型。请在注释“〃**1**”之后添加适当的语句。
②定义类Earth的构造函数Earth(doubled,intr),并在其中计算地球绕太
阳公转的轨道周长。假定:&30抵优院0=2*(1*3.1416。请在注释“//**2***
之后添加适当的语句。
③定义类Earth的成员show。,用于显示所有信息。包括地球距太阳的
距离,地球的公转周期,以及地球绕太阳公转的轨道周长。请在注释
“〃**3**,,之后添加适当的语句。
文件MyMain3.cpp中源程序如下:
//MyMain3.cpp
#include<iostream>
usingnamespacestd;
classPlanet
(
protected:
〃**]**
public:
Planet(doubled,intr)
{
distance=d;
revolve=r;
)
};
classEarth:publicPlanet
(
private:
doublecircumference;
public:
〃**2**
〃**3**
);
intmain()
{
Earthobj(9300000,365);
obj.show;
return0;
49.使用VC6打开考生文件夹下的工程MyProjlO。此工程包含一个源程
序文件MyMainlO.cpp。程序中定义了两个类Base和Derived,但类的
定义并不完整。
请按要求完成下列操作,将类的定义补充完成:
①类Derived是基类Base公有派生来的。请在注释“//**1**”之后添加
适当的语句。
②完成构造函数Derived(inti)定义,采用初始化列表的方式使基类Base
私有成员a初始化为i+1,类Derived的私有成员b初始化为i。请在注
释“〃**2**”之后添加适当的语句。
③完成类Derived的成员函数show。的类体外的定义。函数show。中要
显式调用基类的show()函数,然后要输出私有成员b的值。请在注释“〃*
*3**,,之后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件MyMainlO.cpp清单如下:
//MyMainlO.cpp
#include<iostream>
usingnamespacestd;
classBase
(
public:
Base(intx)
(
a=x
voidshow()
cout<<a;
)
private:
inta;
〃***]***
public:
〃***2***
voidshow();
private:
intb;
voidDerivedshow()
{
〃***3***
)
intmain()
(
Derivedd(l),*pb;
pb=&d;
pb->show();
return0;
参考答案
1.D解析:由主函数mian入手,定义了类D对象objo其中D为类B和
C的公有继承,A是C的虚基类。题目中要求的输出结果为“ABCD”,
依次为类A,类B,类C,类D中构造函数的输出语句。为了保证基类
通过多条路径被派生类继承时,即保证A只被继承一次,输出一个A,
所以不但需要声明A为C的虚基类,同样也要声明A为B的虚基类。
2.A解析:C++标识符是一个以字母或下划线开头的,由字母、数字、下
划线组成的字符串。标识符不能与任何一个关键字同名,因此case不能
作为标识符。
3.B解析:本题考核运算符的重载。对于一元运算符参数表是空的,但
是一元运算符'++'和即可以作为前缀运算符又可以作为后缀运算符。
为了区分这两种情况,重载这两个运算符时必须在格式上有所区别:重
载后缀的时必须多一个虚拟参数。所以答案为B。
4.C解析:只有常成员函数才可以操作常对象,常对象不可更新。
5.C
6.D解析:二维数组可以看作是一维数组的扩展。选项D表示的是一个
一维数不清组,里面每个元素是一个指针,而指针肯定指向某个地址,
从而完成二维数组的扩展。考生要注意选项C中*和口的运算优先级。
7.B
解析:本题考查了常成员函数和友员函数的一些概念。getRef()函数返
回的是a的地址值&a,而函数类型却定义为int,C++中不允许隐式的
将一个地址值类型转换为int类型,故选项A不正确。set()函数被定义
为常成员函数,但在函数中给a赋值,改变了数据成员的值这是不允
许的,故选项C错误。show。函数被定义为AA类的友员函数,它不
属于AA类而是一个全局函数。所以同时被定义为常成员函数是错误
的。所以选项D不正确。故应该选择B。
8.C解析:本题考核模板的定义。模板定义的<类型参数表〉中包含一
个或多个由逗号分隔的类型参数项,每一项由关键词class后跟一个用
户命名的标识符,此标识符为类型参数,它不是一种数据类型,但可以
同一般数据类型一样使用。在使用类模板时,必须将其实例化,即用实
际的数据类型代替它。
9.A
10.C
11.C
Co【解析】析构函数主要用于最后函数的释放空间。本题在已输出
tl.getCount后才调用即不影响所输结果。
12.D解析:当定义一个static数组时,虽未初始化,但元素值默认为0;
对非static的数组,没有赋初值,则其元素中的值为不确定的;若赋初
值但数据不够用,则其他元素值初始化为0。
13.D
14.D数据库系统的3级模式是概念模式、外模式和内模式。故答案为D
选项。
15.B
16.A
streamoff定义于iostream,h中,定义有偏移量Offset所能取得的最大
值,seek—dir表不移动的基准位置,是一个有以下值的枚举:ios:
be9:(文件开头)、ios::cur:(文件当前位置)、ios::end:(文件结
尾)。
17.A
18.A
Ao【解析】选项A中,重载函数中是允许使用默认参数的;为了使
重载函数有意义,不要使用重载函数来描述毫不相干的函数;重载函
数中编译是根据参数表进行选择的,包括参数的个数和类型。
19.D解析:本题考核虚基类的声明方式。虚基类说明格式如下:
Virtual<继承方式><基类名>
其中,Virtual是虚基类的关键词。虚基类的说明是用在定义派生类时,
写在派生类名的后面。即:
class<派生类名>:Virtual<继承方式><基类名>。
20.C
21.C数据库系统的三级模式是概念模式、外模式和内模式。概念模式是
数据库系统中全局数据逻辑结构的描述,是全体用户公共数据视图。外
模式也称子模式或用户模式,它是用户的数据视图,给出了每个用户的
局部数据描述,所以选择C。内模式又称物理模式,它给出了数据库物
理存储结构与物理存取方法。
22.A
Ao【解析】该题考查了函数参数传递的两种方式:引用传递和值传
递,引用传递时x和y会交换,而值传递时二者不交换,因此选10。
23.C
Co【解析】编译程序和汇编程序维于开发工具;操作系统属于系统软
件;而教务管理系统属于应用软件。
24.结合性语法结构结合性语法结构
25.ios::in
26.叶子结点叶子结点
27.操作符个数操作符个数解析:本题考查的是运算符重载的概念,用
户重新定义的运算符不改变原运算符的优先性和结合性,也不改变运算
符的语法结构.也就是说重载运算符不会产生新的运算符。
28.CC解析:输出结果为Co
29.前后件关系前后件关系解析在数据存储结构中,除了要存储数据,
还要存储数据的前后件关系,对于顺序存储的数据结构,前后件之间的
关系是通过存储空间的位置来实现的,而对于链式存储来说,数据元素
之间的前后件关系是通过指针来实现的。
30.A或者friendA或者friend解析:友元的定义。
31.al.x=l;al.y=2;al.z=3;al.x=l;\r\nal.y=2;\r\nal.z=3;解析:通
过程序的结果知道数据类型是int,所以调用时声明模板实参为int的,
再对x,y,z进行赋值。
32.友元函数友元函数解析:C++语言中友元类中的函数都是另一个类
的友元函数。
33.地址传递地址传递
34.类类解析:在面向对象方法中,类描述的是具有相似性质的一组对
象。所以,属性与操作相似的一组对象称为类。
35.差差
36.(1)应改为“ein.getline(str,120,?);
(2)应改为"while(str[i])"°
(3)应改为“if(str[i]>=a&&st巾]<=2广。
【解析】本题中要求以输入字符“?”为结束符,用于字符输入的流成员
函数getline函数读入一行字符,格式为“cin.getline(字符数组,字符
个数,终止标志字符)”,所以第1处改为“cin.getline(str,
120,?);第2处的“while(str)”语句应该是判断字符串str中的每一
个字符是否为结束符,若不是结束符,在循环中判断每一个字符是否
为小写,若为小写,则转换。所以应该修改为“while(str[i])”。第3处的
“if(str[i]>=a)”语句是判断字符str国是否为小写字符,而现有的语句只
是判断字符是否大于a,但是小写字符应该是a到2,所以修改为
“if(str[i]>=a&&str[i]>=z)”。
37.(1)应改为"TCobjl(l);
(2)应改为“Objl.SetNumber(lO);
(3)应改为“0bj2.SelNumber(lOO);
【解析】本题第1处的“TCobjl;”语句是声明TC类的对象Objl,根据
TC类构造函数的定义TC(inti),存在整型参数,并且题目要求第一个
输出结果两1,所以补全参数1,即第1处的“TCobjl(l);第2处处
的“objl.number=10;”应该是调用成员函数SetNumber赋值。在C+
+中成员函数的使用形式应该是:对象名.成员函数,所以修改为
“objl.SetNumber(lO);"。类是对象的抽象,而对象是类的具体实
例。第3处“TC.SetNumber(lOO);”语句中的TC为类,并不是对象,
这里应该使用定义的对象,即obj2,所以将语句修改为
“obj2.SetNumber(lOO);
38.(1)应改为叮口:TC”。
(2)应改为"voidTC::display”。
(3)应改为“TC::〜TC”。
【解析】在类的外部定义成员函数时,必须在成员函数前面加上类名
和作用域运算符“::”,作用域运算符用采表示某个成员属于哪个
类,使用格式为“(类名)::<成员函数〉((参数函数)),因此第1处应改
为“TC::TC”,默认构造函数没有参数。由第2处“TC::display”后
的语句看,这是在类外实现TC函数,因此也有作用域运算符使用错
误问题,display函数返回值为void,因此第2处的语句应改为
“voidTC::display”。由第3处的语句“TC::TC”可知,显然这里是
在类外实现析构函数,析构函数是一个特殊的函数,它的名称和类名
相同,并在前面加“〜”字符,用采与构造函数加以区别,因此第3处
的语句应改为“TC::〜TC”。
39.⑴应改为“ein.getline(str,120,?);
\n⑵应改为"while(str[i])"°
\n(3)应改为uif(str[i]>=a&&st巾]<=2)”。
\n【解析】本题中要求以输入字符“?”为结束符,用于字符输入的流成员
函数getline函数读入一行字符,格式为“cin.getline(字符数组,字符个
数,终止标志字符)”,所以第1处改为“cin.getline(str,120,?);第
2处的“while(str)”语句应该是判断字符串str中的每一个字符是否为结
束符,若不是结束符,在循环中判断每一个字符是否为小写,若为小写,
则转换。所以应该修改为“while(st巾])”。第3处的“if(str[i]>=a)”语句是
判断字符str用是否为小写字符,而现有的语句只是判断字符是否大于a,
,,
但是小写字符应该是a到2,所以修改为“if(str[i]>=a&&str[i]>=z)o
40.(l)“staticintn=O"应改为"staticintn;"。
(2)“intCO::n;”应改为"intCO::n=0;
(3)“cout«c.n«endl;"应改为"cout«c->n«endl;
【解析】本题要在屏幕上输出两个字符,首先要静态变量初始化,第1
处应改为“staticintn;",第2处要给n赋值,第3处输出时引用c的对
象,应改为"cout«c->n«endl;"。
41.(1)应改为"usingnamespacestd;"。
(2)应改为"outl.open("l.txt",ios::binaryIios::app);
(3)应改为“outl.put(s[i]);
【解析】本题第1处的“usingstd;”是在程序中引入标准命名空间std,
对于C++中引入标准命名空间的格式,缺少namespace,所以第1处
的语句修改为“usingnamespacestd;第2处,调用成员函数open
中,输入、输出方式是在ios类中定义的,所以“outl.open("l.txt",
binaryIapp);”语句缺少类ios,即第2处的语句修改为
“outl.open("l.txt",ios::binaryIios::app);第3个标识应
该用流成员函数put输出字符,所以第3处的语句修改为
“outl.put(s[i]);
42.(1)应改为“TC::TC”。
\n(2)应改为"voidTC::display”。
\n(3)应改为“TC::~TC”。
\n【解析】在类的外部定义成员函数时,必须在成员函数前面加上类名
和作用域运算符“::”,作用域运算符用采表示某个成员属于哪个类,使
用格式为“(类名)::〈成员函数〉((参数函数)),因此第1处应改为“TC::
TC”,默认构造函数没有参数。由第2处“TC=display”后的语句看,这
是在类外实现TC函数,因此也有作用域运算符使用错误问题,display
函数返回值为void,因此第2处的语句应改为“voidTC:[display"。由第
3处的语句叮(2::丁(3”可知,显然这里是在类外实现析构函数,析构函
数是一个特殊的函数,它的名称和类名相同,并在前面加“字符,用
采与构造函数加以区别,因此第3处的语句应改为“TC::~TC”。
43.(1)应改为"catch(char*s)”。
⑵应改为“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(…)”。
44.(1)应添加“public:
\n(2)“inti”应改为"inti(10);
\n(3)“i++;”应改为“i—;
\n【解析】本题主要考查的是成员的访问属性。成员的访问属性有公有、
保护和私有3种,而默认的访问属性为私有,只有公有成员才能通过类
的对象被访问。故应在构造函数前添加“public:“,否则该类无法被实例
化。变量的初始化可以通过“=”号,也可以和初始化对象一样添加构造
参数,题目已要求使用后者。本题要求输出5个数,while的循环变量i
每次减1,在i>5时循环,故i初始化应为10o若循环中i每
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《图像识别技术》教学课件-2025-2026学年浙教版(新教材)初中信息技术八年级下册
- 成套配电系统标准柜结构培训
- 2025年工业窑炉节能改造实践
- 内镜中心麻醉的安全、质量和效率
- 大学生旅行社实训报告
- 春季高考护理方向
- 牙齿矫正护理视觉模板
- 学校结核病健康体检汇 总表
- PL技术基础应用 5
- 13.1自然选择的证明(教学课件)-高中语文人教统编版选择性必修下册
- 危险物品管理:安全储存和处理氧化剂和还原剂的方法和要求
- 2022年保育师理论知识考试题库(含答案)
- JCT908-2013 人造石的标准
- 【基于PLC的交通信号灯控制系统设计7000字(论文)】
- 施工图出图计划
- 园林植物病虫害防治高职全套完整教学课件
- 医用内窥镜冷光源产品技术要求深圳迈瑞
- 热控专业试题-热工试题
- GB/T 10857-2005S型和C型钢制滚子链条、附件和链轮
- 高大支模架工程监理实施细则
- 科技论文写作与学术规范
评论
0/150
提交评论