当前位置 博文首页 > liuguangshibei的博客:C++实验报告-2

    liuguangshibei的博客:C++实验报告-2

    作者:[db:作者] 时间:2021-08-13 12:52

    C++实验报告-2

    **实验题目4 【对象指针作为函数的参数】建立一个对象数组,内放5个学生数据(学号(字符串类型)、成绩(整型)),设计一个函数max,用指向对象的指针作函数参数,在max函数中找出5个学生中成绩最高者,并输出其学号。

    程序源代码
    #include<iostream>
    #include<cstring>
    using namespace std;
    class Student
    {
    public:
    	Student() {};
    	Student(string n, int a) :num(n), score(a) {};
    	void display();
    	string max(Student *t[5]);
    private:
    	string num;
    	int score;
    };
    string Student::max(Student* t[5])
    {
    	int i, n,a;
    	string b;
    	for (i = 0; i < 5; i++)
    	{
    		for (n = i + 1; n < 5; n++)
    		{
    			if (t[i]->score> t[n]->score)
    			{
    				a = t[n]->score;
    				b = t[n]->num;
    				t[n]->score= t[i]->score;
    				t[n]->num = t[i]->num;
    				t[i]->num = b;
    				t[i]->score= a;
    			}
    		}
    	}
    	return t[4]->num;
    }
    void Student::display()
    {
    	cout << num << ",";
    	cout << score << endl;
    }
    int main()
    {
    	int i = 0;
    	Student t;
    	Student stu1[5] =
    	{
    		Student("dsj001",89),
    		Student("dsj002",86),
    		Student("dsj003",68),
    		Student("dsj004",75),
    		Student("dsj005",69)
    	};
    	Student* p[5];
    	for (int n = 0; n < 5; n++)
    	{
    			p[i] = &stu1[n];
    			i++;
    	}
    	t.max(p);
    	cout << t.max(p) << endl;
    	return 0;
    }
    
    **实验题目5 【构造函数】有如下程序,按要求增加构造函数。 #include #include using namespace std; class Triangle { public: **double perimeter();//**计算三角形的周长 **double area();//**计算并返回三角形的面积 void showMessage(); private: **double a,b,c; //**三边为私有成员数据 }; double Triangle::perimeter() { return (a + b + c); } double Triangle::area() { double s = (a + b + c) / 2; return sqrt(s * (s - a) * (s - b) * (s - c)); } void Triangle::showMessage() { **cout<<"**三角形的三边长分别为:"<<a<<’ ‘<<b<<’ '<<c<<endl; **cout<<"**该三角形的周长为"<<perimeter()<<",面积为"<<area()<<endl<<endl; }
    (1)使用带参数构造函数,即Triangle(double x, double y, double z),三边长在调用时由实参直接给出。需要的测试函数是: int main(){ **Triangle Tri(7,8,9); //**定义三角形类的一个实例(对象) Tri.showMessage(); return 0;}
    带参数构造函数:
    #include<iostream>
    #include<Cmath>
    using namespace std;
    class Triangle
    {
    public:
    	Triangle(double n, double m, double t) :a(n), b(m), c(t) {};
    	double perimeter();//计算三角形的周长
    	double area();//计算并返回三角形的面积
    	void showMessage();
    private:
    	double a, b, c; //三边为私有成员数据
    };
    
    double Triangle::perimeter()
    {
    	return (a + b + c);
    }
    
    double Triangle::area()
    {
    	double s = (a + b + c) / 2;
    	return sqrt(s * (s - a) * (s - b) * (s - c));
    }
    
    void Triangle::showMessage()
    {
    	cout << "三角形的三边长分别为:" << a << ' ' << b << ' ' << c << endl;
    	cout << "该三角形的周长为" << perimeter() << ",面积为" << area() << endl << endl;
    }
    int main() {
    	Triangle Tri(7, 8, 9);	//定义三角形类的一个实例(对象)
    	Tri.showMessage();
    	return 0;
    }
    
    

    (2)设计默认构造函数,即不指定参数时,默认各边长为1。需要的测试函数是: int main() { **Triangle Tri; //**调用默认构造函数,不指定参数时,默认各边长为1; Tri.showMessage(); return 0;}

    默认构造函数:
    	Triangle(double n= 1, double m = 1, double t = 1) 
    	{
    		a = n;
    		b = m;
    		c = t;
    	};
    
    

    (3)使用有默认参数的构造函数,不给定实参时,默认边长为1。需要的测试函数是:

    int main(){

    **Triangle Tri1; //**定义边长为1 1 1的三角形类实例

    Tri1.showMessage();

    **Triangle Tri2(1.5);//**定义边长为1.5 1 1的三角形类实例

    Tri2.showMessage();

    **Triangle Tri3(1.5,1.5);//**定义边长为1.5 1.5 1的三角形类实例

    Tri3.showMessage();

    **Triangle Tri4(7,8,9); //**定义边长为7 8 9的三角形类实例

    Tri4.showMessage();

    return 0;}

    有默认参数的构造函数:
    Triangle(double n= 1, double m = 1, double t = 1) 
    	{
    		a = n;
    		b = m;
    		c = t;
    	};
    
    

    (4)在构造函数中使用参数初始化表对数据成员初始化,这是一种更加提倡的写法。需要的测试函数是:

    int main(){

    **Triangle Tri(7,8,9); //**定义三角形类的一个实例(对象)

    Tri.showMessage();

    return 0;

    }

    使用参数初始化表对数据成员初始化的构造函数:
    #include<iostream>
    #include<Cmath>
    using namespace std;
    class Triangle
    {
    public:
    	Triangle(double n = 1, double m = 1, double t = 1) :a(n), b(m), c(t) {};
    	double perimeter();//计算三角形的周长
    	double area();//计算并返回三角形的面积
    	void showMessage();
    private:
    	double a, b, c; //三边为私有成员数据
    };
    
    double Triangle::perimeter()
    {
    	return (a + b + c);
    }
    
    double Triangle::area()
    {
    	double s = (a + b + c) / 2;
    	return sqrt(s * (s - a) * (s - b) * (s - c));
    }
    
    void Triangle::showMessage()
    {
    	cout << "三角形的三边长分别为:" << a << ' ' << b << ' ' << c << endl;
    	cout << "该三角形的周长为" << perimeter() << ",面积为" << area() << endl << endl;
    }
    int main()
    {
    	Triangle Tri(7, 8, 9);	//定义三角形类的一个实例(对象)
    	Tri.showMessage();
    	return 0;
    }
    
    

    **实验题目6 【静态数据成员和静态成员函数】商店销售某一商品,商店每天公布统一的折扣(discount)。同时允许销售人员在销售时灵活掌握售价(price),在此基础上,对一次购10件以上者,还可以享受98折优惠。现已知3个销货员一次销售情况为 销货员号(num) 销货件数(quantity) 销货单价(price) 101 5 23.5 102 12 24.56 103 100 21.5 请编写程序,计算出此商品的总销售款sum以及每件商品的平均售价。要求用静态数据成员和静态成员函数实现。

    程序源代码:
    #include <iostream>
    #include<cstring>
    using namespace std;
    class Goods
    {
    public:
    	Goods(int a,int b,double c) :num(a), quantity(b), price(c) {};
    	static void every();
    	static double fun(Goods p[3]);
    private:
        double price;
    	int num;
    	int quantity;
    	double sum;
    	static double total;
    	static double array;
    };
    double Goods::total;
    double Goods::array;
    void Goods::every()
    {
    	array = total / 135;
    	cout << "每件商品的均价为:" << array << "元"<<endl;
    }
    double Goods::fun(Goods p[3])
    {
    	for (int i = 0; i < 3; i++)
    	{
    		p[i].sum = p[i].quantity * p[i].price;
    		if (p[i].sum > 10)
    		p[i].sum=p[i].sum * 0.98;
    		cout << "货号" << p[i].num << "的销售总价为:" << p[i].sum << "元"<<endl;
    	}
    	total = p[0].sum + p[1].sum + p[2].sum;
    	return total;
    }
    int main()
    {
    	Goods seller[3] =
    	{
    		Goods(101,5,23.5),
    		Goods(102, 12, 24.56),
    		Goods(103,100,21.5)
    	};
    	Goods::fun(seller);
    	Goods::every();
    	return 0;
    }
    
    
    cs
    下一篇:没有了