[cpp] /* 【項目3-用結構體數組作計算】接項目2, * Copyright (c)2013, 煙台大學計算機學院學生 * All rightsreserved. * 文件名稱:score.cpp * 作 者:蛋蛋 * 完成日期:2013 年3 月13 日 * 版本號: v1.0 * 輸入描述: * 問題描述:(1)從文件中讀出數據,存放到你定義的結構體數組中,即項目2(1); (2)求出每名同學的總分(可以在讀入過程中“順便”計算); (3)按總分排序(降序);www.2cto.com (4)輸出排序後的成績單; (5)有30名同學可以獲得獎學金,規則是總分高者優先,有掛科不能得獎學金。請輸出可以得獎學金同學的名單。 (6)選做:統計各門課及總分的平均成績、最高和最低成績、標准偏差,並輸出。 建議做兩個版本:(1)所有功能全在main()函數中;(2)用自定義函數實現各任務 * 輸出:讀取後的的獲得獎學金學生名單及成績單 * 操作感悟:還是讀取失敗,完全不懂呢,找不到.dat呢5555 */ #include <iostream> #include <fstream> using namespace std; struct Student { char num[12]; char name[12]; int cpp; int math; int english; int score; }; const int N=200; int main( ) { int i, stuNum=0; Student stu[N]; ifstream infile("score.txt",ios::in); //以輸入的方式打開文件 if(!infile) //測試是否成功打開 { cerr<<"open error!"<<endl; exit(1); } i=0; while(!infile.eof()) { infile>>stu[i].num>>stu[i].name>>stu[i].cpp>>stu[i].math>>stu[i].english; stu[i].score=stu[i].cpp+stu[i].math+stu[i].english; ++stuNum; ++i; } infile.close(); Student t; for(i=0;i<stuNum-1;i++){ for(int j=0;j<stuNum-i-1;j++){ if(stu[j].score<stu[j+1].score){ t=stu[j];stu[j]=stu[j+1];stu[j+1]=t; } }} for(i=0; i<stuNum; ++i) { cout<<stu[i].num<<"\t"<<stu[i].name<<"\t"<<stu[i].cpp<<"\t"<<stu[i].math<<"\t"<<stu[i].english<<"\t"<<stu[i].score<<endl; } cout<<"獲得獎學金的有以下同學"<<endl; if(stu[i].cpp>=60&&stu[i].math>=60&&stu[i].english>=60){ int j=0; www.2cto.com while(j<30){ cout<<stu[i].num<<"\t"<<stu[i].name<<"\t"<<stu[i].cpp<<"\t"<<stu[i].math<<"\t"<<stu[i].english<<"\t"<<stu[i].score<<endl; j++; } i++; } return 0; }