2013第二周上机任务项目三(用结构体数组做计算)
/* * Copyright (c) 2013, 烟台大学计算机学院 * All rights reserved. * 文件名称:test.cpp * 作者:樊露露 * 完成日期:2013 年3月8日 * 版本号:v1.0 * * 输入描述:无 * 问题描述:用结构体数组做计算 * 程序输出:* 问题分析: * 算法设计:略 */ #include<iostream>#include <fstream>using namespace std;struct Student{ char num[13]; char name[20]; int cpp; int math; int english; int score;};void sort(Student [],int );void output(Student [],int ); void money(Student [],int );int main(){ int stuNum=0,i; struct Student student[200]; ifstream infile("score.txt",ios::in); if(!infile){ cerr<<"open error!"<<endl; exit(1); } while(!infile.eof())//当文件没有达到结尾的时候,继续读入。 { infile>>student[stuNum].num>>student[stuNum].name>>student[stuNum].cpp>>student[stuNum].math>>student[stuNum].english; ++stuNum; } infile.close(); for(i=0;i<stuNum;i++){ student[i].score=student[i].cpp+student[i].english+student[i].math; } cout<<"获得奖学金的学生为:"<<endl; money(student,stuNum); cout<<endl; cout<<"按照总分降序排序:"<<endl; sort(student,stuNum); output(student,stuNum); return 0;}void sort(Student student[],int stuNum){ int i,j; struct Student a[1]; for(i=0;i<stuNum;i++){ for(j=0;j<stuNum-1;j++) if(student[j].score<student[j+1].score){ a[0]=student[j]; student[j]=student[j+1]; student[j+1]=a[0]; } } return ;}void output(Student student[],int stuNum){ int i; for(i=0;i<stuNum;i++){ cout<<student[i].num<<" "<<student[i].name<<" "<<student[i].cpp<<" "<<student[i].math<<" "<<student[i].english<<" "<<student[i].score<<endl; } return ;}void money(Student student[],int stuNum){ int i,num; sort(student,stuNum); for(i=0;i<stuNum;i++){ if(student[i].cpp>60&&student[i].english>60&&student[i].math>60) num++; } for(num=0;num<=30;num++){ cout<<student[num].name<<" "; } return ; }