【项目1 - 三角形类1】下面设计一个三角形类,请给出各成员函数的定义 

#include<iostream>
#include<Cmath>
using namespace std;
class Triangle
{
public:
void setABC(double x, double y, double z);//置三边的值,注意要能成三角形
void getABC(double *x, double *y, double *z);//取三边的值
double perimeter(void);//计算三角形的周长
double area(void);//计算并返回三角形的面积
private:
double a,b,c; //三边为私有成员数据
};
int main()
{
Triangle tri1; //定义三角形类的一个实例(对象)
tri1.setABC(4,5,6); //为三边置初值
double x,y,z;
tri1.getABC (&x,&y,&z); //将三边的值为x,y,z赋值
cout<<"三条边为:"<<x<<'\t'<<y<<'\t'<<z<<endl;
cout<<"三角形的周长为:"<< tri1.perimeter()<<'\t'<<"面积为:"<< tri1.area()<<endl;
return 0;
}
//请在下面定义Triangle类中的各个成员函数

[​​参考解答​​]


【项目2 - 三角形类2】程序功能同项目1,main()函数如下,请重新定义Triangle类,其中逻辑特别简单的set和get成员函数,要处理为内置成员函数,直接在类内定义。


int main()
{
Triangle tri1; //定义三角形类的一个实例(对象)
double x,y,z;
cout<<"请输入三角形的三边:";
cin>>x>>y>>z;
tri1.setA(x);
tri1.setB(y);
tri1.setC(z); //为三边置初值
if(tri1.isTriangle())
{
cout<<"三条边为:"<<tri1.getA()<<','<<tri1.getB()<<','<<tri1.getC()<<endl;
cout<<"三角形的周长为:"<< tri1.perimeter()<<'\t'<<"面积为:"<< tri1.area()<<endl;
}
else
cout<<"不能构成三角形"<<endl;
return 0;
}

[​​参考解答​​]


【项目3 - 程序的多文件组织】


利用多文件组织,重新实现项目2。其中,整个项目包括3个文件:


  • 主文件: main.cpp,用于定义main()函数
  • 头文件: triangle.h,头文件,声明类,定义内置成员函数
  • 类定义文件: triangle.cpp,用于定义类Triangle中其他成员函数

注意,将3个set函数和3个get函数设计成内置成员函数,其他函数不作为内置函数。


[

​参考解答​​]



【项目4 - 考了语文数学的学生】


下面提供了类Stu的数据成员定义,和用于测试的main函数,参考如图的运行结果,完成类的定义,并用多文件形式组织程序


#include<iostream>
using namespace std;
class Stu
{
private:
string name; //学生姓名
float chinese; //语文成绩
float math; //数学成绩
//接下去写
};



int main()
{
Stu s1,s2;
s1.setStudent("Lin daiyu", 98, 96); //对象置初值
s2.setStudent("Jia baoyu", 90, 88); //对象置初值
s1.show();//打印信息
s2.show();//打印信息
s1.setName("xue baochai");//重新置p1对象的名字
s1.show();
cout<<"s1.Name: "<<s1.getName()<<endl;//打印对象的名字
cout<<"s1.average: "<<s1.average()<<endl;//打印对象的成绩
return 0;
}

《C++语言基础》实践项目——和对象找感觉_数据

[​​参考解答​​]


【项目5 - 数组作数据成员】设计一个工资类(Salary),其中类的数据成员如下:


class Salary
{
private:
double salarys[50]; //多人的工资
int number; //实际人数
};

要设计的成员函数有:


  • void set_salarys( ):输入职工工资(输入-1标志着工资输入结束),工资保存到salary数组中,实际人数保存到number中;
  • void add_salarys(int x):给每个人涨x元工资
  • void sort_salarys():对工资排序
  • void show_salarys( ):显示工资信息

(1)在main函数定义Salary类的对象,输入工资,再给每个人涨500元工资,排序后工资数据,然后输出结果。


(2)用salary[50]有限制,实际人数少时,会浪费空间,人数多了,无法完成任务。在main()中先输入职工人数,作为参数传递给输入职工工资的成员函数,然后利用动态分配内存的机制,开辟一个大小正好的连续空间,完成上面的工作。


(3)手工输入工资?!太让人不能忍受了。现给出包含了不足500个职工工资的文件salary.txt(

点击打开链接​​),从文件中读数据,完成上面的工作。


(4)增加一个成员函数,将排序后结果保存到一个文件中。


(5)用多文件的方式组织最后的程序。


[​​参考解答​​]