♠ 问题描述:总成绩排序
有一学生成绩表,包括学号、姓名、3门课程(数学、物理、英语)成绩。请按如下规则排序:首先按总成绩升序排序;若总成绩相同,则按学号升序排序。
♠ 输入:
首先输入一个整数n,表示学生人数;
然后输入n行,每行包含一个学生的信息:学号(12位)、姓名(不含空格且不超过20位),以及3个整数,表示3门课成绩,数据之间用空格隔开。
这些数据首先通过键盘键入,然后存入到名字为in.dat的磁盘文件。
文件in.dat中要求n不小于5,即至少处理5个学生的信息,且要求至少有两名同学的总成绩是相同的。
c++总成绩排序
答案:1 悬赏:20 手机版
解决时间 2021-02-23 11:17
- 提问者网友:聂風
- 2021-02-22 15:59
最佳答案
- 五星知识达人网友:妄饮晩冬酒
- 2021-02-22 16:17
#include#includeusing namespace std;struct student{ char szName[100]; float mathScore; // 数学成绩 float englishScore; // 英语成绩 float comPuterScore; // 计算机成绩 float javaScore; // java成绩 float htmlScore; // html成绩 float totalSocre; // 总分 // 等号重载 student student::operator=(student &st) { sprintf(szName, st.szName); mathScore = st.mathScore; englishScore = st.englishScore; comPuterScore = st.comPuterScore; javaScore = st.javaScore; htmlScore = st.htmlScore; totalSocre = st.totalSocre ; return *this; }};int main(){ cout << "请输入学生的个数:" << endl; int stuCount = 0; cin >> stuCount; student stuArray[100]; cout << setw(10) << "姓名:" << setw(10) << "数学成绩" << setw(10) << "英语成绩" << setw(10) << "计算机成绩" << setw(10) << "java成绩" << setw(10) << "html成绩" << endl; for (int i = 0; i < stuCount; i++) { cin >>stuArray[i].szName >> stuArray[i].mathScore >> stuArray[i].englishScore >> stuArray[i].comPuterScore >> stuArray[i].javaScore >> stuArray[i].htmlScore; stuArray[i].totalSocre = stuArray[i].mathScore + stuArray[i].englishScore + stuArray[i].comPuterScore + stuArray[i].javaScore + stuArray[i].htmlScore; } // 排序 for (int i = 0; i < stuCount; i++) { for (int j = 0; j < stuCount - i -1; j++) { if (stuArray[j + 1].totalSocre < stuArray[j].totalSocre) { student stu = stuArray[j]; stuArray[j] = stuArray[j + 1]; stuArray[j + 1] = stu; } } } // 打印 cout << setw(10) << "姓名:" << setw(10) << "数学成绩" << setw(10) << "英语成绩" << setw(10) << "计算机成绩" << setw(10) << "java成绩" << setw(10) << "html成绩" << setw(10) << "总成绩"<< endl; for (int i = 0 ; i < stuCount; i ++) { cout << setw(10) << stuArray[i].szName << setw(10) << stuArray[i].mathScore << setw(10) << stuArray[i].englishScore << setw(10) << stuArray[i].comPuterScore << setw(10) << stuArray[i].javaScore << setw(10) << stuArray[i].htmlScore << setw(10) << stuArray[i].totalSocre << endl; } return 0;运行结果:
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯