实验目的:学会利用结构体
实验内容:所有同学的成绩表等用结构体做
* 程序头部注释开始
* 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生 * All rights reserved. * 文件名称: * 作 者:冯珍珍 * 完成日期: 2011年 12 月 18日 * 版本号: #include <fstream> #include<iostream> #include <iomanip> #include <string> using namespace std; struct student { char num[12]; string name; int grade[3]; int sum; }; int main( ) { void open_file(student *p); //从文件中读取数据 void select_score(student *p); //对数据进行排序 void show_score(student *p);//输出降序后的数据 void school_reward(student *p);//输出获得奖学金的同学名单。 student student[180],score,*p; p=student; open_file(p); select_score(p); cout<<"学号为"<<setw(16)<<"人名"<<setw(8)<<"c++"<<setw(8)<<"高数"<<setw(8)<<"英语"<<setw(8)<<"总成绩"<<endl; show_score(p); cout<<"获得奖学金的同学名单为:"<<endl; school_reward(p); return 0; } //定义从文件输入函数; void open_file(student *p) { int j; ifstream infile("score.txt",ios::in); if(!infile) { cerr<<"open error!"<<endl; exit(1); } for(j=0;j<180;j++) { infile>>(p+j)->num>>(p+j)->name>>(p+j)->grade[0]>>(p+j)->grade[1]>>(p+j)->grade[2];//读入学生成绩; (p+j)->sum=((p+j)->grade[0]+(p+j)->grade[1]+(p+j)->grade[2]); } infile.close(); } //定义函数; void show_score(student *p) { for(int j=0;j<180;j++) { cout<<(p+j)->num<<" "<<setw(8)<<(p+j)->name<<setw(8)<<(p+j)->grade[0] <<" "<<(p+j)->grade[1]<<" "<<(p+j)->grade[2]<<"\t"<<(p+j)->sum<<endl; } cout<<endl; } //定义排序函数; void select_score(student *p) { int i,j; student score; for(i=0;i<179;i++) for(j=0;j<179-i;j++) { if((p+j)->sum<(p+j+1)->sum) { score=*(p+j); *(p+j)=*(p+j+1); *(p+j+1)=score; } } } //找出得奖学金的学生; void school_reward(student *p) { for(int j=0;j<30;j++) { if((p+j)->grade[0]>=60&&(p+j)->grade[1]>=60&&(p+j)->grade[2]>=60) { if(j%5==0) cout<<endl; cout<<setw(8)<<(p+j)->name<<" "<<setiosflags(ios::left); } else j--; } }
上级感言:这个程序对我来说真很难;