自考C++程序设计模拟试题及答案(六)
-
有两个矩阵a和b,都是2行3列。求两个矩阵之和。重载运算符“+”,使之能用于矩阵相加。如=a+b。
-
给出下面程序输出结果。
#include
void main()
{int*p1;
Int**p2=&p1;
int b=20;
p1=&b;
cout<<**p2<
}
-
给出下面程序的输出结果。
#include< iostream.h>
template
class Complex
{T real,image;
public
Complex(T a, T b): real(a){ image=b;}
Complex(T a){image=0,real=a;}
void pr()
{char c;
c=(image>0'+':'-');
if (image!=0)
cout<
0? image:-image)<<"i"< else
Cout<
}
};
void main()
{Complex
a(16.5,-7.8); a.pr()
Complex
b(6); b.pr();
}
-
在下面横线处填上正确的内容,完成类的定义。
class Base
}
int x;
static const int b:
public:
Base(int,int);
const int &a;
};
___________b=15;
Base::Base(int i, int j):___________{}
-
计算1~20之间偶数之和。
#include
void main()
{int a,i;
a=0;
for(i=0;i<21;_________)
{
_________
}
cout<<"偶数之和为:"<
}
-
下面程序用来求直角三角形斜边长度。
#include
#include
class Point
{private:
double x,y;
__________
public:
Point(double i=0,double j=0)
{x=i,y=j}
Point(Point &p)
{x=p.x; y=p.y;}
};
class Line
{private:
Point p1,p2;
public:
Line(Point &xp1, Point &xp2):__________{}
double GetLength();
};
double Line: GetLength()
{double dx=p2.x-p1.x;
double dy=p2.y-p1.y;
return sqrt(dx*dx+dy*dy)
}
void main()
{Point p1, p2(6,8);
Line L1(p1,p2);
cout<
}
-
#include
class AA
{public:
AA()
{A=i;B=j;cout<<"Constructor\n";}
AA(AA &obj)
{A=obj.A;
B=obj.B;
cout<<"Copy Constructor\n";
}
~AA(){cout<<"Destructor\n";}
void show()
{cout<<"A="<
private:
int A,B:
};
void main()
{AA a1(2,3);
AA a2(a1);
a2.show();
_________= &a2;
pa->show();
}
-
下面程序实现数值、字符串的交换。
#include
#include
using namespace std;
template
void Swap(T&a,T&b)
{T temp;
temp=a;a=b;b=temp;
}
void main()
{int a=5,=9;
char s1[]="Hello",s2[]="hi";
Swap(a,b);
Swap(s1,s2);
cout<<"a="<
cout<<"s1="<
}
-
完成下面类中成员函数的定义。
#include
#include
using namespace std;
class str
{private:
char*st;
public:
str(char *a)
{set(a);}
str& perator=(_______)
{delete st;
set(a.st);
return*this;}
void show(){cout<
~str(){delete st;}
void set(char*)//初始化st
{________
strcpy(st,s);
}
};
void main()
{str s1("he"), s2("she");
S1.show(), s2.show()
s2=s1;
s1.show() ,s2.show();
}
-
#include
using namespace std;
void main(){
int x=32,y=37;
const int*p=&x;
*p=y;
cout<<*p<
}
-
#include
class A
{public:
void A(){ }
const int f5() const return5;}
int obj(){return 45;}
int val;
int f8 ()
};
int A::f8() return val;}
void main()
{const A s;
int i=s.f5 ();
cout<<"Value"=<
}
-
下面程序通过调用函数模板实现计算两个正整数的最大公约数,把main函数中的错误找出并改正过来。
#include
template
gcd(T x,T y)
{ while(x!=y)
{if(x >y)x-=y;
Else y - =x;
return x;
}
void main()
{int a;
double d;
cin>>a>>d;
cout<
}
-
定义派生类时,若不使用类关键字显式地规定采用何种继承方式,则默认方式为_______继承。
-
下面程序用于输出最小值,有一处错误。
#include
class Test
{int a,b;
int getmin()
{return(a
public:
int c;
void setValue(int x1,int x2,int x3)}
{a=x1;b=x2;c=x3;}
int GetMin();
};
int Test::GetMin()
{int d=getmin();
return(d=d
}
void main()
{Test tl;
t1.setValue(34,6,2);
cout<
};
-
设置ios_base::right的含义是_________。
-
在C++程序设计中,建立继承关系倒挂的树应使用_________继承。
-
在用C++进行程序设计时,最好用________代替malloc。
-
如果一个类中定义了成员对象,则该类的对象和成员对象先被初始化的是________。
-
C++中能提供封装的关键字是__________。
-
在C++中,利用向量类模板定义一个具有10个int向量V,其元素均被置为字符2,实现此操作的语句是_______。
-
若类的成员函数用关键字static进行修饰,这样的成员函数称为__________。
-
c++语言中的“聚合”隐含了两种实现方式,一种是_______,另一种是用一个类的对象作为一种广义的数据类型来定义整体对象的一种属性。
-
如果类 Derived继承了类Base,则类 Derived称为________类,类Base称为________类。
-
在STL库中用于查找数组内容的函数是_______。
-
如果在类模板的定义中有一个静态数据成员,则在程序运行中会产生_________静态变量。
-
在类定义时,如果没有定义任何构造函数,则编译器自动生成_______一个构造函数。
-
构造函数是和_________同名的函数。
-
设在程序中使用如下语句申请一个对象数组: Shape*p1=new Shape[3]; 则在需要释放p1指向的数组对象时,使用的语句是_______。
-
如果要把PI声明为值为3114159的双精度实数的符号常量,该声明语句是__________。
-
在类中声明const数据成员时,只能通过_______的方式来对该成员进行初始化。
-
_______规则是指在公有派生情况下,一个派生类的对象可以作为基类的对象来使用。
-
如果类的成员对象不提供成员初始化值,则调用该对象的_________。
-
重载的运算符仍保留原有的_______、结合性和语法结构。
-
语句 ofstream f("TEMP.DAT”,ios::app|ios::binary);的功能是建立流对象f,试图打开文件TEMP.DAT并与之连接,并且()
- A.若文件存在,将文件写指针定位于文件尾若文件不存在,建立一个新文件
- B.若文件存在,将其置为空文件;若文件不存在,打开失败
- C.若文件存在,将文件写指针定位于文件首;若文件不存在,建立一个新文件
- D.若文件存在,打开失败;若文件不存在,建立一个新文件
-
int Func(int,int);不可与下列哪个函数构成重载()
- A.int Fune(int,int,int);
- B.double Fune(int,int);
- C.double Fune(double,double);
- D.double Func(int,double);
-
下列字符串中不能作为C++标识符使用的是()
- A.WHILE
- B.user
- C._lvar
- D.9star
-
下列选项中属于C++语句的是()
- A.;
- B.a=17
- C.i+5
- D.cout<<"\n"
-
C++语言是以()语言为基础逐渐发展演变而成的一种程序设计语言。
- A.Pascal
- B.C
- C.B
- D.Simula 67
-
内联函数的特点是()
- A.减少代码量,加快访问速度
- B.减少代码量,减缓访问速度
- C.增加代码量,减缓访问速度
- D.增加代码量,加快访问速度
-
设类Test中存在成员 static int x;,则下列哪种初始化方式是正确的()
- A.Test::int x =25;
- B.int x=25;
- C.int Test::=25;
- D.int Test x =25;
-
下面关于类模板的派生与继承,描述错误的是()
- A.类模板可以继承,继承的方法与普通的类一样
- B.声明模板继承之前,必须重新声明类模板
- C.模板类的基类和派生类不可以是非模板类
- D.模板类的基类和派生类可以是模板类或非模板类
-
所谓数据封装就是将一组数据和与这组数据有关的操作组装在一起,形成一个实体,这实体也就是()
- A.类
- B.对象
- C.函数体
- D.数据块
-
释放关键字new所开辟的动态存储空间必须使用()
- A.create
- B.free
- C.release
- D.delete
-
当一个类的某个函数被说明为virtual时该函数在该类的所有派生类中()
- A.都是虚函数
- B.可能是虚函数
- C.只有被重新说明为virtual时才是虚函数
- D.都不是虚函数
-
假设Class Y: public X,即类Y是类X的派生类,则说明一个Y类的对象时和删除Y类对象时,调用构造函数和析构函数的次序分别为()
- A.X,Y;Y,X
- B.X,Y;X,Y
- C.Y,X;X,Y
- D.Y,X;Y,X
-
对于类定义
class A
{public: virtual void func1(){}
void func2(){}
};
class B: publie A
public: void func1 (cout<<"class B func 1"<
virtual void func2(cout<<"class B func 2"<
};
- A.a:func2()和b::func1()都是虚函数
- B.a::func2()和:: func1()都不是虚函数
- C.a::func1()是虚函数,而A::func2()不是虚函数
- D.a::funcl()不是虚函数,而A::func()是虚函数
-
在公有继承的情况下,基类的公有或保护成员在派生类中的访问权限()
- A.受限制
- B.保持不变
- C.受保护
- D.不受保护
-
下列选项中,对类A的析构函数的正确定义是()
- A.A::~A(void)
- B.void A::~A(参数)
- C.A::~A(参数)
- D.void A::~A()
-
在C++中,函数原型不能标识()
- A.函数的返回类型
- B.函数参数的个数
- C.函数参数类型
- D.函数的功能
-
下列说法中正确的是()
- A.所有的运算符都能被重载
- B.运算符被重载时,它们的优先级与结合性不会改变
- C.当需要时,我们可以自定义一个运算符来进行重载
- D.每个运算符都可以被重载成成员函数和友元函数
-
与C语言 printf(e, World);语句功能相同的C++语句是()
- A.cout<<"Hello, World\n";
- B.cout<<"Hello, World\n";
- C.cin<<"Hello, World \n";
- D.cin<<"Hello, World\n";
-
定义析构函数时,说法正确的是()
- A.其名与类名完全相同
- B.返回类型是void类型
- C.无形参,也不可重载
- D.函数体中必须有delete语句
-
下列对静态数据成员的描述中,正确的是()
- A.静态数据成员是类的所有对象共享的数据
- B.静态数据成员应在类体中初始化
- C.类的不同对象有不同的静态数据成员值
- D.静态数据成员不能被友元函数访问