文件score.dat中保存的是若干名学生的姓名和C++课、高数和英语成绩。
(1)定义学生类,其中包含姓名、C++课、高数和英语成绩及总分数据成员,成员函数根据需要确定。
(2)读入学生的成绩,计算总分,用对象数组进行存储。
(1)定义学生类,其中包含姓名、C++课、高数和英语成绩及总分数据成员,成员函数根据需要确定。
(2)读入学生的成绩,计算总分,用对象数组进行存储。
(3)将没挂科的同学的信息保存到文件pass_score.dat中。
注意下静态变量和静态函数的用法,还有就是输入学生数目是如何确定的。。。
#include<iostream>
#include<fstream>
#include<cstdlib>
using namespace std;
class Student
{
private:
string name;
int cplus;
int math;
int english;
int sum;
static int num;
void Sum(){sum=cplus+english+math;}
public:
Student(){}
~Student()
{
// cout<<num<<endl;
num--;
}
string Name(){return name;}
int Cplus(){return cplus;}
int Math(){return math;}
int English(){return english;}
static int GetNum(){return num;}
friend istream& operator>>(istream& is,Student &ss)
{
is>>ss.name>>ss.cplus>>ss.math>>ss.english;
++num;
ss.Sum();
return is;
}
friend ostream&operator<<(ostream& os,const Student &ss)
{
os<<ss.name<<"\t"<<ss.cplus<<"\t"<<ss.math<<"\t"<<ss.english<<"\t"<<ss.sum;
return os;
}
};
int Student::num=0;
int main()
{
ifstream fin;
fin.open("score.txt");
if(!fin){cerr<<"文件未能打开。。";exit(1);}
Student score[200];
int i=0;
while(!fin.eof())fin>>score[i++];
fin.close();
ofstream fout("score2.txt");
for(int i=0;i<Student::GetNum();i++)
{
if(score[i].Cplus()>=60&&score[i].Math()>=60&&score[i].English()>=60)
fout<<score[i]<<endl;
}
fout.close();
return 0;
}