c++ 定义一个学生类,有学号、姓名、三门课程的成绩,求平均分 怎么破

#include <iostream>
using namespace std;
class Student
{
int num;
char name;
int a,b,c;
static float sum1,sum2,sum3;
static int count;
public:

void get()
{
cin>>num>>name>>a>>b>>c;
}
void total1()
{
sum1+=a;
count++;
}
static float average1()
{
return(sum1/count);
}
void total2()
{
sum2+=b;

}
static float average2()
{
return(sum2/count);
}
void total3()
{
sum3+=c;

}
static float average3()
{
return(sum3/count);
}
};
float Student::sum1=0;
float Student::sum2=0;
float Student::sum3=0;
int Student::count=0;
void main()
{ int n;
cout<<"请输入学生人数:";
cin>>n;
Student t[60];
for(int i=0;i<n;i++)
t[i].get();
for(int j=0;j<n;j++)
{
t[j].total1();
t[j].total1();
t[j].total1();
}

cout<<Student::average1()<<" "<<Student::average2()<<" "<<Student::average3()<<endl;
}

现在这样就可以啊 虽然不是太好

只不过统计的时候 需要分别调不同的函数 你调用一样的了

#include <iostream>
using namespace std;
class Student
{
int num;
char name;
int a,b,c;
static float sum1,sum2,sum3;
    static int count;
public:

void get()
{
cin>>num>>name>>a>>b>>c;
}
void total1()
{
sum1+=a;
count++;
}
static float average1()
{
return(sum1/count);
}
void total2()
{
sum2+=b;

}
static float average2()
{
return(sum2/count);
}
void total3()
{
sum3+=c;

}
static float average3()
{
return(sum3/count);
}
};
    float Student::sum1=0;
float Student::sum2=0;
float Student::sum3=0;
int Student::count=0;
int main()
{   int n;
    cout<<"请输入学生人数:";
cin>>n;
Student t[60];
for(int i=0;i<n;i++)
t[i].get();
for(int j=0;j<n;j++)
{
t[j].total1();
t[j].total2();//分别三个函数
t[j].total3();
}

cout<<Student::average1()<<"  "<<Student::average2()<<"  "<<Student::average3()<<endl;
}追问

不行啊

追答

你定义的name只有一个字符
如果你需要名字超过一个字符的话 那么需要定义成数组
比如
char name[20];

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-04-20

你好,

这个平均数的功能不要写在类里面,不是所有和类相关的操作都需要写在类里面。这个就不合适, 要就事论事。下面这段代码供你参考,谢谢。

#include <iostream>
#include <string>
#include <vector>

class Student
{
private:
int m_iID;
std::string m_strName;
float fCourse1;
float fCourse2;
float fCourse3;

public:

Student(int iD, const std::string& strName, float fC1, float fC2, float fC3)
:m_iID(iD), m_strName(strName), fCourse1(fC1),fCourse2(fC2),fCourse3(fC3)
{

}

float C1() const { return fCourse1; }
float C2() const { return fCourse2; }
float C3() const { return fCourse3; }
};

void main()
{
int iD;
std::string name;
int n;
float fC1, fC2, fC3;
std::vector<Student> Students;

std::cout << "Number of students:";
std::cin >> n;

std::cout << "name\t" << "iD\t" << "C1\t" << "C3\t" << "C3\t"<<std::endl;

for (int i = 0; i < n; i++)
{
std::cin >> name >> iD >> fC1 >> fC2 >> fC3;
Students.push_back(Student::Student(iD, name, fC1, fC2, fC3));
}

float sum1, sum2, sum3;
sum1 = sum2 = sum3 = 0;

for (int j = 0; j<n; j++)
{
sum1 += Students.at(j).C1() / n;
sum2 += Students.at(j).C2() / n;
sum3 += Students.at(j).C3() / n;
}

std::cout << sum1 << "  " << sum2 << "  " << sum3 << std::endl;
}