问题标题: 酷町堂:结构体排序1

1
0
林熙彭
林熙彭
资深守护
资深守护

#include<bits/stdc++.h>
using namespace std;
struct STU {
    string name;
    int id, qimo, pingshi;
    double score() {
    return qimo * 0.5 + pingshi * 0.5;
    }
}nStu[500];
int n;
void f1() {
    cin>>n;
    cout << "请输入姓名:\n";
    string s;
    cin >> s; 
    for(int i=1; i<=n; i++) {
    if(nStu[i].name==s)    {
        cout << nStu[i].score() << ' ' << nStu[i].id << ' ';
        if(nStu[i].score()>=90)    cout << "成绩优秀\n\n" ;
            else if(nStu[i].score()>=80)    cout << "成绩良好\n\n" ;
            else if(nStu[i].score()>=60)    cout << "成绩合格\n\n" ;
        else cout << "成绩不及格\n\n" ; 
        break;
    }
    } 
}
void f2() {
    double sum = 0;
    for(int i=1; i<=n; i++) {
    sum += nStu[i].score();
    }
    printf("年级平均分是:%.1f\n\n", sum / n);
}
bool cmp(STU a, STU b) {
    if(a.score()!=b.score())    return a.score()!=b.score();
    return a.id<b.id;
}
void f3() {
    sort(nStu+1, nStu+n+1, cmp);
    ofstream fout("信息打印.txt");
    for(int i=1; i<=n; i++) {
    fout << nStu[i].name << ' ' << nStu[i].id << ' ' << nStu[i].qimo << ' ' << nStu[i].pingshi << ' ' << endl;     
    }
    fout.close();
    cout << "已打印完成\n\n" << endl; 

void f4() {
    cout<<"感谢您使用本**,再会!";
    exit(0);
}
int main(){
    cout << "欢迎您使用本**!您可以通过本****班级学生成绩信息。\n"; 
    cout << "请输入想要实现的功能:\n1:查询个人信息\n2:查询年级平均分\n3:打印所有人分数\n4:退出**\n";
    int num; 
    while(cin >> num) {  //循环输入数字,根据输入的数字决定执行相应的操作 
        if(num==1) f1();
        else if(num==2) f2();
        else if(num==3) f3();
        else if(num==4) f4(); 
        cout << "请输入想要实现的功能:\n1:查询个人信息\n2:查询年级平均分\n3:打印所有人分数\n4:退出**\n";
    }
    return 0;
}

林熙彭在2021-10-12 21:35:08追加了内容

control+p可以复制,但是复制代码不行!!!


1
1
0
0
0
0
我要回答