运用结构体对数据进行处理
源程序:
#include<iostream>
#include<fstream>
#include<string>
#include<iomanip>
using namespace std;
void show_score(int num);
void cin_score(int num);
void get_max(int num);
void array_px(int num);
struct Student
{
char num[12];
string name;
float grade[4];
};
Student score[180];
int main()
{
int num=180;
cin_score(num);
array_px(num);
cout<<"排序之后的成绩为:"<<endl;
show_score(num);
get_max(30);
return 0;
}
void cin_score(int num)
{
int j;
ifstream infile("score.txt",ios::in);
if(!infile)
{
cout << "open error!!" << endl;
exit(1);
}
for(j=0; j<num; j++)
{
infile >> score[j].num >> score[j].name >> score[j].grade[0] >> score[j].grade[1] >> score[j].grade[2];
score[j].grade[3] = score[j].grade[0] + score[j].grade[1] + score[j].grade[2];
}
infile.close();
}
// 定义输出函数
void show_score(int num)
{
int j;
cout<<"学号"<<'\t'<<'\t'<<setw(9)<<"姓名"<<setw(7)<<"C++"<<setw(8)<<"高数"<<setw(8)<<"英语"<<setw(8)<<"总分"<<endl;
for(j=0; j<180; j++)
{
cout<<score[j].num<<" "<<setw(9)<<score[j].name<<": "<<score[j].grade[0]<<" "
<<"\t"<<score[j].grade[1]<<"\t"<<score[j].grade[2]<<"\t"<<score[j].grade[3]<<endl;
}
cout << endl;
}
// 定义排序函数
void array_px(int num)
{
int i,j,a;
for(i=0; i<num - 1; i++)
{
for(j=0; j < num - 1; j++)
{
if(score[j].grade[3] <= score[j+1].grade[3])
{
a = score[j+1].grade[3];
score[j+1].grade[3] = score[j].grade[3];
score[j].grade[3] = a;
}
}
}
}
// 找出得奖学金的学生
void get_max(int num)
{
int i;
cout<<"*********获得奖学金的同学是**********"<<endl;
for(i=0; i<num; i++)
{
if(score[i].grade[0]>=60)
if(score[i].grade[1]>=60)
if(score[i].grade[2]>=60)
{
cout<<setw(2)<<i+1<<setw(8)<<score[i].name;
cout<<endl;
}
}
}
十七周实验
最新推荐文章于 2024-09-23 19:18:08 发布