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;
}

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()...

C++:输入3位学生3门课(语文、英语、数学)的成绩,找出总分最高的分数所...
double a = s[1][4]=三门成绩相加 同上操作学生2,3得到成绩之和b,c 然后定义一个temp比较学生的成绩找出最大的那一个 如果学生多于3 人的话 可以用两个for循环嵌套的模式找出最大的一个 之后输出就Ok 了 。程序还得自己动手写才会有提高,有了思路之后,自己试一试。

...若干个学生的数据,包括学号,姓名和三门课程的成绩;
int n){for (int i = 0; i < n; i++){cout << "输入第" << i + 1 << "个学生的学号:";cin >> s[i].num;cout << "输入第" << i + 1 << "个学生的姓名:";cin >> s[i].name;s[i]

...学生的数据包括学号,姓名,及三门课成绩,总,平均。
int i;printf("请输入10名学生的学号、姓名、及三门成绩:");for(i=0;i<10;i++)printf("学号:%d 姓名:%s 成绩:%d %d %d 平均成绩:%d\\n",person[i]->number,person[i]->name[20],person->score[0],person->score[1],person->score[2],person->score[3]);} ...

录入5个学生3门课的成绩,然后求班级每门课的平均成绩 用C++
{ return((x+y+z+m+n)\/5); \/\/求平均值的函数 } void main(){ int a[5][3]={0}; \/\/定义一个数组存入成绩 int chinese=0; \/\/定义语文成绩 int math=0; \/\/定义数学成绩 int english=0; \/\/定义英语成绩 cout>>"请依次输入5个学生的语文,数学,英语成绩">>endl;for(...

用c++编写程序,求编写平均值函数求学生三门课成绩的平均成绩。
float agv(float a,float b, float c){ float d;d=(a+b+c)\/3;return d;}

C语言编程,求出某学生期末三门课程的总分及平均分
程序如下:include"stdio.h"int main (void){int a,b,c;\/\/定义三个变量啊a,b,c分别存放三门课的成绩double sum,ave;\/\/定义sum和ave分别存放三门成绩的和与平均值printf("请输入三门课程的成绩a= b= c= ");scanf("%d%d%d",&a,&b,&c);sum=a+b+c;\/\/求三门课程的和ave=(a+...

C++。编程题,题目如下。
要求从键盘输入的学生数据用一个函数实现,并存入文件,用一个函数打开此文件后,求出各位同学的平均分,输出函数可以输出所有同学的成绩表(包括每个学生的学号、姓名、三门成绩及平均分数)也可以输出平均分在前3名的学生姓名及平均分。主函数可以方便地调用以上函数。 C++形式如下:#include "stdio.h"main(){} 请...

...名学生的姓名和3门课成绩并求他们的总分和平均分,并按格式输出(用C+...
cout<<"请输入第"<<i+1<<"个学生的姓名:";cin>>s[i].name;cout<<"数学成绩:";cin>>s[i].math;cout<<"物理成绩:";cin>>s[i].physics;cout<<"化学成绩:";cin>>s[i].chemstry;sum[i]=s[i].math+s[i].physics+s[i].chemstry;average[i]=sum[i]\/3;} cout<<"***"<<...

...每个学生的数据包括学号、姓名、三门课的成绩。
cout<<"第"<<i+1<<"个学生学号:"; cin>>s[i].number; cout<<"第"<<i+1<<"个学生姓名:"; cin>>s[i].name; cout<<"第"<<i+1<<"个学生成绩:"; cin>>s[i].fen[0]>>s[i].fen[1]>>s[i].fen[2];...

相似回答