📄 912.cpp
字号:
#include<fstream.h>
#include<iomanip.h>
const int N=5;
class student
{
public:
void input(void);
void sta(void);
float get_av(void);
int get_no(void);
const char* get_na(void);
void display(void);
private:
int sno;
char name[20];
int score[3];
float aver;
};
void student::input(void)
{
int i;
cout<<"请输入学生的信息:"<<endl;
cin>>sno>>name;
for(i=0;i<3;i++)
cin>>score[i];
}
void student::sta(void)
{
int i;
float sum;
for(i=0,sum=0;i<3;i++)
sum+=score[i];
aver=sum/3;
}
float student::get_av(void)
{
return(aver);
}
int student::get_no(void)
{
return(sno);
}
const char* student::get_na(void)
{
return(name);
}
void student::display(void)
{
int i;
cout<<"学号:"<<sno<<endl;
cout<<"姓名:"<<name<<endl;
cout<<"成绩:";
for(i=0;i<3;i++)
cout<<setw(3)<<score[i];
cout<<endl<<"平均成绩:"<<aver<<endl;
}
int main()
{
ifstream file1;
ofstream file2;
int i,j,n,flag;
student a[N],t;
file1.open("stud.dat",ios::in|ios::binary);//二进制方式
if(!file1)
{
cerr<<"文件打开失败!"<<endl;
return(1);
}
file2.open("sort.dat",ios::out|ios::binary);//二进制方式
if(!file2)
{
cerr<<"文件打开失败!"<<endl;
return(1);
}
for(i=0;!file1.eof()&&i<N;i++)
file1.read((char*)(a+i),sizeof(student));
n=i;
for(i=0;i<n-1;i++)
{
for(j=i+1,flag=i;j<n;j++)
if(a[flag].get_av()>a[j].get_av())
flag=j;
if(flag!=i)
{
t=a[i];
a[i]=a[flag];
a[flag]=t;
}
}
file2.write((char*)a,sizeof(student)*n);
file1.close();//关闭文件
file2.close();//关闭文件
return(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -