//打印3个学生平均成绩以及最高成绩学生数据
/*以下程序只实现了打印3个学生平均成绩,我希望可以打印成绩最高的学生的一切数据,包括学号,姓名,三门成绩及平均成绩,可以在类里写函数实现吗?可以的话,这个函数要怎么写呢?求大神赐教哦~*/
#include"stdafx.h";
#include<iostream>
#include<cmath>
using namespace std;
class Student{
public:
void input();
void print();
float get_average();
private:
char num[8];
char name[8];
float score[3];
};
void Student::input()
{
cout<<"请输入学号:";
cin>>num;
cout<<"请输入姓名:";
cin>>name;
cout<<"请输入三门课程的成绩:";
for(int i=0;i<3;i++)
cin>>score[i];
}
float Student::get_average()
{
return (score[0]+score[1]+score[2])/3;
}
void Student::print()
{
cout<<get_average();
}
int main(int argc, char* argv[])
{
Student stu[3];
for(int i=0;i<3;i++)
{
stu[i].input();
}
for( i=0;i<3;i++)
{
stu[i].print();
cout<<" ";
}
system("pause");
return 0;
}
根据你的思路,不应该写在类里,因为你的类表示单个学生,而求学生成绩最大值不属于任何一个学生,而是一个总的任务。
非要作为成员函数也不是不可以,但是很牵强
int getmax(Student stu[], int n)
{
int x = 0;
for (int i = 1; i < n; i++)
{
if (stu[i].get_average() > stu[x].get_average()) x = i;
}
return x;
}
你可以写一个函数,在函数里,枚举学生成绩数组,然后更新最大值。这样就可以知道哪位学生成绩最高啦
主程序调用
int n = getmax(stu, 3);
cout << stu[n].name <<" "<< stu[n].num << " " << stu[n].get_average();
给你一个思路吧:
在计算平均分的同时,比较出最高平均分,然后打印这个学生的成绩。
这个可以通过类实现,但是没必要,也不规范,如果硬要做,可以重载<操作符来判断平均成绩的大小,进而输出他的各项信息