【问题描述】
设计一个日期类(Date),用来实现日期的操作。包括一个空构造函数,三个成员函数,其余所需自行决定。
用成员函数setDate()用来给Date类设置日期。
用成员函数isLeapYear()用来判断是否是闰年。
用成员函数getSkip(Date o)用来计算两个日期之间相差的天数。
【输入形式】
输入两个日期,输入格式参考样例。
【输出形式】
判断两个日期是否是闰年,以及两个日期的间隔天数,输出格式参考样例。
【样例输入】
2012 10 20
2017 11 07
【样例输出】
2012 is leap year.
2017 is not leap year.
The skip of two date is 1844.
注意:时间差始终为正数。
#include
using namespace std;
class Date
{
private:
int year;
int month;
int day;
public:
Date () {year=0,month=0,day=0;}
void setDate(int y,int m,int d)
{
year=y;
month=m;
day=d;
}
void isLeapyear()
{
if(year%400==0||(year%4==0&&year%100!=0))
cout<< year<<" is leap year."<<endl;
else cout<<year<<" is not leap year."<<endl;
}
int Skip()
{
int sum=0 ,i,j;
int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int b[12]={31,29,31,30,31,30,31,31,30,31,30,31};
for(i=0;i<month-1;i++)
{
if(year%400==0||(year%4==0&&year%100!=0))
sum+=b[i];
else
sum+=a[i];
}
for(j=0;j<year;j++)
{
if(j%400==0||(j%4==0&&j%100!=0))
sum+=366;
else sum+=365;
}
sum=sum+day;
return sum;
}
};
int main()
{
int year1,month1,day1;
int year2,month2,day2;
cin>>year1>>month1>>day1;
cin>>year2>>month2>>day2;
Date a,b;
a.setDate(year1,month1,day1);
b.setDate(year2,month2,day2);
a.isLeapyear();
b.isLeapyear();
int n=a.Skip()-b.Skip();
if (n > 0)
cout << "The skip of two date is "<<n<<".";
else cout << "The skip of two date is "<<-n<<".";
return 0;
}
【问题描述】
先定义一个能描述平面上一条线段的类Beeline,包含私有数据成员为线段两个端点的坐标(X1,Y1,X2,Y2),在类中定义形参默认值为0的构造函数,计算线段长度的公有成员函数Length(),显示线段两个端点坐标的公有成员函数show()。然后再定义一个能描述平面上三角形的类Triangle,其数据成员为用Beeline定义的对象line1,line2,line3。在类中定义的构造函数要能对对象成员进行初始化。再定义计算三角形面积的函数Area()及显示三条边端点坐标及面积的函数Print(),Print()函数中可调用show()函数显示三条边两端点坐标。
【输入形式】
输入三角形三个顶点的坐标(x1,y1)、(x2,y2)、(x3,y3)。
其中 -100 <= x1,x2,x3,y1,y2,y3 <= 100,且为整数。
在主函数中创建类对象tri(x1,y1,x2,y2,x3,y3),对应line1(x1, y1, x2, y2),line2(x2,y2,x3,y3),line3(x3,y3,x1,y1)。
【输出形式】
调用Print()函数,将三角形三条边的端点坐标及面积。面积保留两位小数。
具体格式见样例。
【样例输入】
0 0
0 4
3 0
【样例输出】
Three edges' points are listed as follows:
(0, 0),(0, 4)
(0, 4),(3, 0)
(3, 0),(0, 0)
The area of this triangle is: 6.00.
【提示】
1.严格按照输出样例输出,建议复制。
2.计算面积建议用海伦公式。
3.严格控制保留2位小数。
4.如果没有严格使用类,得分为0。
#include
#include
#include
using namespace std;
class Beeline
{
private:
double X1, Y1, X2, Y2;
public:
Beeline(double x1 = 0, double y1 = 0, double x2 = 0, double y2 = 0)
{
X1 = x1;
Y1 =y1;
X2 = x2;
Y2 = y2;
}
double Length()
{
return sqrt((X1 - X2) * (X1 - X2) + (Y1 - Y2) * (Y1 - Y2));
}
void Show()
{
cout << "(" << X1 << "," << Y1 << "),(" << X2 << "," << Y2 << ")" << endl;
}
};
class Triangle
{
private:
Beeline line1, line2, line3;
public:
Triangle(double x1, double y1, double x2, double y2, double x3, double y3) :line1(x1, y1, x2, y2), line2(x2, y2, x3, y3), line3(x3, y3, x1, y1)
{}
double Area()
{
double a = (line1.Length() + line2.Length() + line3.Length()) / 2;
return sqrt(a * (a - line1.Length()) * (a - line2.Length()) * (a - line3.Length()));
}
void Print()
{
cout << "Three edges' points are listed as follows:" << endl;
line1.Show();
line2.Show();
line3.Show();
cout << fixed << setprecision(2) << "The area of this triangle is: " << Area() << ".";
}
};
int main()
{
double x1, x2, x3, y1, y2, y3;
cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
Triangle tri(x1, y1, x2, y2, x3, y3);
tri.Print();
return 0;
}
【问题描述】定义一个学生成绩类Score,描述学生的私有数据成员为学号(No)、姓名(Name[8])、数学(Math)、物理(Phi)、英语(Eng)。定义能输入学生成绩的公有成员函数Input()、能计算学生总分的公有成员函数Sum()、能显示输出学生成绩的公有成员函数Show()。
【输入形式】输入的顺序为学号,姓名,数学成绩,物理成绩和英语成绩。
【输出形式】输出各信息,见样例。
【样例输入】10000 aaa 11 22 33
【样例输出】
stu:10000 aaa score is:
Math:11
Phi:22
Eng:33
sum:66
【样例说明】注意输入和输出不能出现中文和中文标点,并且有空格的数据间只有一个空格。
【评分标准】正确输出即可通过,请上传源文件,名称8-3-(2).cpp
#include
#include
using namespace std;
class Score
{
private:
long No;
char Name[8];
double Math,Phi,Eng;
public:
Score(long no,char name[])
{
No=no;
strcpy(Name,name);
}
void Input(double m,double p,double e)
{
Math=m;
Phi=p;
Eng=e;
}
double sum()
{
return Math+Phi+Eng;
}
void show()
{
cout << "stu:" << No << " " << Name << " score is:" << endl;
cout << "Math:" << Math << endl;
cout << "Phi:" << Phi << endl;
cout << "Eng:" << Eng << endl;
cout << "sum:" << sum() << endl;
}
};
int main()
{
long no ;char name[8]={0};
double math,phi,eng;
cin>>no>>name>>math>>phi>>eng;
Score a(no,name);
a.Input(math,phi,eng);
a.sum();
a.show();
return 0;
}
【问题描述】定义学生成绩类Score,其私有数据成员有学号、姓名、物理、数学、外语、平均成绩。补全Score类及主函数,使得程序能在一行中一次输出该生的学号、姓名、物理、数学、外语、平均成绩。
【输入形式】学生的学号、姓名、物理成绩、数学成绩、外语成绩。
【输出形式】除了输入的所有基本信息,还应包括计算的平均成绩。
【样例输入】
081531 WangXiaoming 100 82 99
【样例输出】
081531 WangXiaoming 100 82 99 93.6667
【样例说明】输出数据间使用空格。
【评分标准】 注意补全相关的内容,使程序输出正确
#include
#include
using namespace std;
class Score {
private:
string id,name;
int phy, math, eng;
public:
Score(string i, string n, int p, int m, int e)
{
id = i; name = n; phy = p; math = m; eng = e;
}
float Average()
{
return (phy + math + eng) / 3.0;
}
void Print()
{
cout << id << " " << name << " " << phy << " " << math << " " << eng << " " << Average();
}
};
int main() {
string id, name;
int phy, math, eng;
cin >> id >> name >> phy >> math >> eng;
Score sco(id, name, phy, math, eng);
sco.Average();
sco.Print();
return 0;
}
【问题描述】设计学生成绩类Score。在主函数中定义学生成绩对象数组s[]。用Sum()计算每个学生的总成绩、用Show()显示每个学生的成绩。增加静态成员函数getAvg(),用于返回学生的总平均分。通过增加合适的成员、修改成员函数等完成这一功能。
【输入形式】
包含一组测试数据。第一行输入一个整数n(1<=n<=100)。
接下来n行。每行先输入一个整数op:
当op==1时,输入x, y, z。代表输入一位新同学i(i从1开始编号)的语文、数学、英语成绩,无需输出。
当op==2时,输入i,输出第i同学的总成绩。数据保证这位同学的成绩已经录入。
当op==3时,输入i,依次输出第i同学的语文数学英语成绩,成绩之间用空格隔开。
当op==4时,输出当前已经录入学生的总平均分,结果保留两位小数。
(1<=n<=100, 1<=id<=10, 1<=op<=3, 0<=x,y,z<=100,全部输入都为整型数)
【输出形式】
当op==2,3,4时,输出所求答案,每个答案占一行。
【样例输入】 【对应样例输出】
10
1 90 85 90
1 80 90 75
2 1 265
3 2 80 90 75
4 255.00
1 80 80 85
1 50 60 65
1 30 90 75
3 5 30 90 75
4 225.00
注意输入之间会有一些输出,但测试只看cout结果。
#include
#include
#include
#include
using namespace std;
class Score {
private:
int Chinese, Math, English;
static int TotalScore;
static int TotalStudent;
public:
Score() {}
void setScore (int c, int m, int e) {
Chinese = c;
Math = m;
English = e;
TotalScore += c + m + e;
TotalStudent++;
}
int Sum() {
return (Chinese + Math + English);
}
void Show() {
cout << Chinese << " " << Math << " " << English << endl;
}
double static getAve() {
return (double)TotalScore / TotalStudent;
}
};
int Score::TotalScore = 0;
int Score::TotalStudent = 0;
int main() {
int n, op, i, c, m, e;
cin >> n;
int id = 1;
Score sco[11];
while(n--) {
cin >> op;
if(op == 1) {
cin >> c >> m >> e;
sco[id++].setScore(c, m, e);
} else if(op == 2) {
cin >> i;
cout << sco[i].Sum() << endl;
} else if(op == 3) {
cin >> i;
sco[i].Show();
} else {
cout << fixed << setprecision(2) << Score::getAve() << endl;
}
}
return 0;
}