1:静态成员-计算平均成绩1
总时间限制: 10000ms 内存限制: 10000kB
描述
Student类包含私有数据成员学生姓名、成绩、总人数、总成绩;成员函数sum()计算总人数和总成绩;成员函数aver()计算n个学生的平均成绩。补充完成下列程序。
#include
using namespace std;
class Student //补充代码
int Student::sum_score=0;
int Student::count=0;
int main()
{
Student stu[5] ={Student("Ma",89),Student("Hu",90),Student("LU",95),
Student("Li",88),Student("Gao",75)};
for(int i=0;i<5;i++)
stu[i].sum();
cout<<"Average="<<Student::aver()<<endl;
}
输入
无
输出
Average=87.4
AC代码
#include<iostream>
#include<string.h>
using namespace std;
class Student
{
char name[20];
int score;
static int sum_score;
static int count;
public:
Student(const char *a,int c)
{
score=c;
strcpy(name,a);
count++;
}
void sum()
{
sum_score +=score;
}
static double aver()
{
return 1.0*sum_score/count;
}
};
int Student::sum_score=0;
int Student::count=0;
int main()
{
Student stu[5] ={Student("Ma",89),Student("Hu",90),Student("LU",95),
Student("Li",88),Student("Gao",75)};
for(int i=0;i<5;i++)
{
stu[i].sum();
}
cout<<"Average="<<Student::aver()<<endl;
}
2:友元函数-计算平均成绩2
总时间限制: 10000ms 内存限制: 10000kB
描述
Student类包含私有数据成员学生姓名、成绩。全局函数sum()计算总人数、总成绩;全局函数aver()计算n个学生的平均成绩(函数参数自己设定)。补充完成下列程序。
#include
using namespace std;
static int sum_score=0, count=0;
//补充代码
int main()
{
Student stu[5] ={Student("Ma",89),Student("Hu",90),Student("LU",95),
Student("Li",88),Student("Gao",75)};
for(int i=0;i<5;i++)
sum(stu[i]);
cout<<sum_score<<"," <<count<<endl;
cout<<"Average="<<aver()<<endl;
}
输入
无
输出
437,5
Average=87.4
AC代码
#include<iostream>
#include<string.h>
using namespace std;
static int sum_score=0, count=0;
class Student
{
char name[20];
int score;
public:
Student(const char*a,int b)
{
score=b;
strcpy(name,a);
count++;
}
friend void sum(Student& s);
};
void sum(Student& s)
{
sum_score +=s.score;
}
double aver()
{
return 1.0*sum_score/count;
}
int main()
{
Student stu[5] ={Student("Ma",89),Student("Hu",90),Student("LU",95),
Student("Li",88),Student("Gao",75)};
for(int i=0;i<5;i++)
{
sum(stu[i]);
}
cout<<sum_score<<"," <<count<<endl;
cout<<"Average="<<aver()<<endl;
}
3:类与基本类型的转化
总时间限制: 10000ms 内存限制: 65535kB
描述
定义一个Point类,有私有数据成员,double型变量x和y,定义相关构造函数,定义类型转化函数可将Point类对象转化为坐标距离原点距离(double型)并进行计算,主函数计算并显示两个Point对象的差绝对值。
输入
两组坐标
输出
两个坐标点距离原点距离差
样例输入
3 4
5 6
样例输出
2.81025
#include<iostream>
#include<math.h>
using namespace std;
class Point{
private:
double x,y;
public:
operator double()//隐式类型转换
{
return sqrt(x*x+y*y);
}
Point(double x,double y)
{
Point::x=x;
Point::y=y;
}
};
int main()
{
double a,b,c,d,len;
cin>>a>>b>>c>>d;
Point p1(a,b),p2(c,d);
len = p1-p2;
if(len<0) len = -len;
cout<<len<<endl;
return 0;
}
4:友元类
总时间限制: 10000ms 内存限制: 10000kB
描述
定义MyTime类,完成时间(包括私有成员小时、分钟、秒)的初始化;定义MyDate类,完成日期的初始化(包括私有成员年、月、日);且MyDate类是MyTime友元类。调用MyDate类的成员函数Display一次性输出日期和时间。
#include
using namespace std;
//补充代码
int main()
{
MyTime t(10,30,45);
MyDate d(4,20);
d.Diaplay(t);
}
输入
无
输出
2021/4/20 10:30:45
作为一个小five,我刚开始不会写,所以强行忽略题干强行写
代码如下
#include<iostream>
using namespace std;
class MyDate {
friend class MyTime;
private:
int month,day;
public:
MyDate(int m,int d) {
//year=y;
month=m;
day=d;
}
int output1()
{
cout<<"2021"<<"/"<<month<<"/"<<day<<" ";
}
};
class MyTime {
private:
int s,f,m;
public:
MyTime(int o,int p,int q) {
s=o;
f=p;
m=q;
}
int output2()
{
cout<<s<<":"<<f<<":"<<m<<endl;
}
};
int main() {
MyTime t(10,30,45);
MyDate d(4,20);
d.output1();
t.output2();
return 0;
}
但是!怎么可以这么堕落呢!我认真研究了一会儿,AC啦!
AC代码
#include<iostream>
using namespace std;
class MyTime;
class MyDate{
private:
int month,day;
public:
MyDate(int m,int d) {
MyDate::month=m;
MyDate::day=d;
}
void Diaplay(MyTime &);
};
class MyTime {
private:
int s,f,m;
public:
MyTime(int o,int p,int q) {
MyTime::s=o;
MyTime::f=p;
MyTime::m=q;
}
friend void MyDate::Diaplay(MyTime &);
};
void MyDate::Diaplay(MyTime &x)
{
cout<<"2021"<<"/"<<month<<"/"<<day<<" ";
cout<<x.s<<":"<<x.f<<":"<<x.m<<endl;
//注意这里打x.的时候不会弹出s、f、m,不用害怕
}
int main() {
MyTime t(10,30,45);
MyDate d(4,20);
d.Diaplay(t);
}