自考C++程序设计模拟试题及答案(九)
-
下面Shape类是一个表示形状的抽象类,Are()为求图形面积的函数。请从Shape类派生梯形类(Trapezoid)圆形类(Circle)三角形类(Triangle)并给出具体的求面积函数。其中所有派生类计算面积需要用到的参数由构造函数给出,梯形面积计算需要上底、下底和高,三角形面积需要底和高,圆形面积需要半径。
状的抽象类声明如下:
class Shape{
public:
virtual double Area( )=0;
};
-
给出下面程序的输出结果。
#include
int min(int a,int b)
{if(a
else return b;
return 0;
}
void main()
{cout<
-
给出下面程序的输出结果。
#include< iostream.h>
class example
{int a;
public:
example(int b=5){a=b++;}
void print(){a=a+1;cout<
void print()const
{cout<
};
void main()
{example x;
const example y(2);
x.print();
y.print();
}
-
有一字符串,包含n个字符。写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字
符串。
#include
using namespace std;
void copystr(_________)
{int n=0;
while(n
{n++;
P1++;
}
while(*p1!='\0')
{*p2=*p1;
p1++;
p2++;
}
*p2=’\0’;
}
void main()
{int m;
char strl[20],str2[20];
cout<"输入字符串1:";
____________
cout<<从第m个字符开始复制,请输入m:”;
cin>>m:
if(strlen(strl)
cout<<"输入超过str1的长度"<
else
{copystr(str1,str2,m);
cout<<"复制的字符串是:"<
}
}
-
在下面程序横线处填上适当的语句,使其输出结果为0,15,15。
#include
class base
{public:
__________f(){return 0;}
};
class derived:public base
{public:
int a,b,c;
__________set(int x,int y,int z){a=x;b=y;c=z;}
int f(){return a+b+c;}
};
void main()
{base b;
derived d;
cout<
d.set(3,5,7);
cout<
base &p=d;
cout<
}
-
完成下面类中成员函数的定义。
#include
class vehicle
{protected:
int size;
int speed;
public:
void set( int s){speed =s;}
_________get(){return speed/10;}
};
class car:public vehicle
{public:
int get(){return speed;}
};
class truck:public vehicle
{public:
int get(){return speed;}
};
class car:public vehicle
{public:
int get(){return speed/2;}
};
int max(_________)
return 1;
else
return 2;
}
void main()
{truck t;
car c;
t.set(160);
c.set(80);
cout<
}
-
在下面程序的横线处填上适当内容,以使该程序执行结果为:50 4 34 21 10 0 7.1 8.1 9.1 10.1 11.1
#include
template
void f(____________)
{____________
for(int i=0;i
{t=a[i];a[i]=a[n-1-i;a[n-1-i]=t;}
void main()
{int a[5]=10,21,34,4,50};
double[6]=11.1,10.1,9.1,8.1,7.1};
f(a,5);f(d,6);
for (int i=0;i<5;i++)
cout<
cout<
for(i=0;i<6;i++)
cout<
cout< endl;
}
-
完成下面类中成员函数的定义。
#include
template
class f
{private:
T x,y,s;
public:
f(T a=0,T b=0){x=a;y=b;}
void sum()
{s=x+y;
T gets();
};
template
____________
{
return s;
}
void main()
{____________a(1.5,3.8);
cout<
}
-
运行程序,从键盘上输入“This is a C++ prog!”后输出到一个文件中,并显示在屏幕上,显示结果:This is a C++ prog!。
#include
#include
#include
using namespace std;
void main()
{char str[20];
ofstream outf("D:\tem.dat", ios::trunc);
Cin>>str;
outf<
Outf.close();
int i=0;
while(str[i]! ='\0')
{cout<
i++;
}
cout<
}
-
#include
class B
{int a,b
const int c;
Public;
B(int i=0,int j=0){a=i;b=j;c=i-j;}
};
void main()
{B a,b(3,5);
B x=a,z(5,9);
}
-
#include
class A
{public:
void f()cout<<"a.f()<
};
class B
{public:
void f()cout<<"b、f()"<
void g(cout<<"b、g()"<
};
class C:public A,public B
{private:
int b;
public:
void g(){cout<<"c.g()"<
};
void main()
{C obj;
Obj.f()
Obj.g()
}
-
#include< iostream.h>
class A
{private:
int x;
public:
A(int i){x=i;}
A(){x=0;}
friend int min(A&,A&);
};
int min(A &a, A &b)
{retum(a.x
}
void main()
{A a(3),b(5);
cout<
}
-
函数模板中紧随template之后尖括号内的类型参数都要冠以保留字________。
-
#include
#include
using namespace std;
template
T Max(Ta,Tb)
{return ab?a:b;}
TMin(Ta,Tb)
{return>b?b:a;}
void main()
{cout<<"Max(3,5)is:"<
(3,5)< cout<<"Min(3,5)is:"<
(3,5)< }
-
派生类可以定义其_______中不具备的数据和操作。
-
设函数sum是由函数模板实现的,并且sum(3,6)和sum(4,6,8)都是正确的函数调用,则函数模板具有_________个类型参数。
-
设A为test类的对象且赋有初值,则语句test(A);表示_______。
-
_______指令指示编译器将一个源文件嵌入到带该指令的源文件之中。
-
C++结构体中的成员默认访问权限为_______。
-
派生类继承基类的虚函数后_______不重新定义该函数。
-
函数fun的返回值是一个整型数据的引用,有两个参数都是int,声明fun函数的原型是_______。
-
在C++中,可将多态性分为:编译时的多态性和_______。
-
在面向对象的程序设计中,将一组对象的共同特性抽象出来形成_________。
-
C++中有两种继承方式:单一继承和__________。
-
目前,有两种重要的程序设计方法,分别是结构化程序设计和_______程序设计。
-
继承的方式有公有继承,私有继承和_________。
-
在单一继承和多重继承方式中,面向对象程序设计应尽量使用_________继承。
-
为了在对象生存期结束时释放其指针成员所指向的动态存储空间,通常为该类定义_________。
-
假设int a=1,b=2;,则表达式(++a/b)*b--的值为_________。
-
用_______修饰的函数称为虚函数。
-
若要使用string类,需要引入的头文件是_________。
-
若函数的定义处于调用它的函数之前,则在程序开始可以省去该函数的__________语句。
-
A是一个类,已有语句“A*p;p=new A[10];”,要释放由p指向的动态空间,正确的语句应该是__________。
-
在C++中使用流进行输入输出,其中用于键盘输入的对象是()
- A.cerr
- B.cin
- C.cout
- D.cfile
-
下列选项中不是C++语言关键字的是()
- A.typedef
- B.mycase
- C.typeid
- D.typename
-
面向对象程序设计语言必须具备的关键要素是()
- A.抽象和封装
- B.抽象和多态性
- C.抽象、封装、继承和多态性
- D.抽象、封装和继承性
-
下列运算符在C++中不能重载的是()
- A.?:
- B.[]
- C.>
- D.&
-
C++程序的执行总是从()开始的。
- A.main函数
- B.第一行
- C.头文件
- D.函数注释
-
设intx=56;intr=x;若cout<<&x;显示0012FF7A,则cout<<&ar;输出值为()
- A.56
- B.0012FF7A
- C.0012FF7B
- D.未知
-
下列描述中,不属于面向对象思想主要特征的是()
- A.封装性
- B.跨平台性
- C.继承性
- D.多态性
-
下面属于重载函数的有()
- a.void f(int x)(...)
- b.int f(int y)(...)
- c.int f(int i,int j)(...)
- d.float k(int x)(...)
- A.4个全部
- B.a和d
- C.b和c
- D.c和d
-
在C++的流类库预定义的缓冲方式下,与标准错误输出设备相联接的是()
- A.cin
- B.cout
- C.cerr
- D.clog
-
下列关于类和对象的说法不正确的是()
- A.对象是类的一个实例
- B.一个类只能有一个对象
- C.一个类只能有一个名字
- D.类和对象的关系与数据类型和变量的关系相似
-
关于抽象类,下列表述中正确的是()
- A.抽象类的成员函数中至少有一个是没有实现的函数(即无函数体定义的函数)
- B.派生类必须实现作为基类的抽象类中的纯虚函数
- C.派生类不可能成为抽象类
- D.抽象类不能用来定义对象
-
要禁止修改指针p本身,又要禁止修改p所指向的数据,这样的指针应定义为()
- A.const char*p="ABCD";
- B.char*const p="ABCD";
- C.char const*p="ABCD";
- D.const char*const p="ABCD";
-
假定一个类的构造函数为A(intaa,intbb)=aa++;b=a*++bb;},则执行Ax(4,5);语句后,x.a和x.b的值分别为()
- A.4和5
- B.4和20
- C.4和24
- D.20和5
-
有关多态性说法不正确的是()
- A.C++语言的多态性分为编译时的多态性和运行时的多态性
- B.编译时的多态性可通过函数重载实现
- C.运行时的多态性可通过模板和虚函数实现
- D.实现运行时多态性的机制称为动态多态性
-
用于标识十六进制前缀或后缀的是()
- A.无
- B.后缀L或e
- C.前缀零
- D.前缀0x
-
C++允许在结构中定义函数,这些函数称为()
- A.静态函数
- B.构造函数
- C.析构函数
- D.成员函数
-
下列访问公有静态成员的方式,错误的是()
- A.类名::静态成员名
- B.对象名.静态成员名
- C.对象指针->静态成员名
- D.对象指针.静态成员名
-
下列选项中,与实现运行时多态性无关的是()
- A.函数重载
- B.虚函数
- C.指针
- D.引用
-
存在定义int a[10],x,*pa;,若pa=&a[0],下列的四个选项中有一个和其他3个选项不是等价的为()
- A.x=*pa;
- B.x=*(a+1);
- C.x=*(pa+1);
- D.x=a[1];
-
在派生类中重新定义虚函数时必须与基类保持一致的是()
- A.参数类型
- B.形参名
- C.操作内容
- D.赋值