1.设计一个表示点的类point,内含私有成员变量x,y表示点的坐标。再设计一个独立函数double distance(point m,point n); 来计算两点距离。
#include<iostream>
#include<math.h>
using namespace std;
class point
{
private:int x, y;
public:void setpoint(int a, int b){x = a;y = b;}int getx(){return x;}int gety(){return y;}
};
double distance(point m,point n)
{return sqrt((m.getx() - n.getx()) * (m.getx() - n.getx()) + (m.gety() - n.gety()) * (m.gety() - n.gety()));
}
void main()
{point p1, p2;p1.setpoint(2, 3);p2.setpoint(3, 4);cout << distance(p1, p2) << endl;
}
(1)我们首先要知道两点之间的距离的计算公式,这个就要用到我们的sqrt函数,这个库函数的使用就要包含到对应的头文件;
(2)我们一般是把变量设置为私有的,函数定义为共有的,私有的变量我们无法直接进行使用,因此我们要借助对应的函数进行间接使用;
(3)我们定义distance函数用来求两点之间的距离,它的参数是两个类,我们需要借助函数调用对应的横坐标和纵坐标;
(4)我们通过自定义函数setpoint函数,把我们输入的坐标值赋值给对应的私有变量x,y;
(5)因为我们无法直接使用x,y这些私有的变量,我们需要自定义函数getX,getY返回对应的横坐标和纵坐标;
(6)最后我们依然是通过distance函数打印输出对应的距离;
2.建立一个对象数组,内放5个学生的(姓名,成绩)。设立一个函数max,在max函数中找出5个学生的最高成绩者,并输出其姓名和成绩。
#include<iostream>
#include<string>
using namespace std;
class student
{
private:string name;double mark;
public:void setstudent(string name,double mark){this->name = name;this->mark = mark;}string getname(){return name;}double getmark(){return mark;}
};
void max(student ss[], int n)
{double maxmark = -1;string maxname = "";int i = 0;for (i = 0; i < n; i++){if (ss[i].getmark() > maxmark){maxmark = ss[i].getmark();maxname = ss[i].getname();}}cout << maxname << "获得最高分:" << maxmark << endl;
}
void main()
{student ss[5];ss[0].setstudent("jack", 90);ss[1].setstudent("helen", 91);ss[2].setstudent("wangming", 92);ss[3].setstudent("Micle", 94);ss[4].setstudent("Aric", 98);max(ss, 5);
}
(1)这个地方,我们需要定义一个数组,而且是我们创建的student类型的,为每一个类的成员设置名字和分数;
(2)我们的变量设置为私有的,函数设置为公有的,我们定义了setstudeny函数,又来接受传递的名称和分数,然后就定义getx,gety函数得到对应的名称和分数的返回值;
(3)我们在类的外面定义求距离的函数,利用sqrt函数求两个点之间的距离,这样我们需要包含对应的头文件;
(4)我们定义的setstudent函数的参数和我们定义的变量一样,所以我们使用this指针;
(5)我们定义一个max函数,用来计算最高分和对应的名字,首先初始化姓名(空字符)和分数的初始值-1,利用循环,找出最大值,最后打印最大值和对应的名字。