C++面向对象程序设计试题集 联系客服

发布时间 : 星期四 文章C++面向对象程序设计试题集更新完毕开始阅读d8771a49fe4733687e21aa6a

13. 输入一个自然数,输出其各因子的连乘形式,如输入12,则输出12=1*2*2*3。

14. 使用函数重载的方法定义两个重名函数,分别求出整型数的两数之和和浮点数的两数之和,并在主函数中调用。

15. 定义一个基类:点类,包括x坐标和y坐标,从它派生一个圆类,增加数据成员r(半径),圆类成员函数包括构造函数、求面积的函数和输出显示圆心坐标及圆半径的函数。 16. N个整数从小到大排列,输入一个新数插入其中,使N+1个整数仍然有序。

17. 使用函数重载的方法定义两个重名函数,分别求出整型数的两数之和和浮点数的两数之和,并在主函

数中调用。 18. 编写一个矩形rectangle类,有数据成员长len和宽wid,构造函数retange(int,int).和友元函数int

area(rectangle T)和int fun(rectangle T) 分别计算给定长方形的周长和面积。 19. 定义一个复数类,用友元函数实现对双目运算符+和*的运算符重载,使其适用于复数运算。 20. 输入10 个同学的成绩,统计80分以上和不及格的人数,并输出平均值。

21. 声明一个类String1,其数据成员为char head[100],构造函数String(char *Head)实现head的初始化,成员函数void Reverse()实现head内字符串的逆序存放,成员函数void Print()实现head内字符串的输出。

22. 编写程序形成如下矩阵。

?11111???21111??A=?32111?

??43211???54321???23. 定义盒子Box类,要求具有以下成员:可设置盒子形状;可计算盒子体积;可计算盒子的表面积。 24. 声明一个哺乳动物Mammal类,再由此派生出狗Dog类,二者都定义Speak( )成员函数,基类中定义

为虚函数。声明一个Dog类的对象,调用Speak()函数,观察运行结果。

25. 定义一个基类有姓名、性别、年龄,再由基类派生出教师类和学生类,教师类增加工号、职称和工资,

学生类增加学号、班级、专业和入学成绩。 26. 声明计数器Counter类,对其重载运算符“+”。

27. 实现一个名为SimpleCircle的简单圆类,其数据成员int *itsRadius为一个指向其半径值的指针,

设计对数据成员的各种操作,给出这个类的完整实现并测试这个类。

28. 有一个Time类,包含数据成员minute(分)和sec(秒),模拟秒表,每次走一秒,满60秒进一分钟,

此时秒又从0开始算。要求输出分和秒的值。(提示:重载单目运算符++)

29. 有一个学生类student,包括学生姓名、成绩,设计一个友元函数,输出成绩对应的等级:大于等于

90:优;80~90:良;70~79:中;60~69:及格;小于60:不及格。

30. 定义一个基类有姓名、性别、年龄,再由基类派生出教师类和学生类,教师类增加工号、职称和工资,

学生类增加学号、班级、专业和入学成绩。

31. 编写一个函数来检验输入的一个字符是大写字母还是小写字母或不是26个英文字母。

32. 有两个长方体,其长、宽、高分别为: (1)12,20,25;(2)10,14,20。求它们的体积。编一个基于对

象的程序,在类中用带参数的构造函数。

33. 定义一个哺乳动物Mammal类,再由此派生出狗Dog类,二者都定义 Speak()成员函数,基类中定义

为虚函数,定义一个Dog类的对象,调用Speak函数,观察运行结果。

34. 设计一个三角形类Triangle,包含三角形三条边长的私有数据成员,另有一个重载运算符“+”,以实

现求两个三角形对象的面积之和。

五、简答题(每小题5分,共20分)

1构造函数和析构函数有什么作用?

2.什么叫做作用域?有哪几种类型的作用域?

3.比较类的三种继承方式public公有继承、protected保护继承、private私有继承之间的差别。 4.什么叫做多态性? C++中的多态可以分为哪几类?

5. 解释public和private的作用,公有类型成员与私有类型成员有些什么区别? 6.什么叫做友元函数?什么叫做友元类?

7.什么是对象?什么是面向对象方法?

8.什么叫做抽象类?抽象类有何作用?抽象类的派生类是否一定要给出纯虚函数的实现 9. 派生类构造函数执行的次序是怎样的? 10. 什么叫做虚基类?它有何作用?

答案

一:略 二:略 三:略 四:编程题

1、编写一个程序根据输入的三角形的三条边判断是否能组成三角形,如果可以则输出它的面积和三角形类型(等边、等腰、

直角三角形)。

#include #include using namespace std; int main() { double a,b,c; double v,p; cout<<\请输入三角形三条边:\ cin>>a>>b>>c; if(a+b>c&&a+c>b&&b+c>a) { p=(a+b+c)/2; v=sqrt(p*(p-a)*(p-b)*(p-c)); cout<<\该三角形面积是\ if(a==b&&a==c) cout<<\该三角形是等边三角形!\ else if(a==b&&a!=c||a==c&&a!=b||b==c&&b!=a) cout<<\该三角形是等腰三角形!\ if((a*a+b*b==c*c)||(a*a+c*c==b*b)||(c*c+b*b==a*a)) cout<<\该三角形是直角三角形!\ } else cout<<\这三条边组不成三角形!\ return 0;

}

2、定义一个学生类,其中有3 个数据成员:学号、姓名、年龄,以及若干成员函数。同时编写main 函数使用这个类,实

现对学生数据的赋值和输出。 #include #include using namespace std; class student { int num; string name; int age; public: student(){num=0;name='\\0';age=0;} student(int,string,int); void show(); };

student::student(int a,string b,int c):num(a),name(b),age(c){} void student::show() { cout<<\ cout<<\ cout<<\}

int main() {

student s1(200803986,\梅寒芳\s1.show();

return 0; }

3、从键盘输入若干个学生成绩,统计并输出最高成绩和最低成绩,当输入负数时结束输入。

#include using namespace std; int main() { double a[100]; double max=0,min=100,t; int i; for(i=0;i<100;i++) { cin>>a[i]; if(a[i]<0) break; else { if(a[i]>max) max=a[i]; if(a[i]

4、 编写一个程序,从键盘输入半径和高,输出圆柱体的底面积和体积。 #include

using namespace std; int main() {

double a,h,s,v;

cout<<\半径为:\cin>>a;

cout<<\高为:\cin>>h;

s=3.14159*a*a; v=s*h;

cout<<\底面积为:\cout<<\体积为:\return 0;

}

5、编写一个程序,输入年、月,打印出该年份该月的天数。 #include main() {

int y,m,d;

printf(\switch(m){ case 1: case 3: case 5: case 7: case 8: case 10:

case 12:d=31;break; case 4: case 6: case 9:

case 11:d=30;break;

case 2:if (y%4==0 && y0!=0 || y@0==0) d=29; else d=28; }

printf(\}

6、编写函数将化氏温度转换为摄氏温度,公式为C=(F-32)*5/9;并在主函数中调用。 #include using namespace std; double fun(double a); int main() { double f=37.5,c; c=fun(f); cout<<\华氏温度为:\℉\ cout<<\摄氏温度为:\℃\ return 0; }

double fun(double a) { double b; b=(a-32)*5/9; return b; }

7、声明一个Tree(树)类,有成员ages(树龄),成员函数grow(int years)用以对ages 加上years,showage( )用以显

示tree对象的ages值。在主函数中定义Tree类对象,并调用成员函数(学生自行指定实参数 #include using namespace std; class Tree {

private: int ages; public: int grow(int years)