设计一个类来计算某个学生3门课的平均值,对学生的描述除了成绩之外,还有学生的姓名,编程显示5个学生的姓名和平均成绩,及总平均值,要求用到构造函数?
十分感谢!
#include <iomanip>
#include <iostream>
using namespace std;
class student
{
public:
student()
{
course1=0;
course2=0;
course3=0;
}
void Init(int j)
{
cout<<"请输入第"<<j+1<<"个学生的姓名: "<<endl;
cin.getline(name,20,'\n');
cout<<"请输入第"<<j+1<<"个学生的3门课程成绩: "<<endl;
cin>>course1>>course2>>course3;
cin.get();
cout<<endl;
}
float average()
{
return (course1+course2+course3)/3.0;
}
void display(float aver)
{
cout<<setiosflags(ios::left)<<setw(15)<<name<<setw(15)<< average()<<setw(15)<< aver<<endl;
}
private:
char name[20];
int course1;
int course2;
int course3;
};
int main()
{
student stu[4];
float aver=0.0; //总平均成绩
for(int i=0;i<4;i++)
{
stu[i].Init(i);
aver +=stu[i].average();
}
aver=aver/4;
cout<<setiosflags(ios::left)<<setw(15)<<"姓名 "<<setw(15)<<"个人平均成绩"<<setw(15)<<"总平均成绩"<<endl;
for( i=0;i<4;i++)
{
stu[i].display(aver);
}
return 1;
}
初学者,请多指教!!
谢谢,只是做了一些修改!
1>把for(int i=0;i<4;i++)改成了for(int i=0;i<=4;i++),要求显示5个学生的成绩和姓名;
2>把return 1改成了return 0或return ();方便进行屏幕输出!
谢谢指点!
改正后的程序如下:
#include <iomanip>
#include <iostream>
using namespace std;
class student
{
public:
student()
{
course1=0;
course2=0;
course3=0;
}
void Init(int j)
{
cout<<"请输入第"<<j+1<<"个学生的姓名: "<<endl;
cin.getline(name,20,'\n');
cout<<"请输入第"<<j+1<<"个学生的3门课程成绩: "<<endl;
cin>>course1>>course2>>course3;
cin.get();
cout<<endl;
}
float average()
{
return (course1+course2+course3)/3.0;
}
void display(float aver)
{
cout<<setiosflags(ios::left)<<setw(15)<<name<<setw(15)<< average()<<setw(15)<< aver<<endl;
}
private:
char name[20];
int course1;
int course2;
int course3;
};
int main()
{
student stu[4];
float aver=0.0; //总平均成绩
for(int i=0;i<=4;i++)
{
stu[i].Init(i);
aver +=stu[i].average();
}
aver=aver/5;
cout<<setiosflags(ios::left)<<setw(15)<<"姓名 "<<setw(15)<<"个人平均成绩"<<setw(15)<<"总平均成绩"<<endl;
for(int i=0;i<=4;i++)
{
stu[i].display(aver);
}
return 0;//屏幕输出,换成return 1,不进行屏幕输出
}
在C-Free 3.5中运行通过!