求大神啊,帮忙修改下。这段程序各种错误啊。。。
#include <fstream.h>
#include <iomanip.h>
#include<iostream.h>
#include<string>
using namespace std;
class student {
? int id;
string name;
int age;
float score1,score2,score3;
? public:
? student (int nid, string nname, int nage,float s1, float s2,float s3)
? { id=nid;
name=nname;
Score1=s1;scpore2=s2;score3=s3;
}
? friend ostream &operator << (ostream &stream, student s);
};
ostream &operator<<( ostream &stream, student s)
{ int i,j;
? for(i=1;i<=ob.leg;i++)
stream<<"* ";
? stream<<endl;
for(i=2;i<ob.leg;i++)
{ for(j=1;j<=ob.leg;j++)
? if((j==1)||(j==ob.leg))
? stream<<"* ";
? else?
? stream<<" ";
? stream<<endl;
}
? for(i=1;i<=ob.leg;i++)
stream<<"* ";
? stream<<endl;
? return stream;
}
int main ()
{ struct student
{ int snum;
? char *name;
? float score[3];
? float avg;
};
? struct student s[5];
? int i;
? ofstream fout("STUD.REC");
? if(!fout)
? { cout<<"cannot open output file .\n"; return 1; }
? for(i=0;i<5;i++)
{ cout<<"\n输入第"<<i+1<<"号学生的学号:";
cin>>s[i].snum;
? cout<<" 输入学生的姓名:";
? s[i].name=new char[20];
cin>>s[i].name;
? cout<<" 输入三门课的成绩:";
? cin>>s[i].score[0]>>s[i].score[1]>>s[i].score[2];
s[i].avg=(s[i].score[0]+s[i].score[1]+s[i].score[2])/3;
fout<<s[i].snum<<' '<<s[i].name<<' '<<s[i].avg<<' ';
}
? fout.close ();
? ifstream fin("STUD.REC");
? if(!fin)
? { cout<<"cannot open input file .\n"; return 1; }
? struct student outs;
? outs.name=new char[20];
? for(i=0;i<5;i++)
{ fin>>outs.snum>>outs.name>>outs.avg;
cout<<"\n第"<<i+1<<"号学生的学号是:";
cout<<outs.snum;
? cout<<"\n 姓名是:";
cout<<outs.name;
? cout<<"\n 平均分成绩是:";
cout<<outs.avg<<endl;
}
? cout<<endl;
? fin.close();
? return 0;
}
[解决办法]
operator <<里面的ob是什么?我猜不出来
- C/C++ code
#include <fstream>#include <iomanip>#include<iostream>#include<string>using namespace std;class student{ int id; string name; int age; float score1,score2,score3;public: student (int nid, string nname, int nage,float s1, float s2,float s3) { id=nid; name=nname; score1=s1; score2=s2; score3=s3; } friend ostream &operator << (ostream &stream, student s);};ostream &operator<<( ostream &stream, student s){ int i,j; for(i=1; i<=ob.leg; i++) stream<<"* "; stream<<endl; for(i=2; i<ob.leg; i++) { for(j=1; j<=ob.leg; j++) if((j==1)||(j==ob.leg)) stream<<"* "; else stream<<" "; stream<<endl; } for(i=1; i<=ob.leg; i++) stream<<"* "; stream<<endl; return stream;}int main (){ struct student { int snum; char *name; float score[3]; float avg; }; struct student s[5]; int i; ofstream fout("STUD.REC"); if(!fout) { cout<<"cannot open output file .\n"; return 1; } for(i=0; i<5; i++) { cout<<"\n输入第"<<i+1<<"号学生的学号:"; cin>>s[i].snum; cout<<" 输入学生的姓名:"; s[i].name=new char[20]; cin>>s[i].name; cout<<" 输入三门课的成绩:"; cin>>s[i].score[0]>>s[i].score[1]>>s[i].score[2]; s[i].avg=(s[i].score[0]+s[i].score[1]+s[i].score[2])/3; fout<<s[i].snum<<' '<<s[i].name<<' '<<s[i].avg<<' '; } fout.close (); ifstream fin("STUD.REC"); if(!fin) { cout<<"cannot open input file .\n"; return 1; } struct student outs; outs.name=new char[20]; for(i=0; i<5; i++) { fin>>outs.snum>>outs.name>>outs.avg; cout<<"\n第"<<i+1<<"号学生的学号是:"; cout<<outs.snum; cout<<"\n 姓名是:"; cout<<outs.name; cout<<"\n 平均分成绩是:"; cout<<outs.avg<<endl; } cout<<endl; fin.close(); return 0;}
[解决办法]
看你的代码后想问你几个问题。为什么即定义class student又定义struct student??重复定义吗??
- C/C++ code
class student{}; struct student { int snum; char *name; float score[3]; float avg; };