题目描述
为向量1题目中实现的CVector类增加成员函数float Average(),计算n维向量的平均值并返回。
定义CStudent类,私有数据成员为:
string name; // 姓名
CVector score; // n个成绩
(1)添加构造函数,用虚参name1、n1、数组a1初始化CStudent类对象。
(2)添加输出函数,按样例格式输出CStudent对象值。
主函数输入数据,测试CStudent对象。
输入
输入多行,每行格式为:学生姓名 科目n n个成绩
输出
对每行测试数据,生成学生对象,输出如下数据:
学生姓名 n个成绩 成绩的平均值(保留2位小数)
输入样例
wangwu 5 90 80 70 100 90
lisi 3 100 90 100
输出样例
wangwu 90 80 70 100 90 86.00
lisi 100 90 100 96.67
#include <iostream>
#include <iomanip>
using namespace std;
class cstudent;
class cvector
{
int* data;
int n;
public:
cvector()
{
n = 5;
data = new int[5]{ 0,1,2,3,4 };//记得new
}
cvector(int n1, int* a)
{
n = n1;
data = new int[n]; //记得new
for (int i = 0; i < n; i++)
*(data + i) = *(a + i); //新申请空间,一个一个复制
}
void print()
{
for (int i = 0; i < n; i++)
{
cout << *(data + i);
if (i != n - 1) //最后一个元素不需要空格
cout << ' ';
}
}
~cvector()
{
delete[]data;
}
float average()
{
float sum = 0;
for (int i = 0; i < n; i++)
sum += *(data + i);
return sum / n;
}
};
class cstudent
{
string name;
cvector score;
public:
cstudent(string name1, int n1, int* a1) :score(n1, a1)//初始化score
{
name = name1;
}
void print()
{
cout << name << " ";
score.print();
cout << fixed << setprecision(2) << score.average() << endl;
}
};
int main()
{
string name;
while (cin >> name) //输入不确定数量的数据
{
int n;
cin >> n;
int* score = new int[n];
for (int i = 0; i < n; i++)
cin >> *(score + i);
cstudent stu(name, n, score);
stu.print();
}
}