- /*
- * 程序的版权和版本声明部分
- * Copyright (c)2013, 烟台大学计算机学院学生
- * All rightsreserved.
- * 文件名称:score.cpp
- * 作 者: 王俊
- * 完成日期:2013 年3 月12 日
- * 版本号: v1.0
- * 输入描述:已经在程序中初始化
- * 问题描述:将学生成绩信息存储在结构体数组中,对结构体排序并输出
- * 输出:按C++降序和按学号升序排序后的学生成绩单
- */
- *程序代码:
#include <iostream> #include <fstream> using namespace std; struct Student { char num[13]; char name[10]; int cpp; int math; int english; int grade; }; int getData(Student s[]); void outputData(Student s[],int n); void sort(Student s[],int n); void listScholars(Student s[],int n); const int N=200; int main( ) { int stuNum; Student stu[N]; stuNum=getData(stu); sort(stu,stuNum); cout<<"按总成绩排序:"; outputData(stu,stuNum); listScholars(stu,stuNum); return 0; } int getData(Student s[]) { ifstream infile("score.txt",ios::in); if(!infile){ cerr<<"open error!"<<endl; exit(1); } int i=0; while(!infile.eof()) { infile>>s[i].num>>s[i].name>>s[i].cpp>>s[i].math>>s[i].english; s[i].grade=s[i].cpp+s[i].math+s[i].english; ++i; } infile.close(); return i; } void sort(Student s[],int n) { int i,j,m,k; Student t_stu; for(i=0; i<n-1; i++) { k=i; for(j=i+1; j<n; j++) if(s[j].grade>s[m].grade) m=j; t_stu=s[m]; s[m]=s[i]; s[i]=t_stu; } return; } void outputData(Student s[],int n) { for(int i=0; i<n; ++i) { cout<<s[i].num<<"\t"<<s[i].name<<"\t"<<s[i].cpp<<"\t"<<s[i].math<<"\t"<<s[i].english<<"\t"<<s[i].grade<<endl; } return; } void listScholars(Student s[],int n) { cout<<"获得奖学金同学有:"<<endl; int i=0,j=1; while (j<=30&&j<=n) { if (s[i].cpp>=60&&s[i].math>=60&&s[i].english>=60) { cout<<j<<'\t'<<s[i].name<<'\t'<<s[i].grade<<endl; j++; } i++; } }
运行结果:
结构体数组计算
最新推荐文章于 2021-05-25 20:54:04 发布