当老师叫我做一道题时。。。

上完编程课,老师布置了一道结构体的作业,题目是这样的:

小明(没错就是他)所在的学校一开学就进行了一次摸底考试。摸底考试考了语文、数学、英语、科学共四门课程。

小明的老师汇总成绩后列出了成绩单,其中包括每个同学的姓名和四科的成绩。现在老师希望表扬一下每门课程考试得分前四名和总分前四名的同学,同分数的情况下,名字字典序更小的先表扬。

请你帮助老师写一个程序,快速完成这件事情吧。(我的内心os:关我什么事???)

输入格式

第一行为学生人数 n(4≤n≤100)n(4≤n≤100)。

之后 n 行依次为每个学生的姓名和语文、数学、英语、科学这四门课程的成绩,之间用一个空格隔开(成绩都大于等于 0 小于等于 100)。

输出格式

输出第一行为语文考试要表扬前四名的同学的姓名,之间用一个空格隔开。

输出第二行为数学考试要表扬前四名的同学的姓名,之间用一个空格隔开。

输出第三行为英语考试要表扬前四名的同学的姓名,之间用一个空格隔开。

输出第四行为科学考试要表扬前四名的同学的姓名,之间用一个空格隔开。

输出第五行为总分要表扬前四名的同学的姓名,之间用一个空格隔开。

这道题原本可以用结构体在0.114514(bushi)秒做出来,但是聪(叛)明(逆)的我,却用了数组(明明就是没听课),然后写出了下面的(屎山)代码:

using namespace std;
#include<iostream>
#include<cstring>
int a[114]={0},a1[114];
int b[114]={0},b1[114];
int c[114]={0},c1[114];
int d[114]={0},d1[114];
int sum[114]={0};
string name[114],y[114];
void huanyuan(int s){
    for(int i=0;i<s;i++){
        name[i] = y[i];
        a[i] = a1[i];
        b[i] = b1[i];
        c[i] = c1[i];
        d[i] = d1[i];
        
    }
}
int mp(int s,int l[]) {
    for(int i=0; i<s; i++) {
        for(int j=i+1; j<s; j++) {
            if(l[i]<l[j]) {
                int t=l[i];
                l[i] = l[j];
                l[j] = t;
                string t1=name[i];
                name[i] = name[j];
                name[j] = t1;
            }
            else if(name[i]>name[j] && l[i]==l[j]){
                int t=l[i];
                l[i] = l[j];
                l[j] = t;
                string t1=name[i];
                name[i] = name[j];
                name[j] = t1;            
            }
        }
    }
    for(int i=0; i<4; i++) cout<<name[i]<<" ";
    huanyuan(s);
    cout<<endl;
}
int main() {
    int s;
    cin>>s;
    for(int i=0; i<s; i++) {
        cin>>name[i]>>a[i]>>b[i]>>c[i]>>d[i];
        y[i] = name[i];
        a1[i] = a[i];
        b1[i] = b[i];
        c1[i] = c[i];
        d1[i] = d[i];
    }
    mp(s,a);
    mp(s,b);
    mp(s,c);
    mp(s,d);
    for(int i=0; i<s; i++) a[i] = a[i] + b[i] + c[i] + d[i];
    mp(s,a);
    return 0;
}

一共用了11个数组。。。(累成🐕了)

但是呢,最后还是有一个happy ending的,这个(屎山)代码,居然AC了!!!!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值