[cpp] */ * 程序的版權和版本聲明部分 *Copyright (c)2013, 煙台大學計算機學院學生 * All rightsreserved. *文件名稱: array.cpp * 作 者:楊紹寧 * 完成日期: 2012 年3 月13 日 * 版本號: v1.0 * * 輸入描述:已經在程序初始化中 *問題描述:將學生成績信息存儲在結構體數組中,對結構體並輸出排序 *輸出:按C++降序和按學號升序排列後的學生成績單 */ #include <fstream> //操作文件必寫 #include <iostream> using namespace std; struct Student { char num[300]; char name[300]; int cpp; int math; int english; int score; }; int main() { struct Student student[300]; int num=0,i,j; Student t[1]; ifstream infile("score.txt",ios::in); if(!infile){ cout<<"open error"<<endl; exit(1); } while(!infile.eof())//當文件沒有達到結尾的時候,繼續讀入。 { infile>>student[num].num>>student[num].name>>student[num].cpp>>student[num].math>>student[num].english; ++num; } infile.close(); for(i=0;i<num;i++){ student[i].score=student[i].cpp+student[i].math+student[i].english; } for(i=0;i<num;i++){ for(j=0;j<num-i;j++) if(student[j].score<student[j+1].score){ t[0]=student[j]; student[j]=student[j+1]; student[j+1]=t[0]; } } int n; for(i=0;i<num;i++){ if(student[i].cpp>=60&&student[i].math>=60&&student[i].english>=60){ ++n; } } for(n=0;n<=30;n++) cout<<student[n].name<<" "; return 0; } 結果: