zoukankan      html  css  js  c++  java
  • 全国高校程序设计大赛 评定奖学金

    全国高校程序设计大赛 评定奖学金

    题目描述

    评定奖学金。 奖学金评比方法如下:先计算加权成绩formula.jpg,其中k为课程数,
    然后按照加权成绩排序(规定所有同学的加权成绩各不相同),根据学生的数量取前10%的同学获得一等奖学金(获奖人数向上取整),输出一等奖学金的学生姓名。
    按照下面的顺序输入相关信息:
    (1) 输入课程数k (k<10) ;
    (2) 依次输入k个数据表示ki ]课程所对应的学分;
    (3) 输入学生数量N(N<100);
    (4) 从第四行开始依次输入N个学生的信息(信息格式:姓名及对应的各i ]课的成绩)。
    输入说明:
    第一行输入整数k;
    第二行依次输入k个数据;
    第三行输入一个整数N;
    从第四行开始依次输入N名同学的成绩数据
    (数据格式:姓名K门课的整数成绩)输出说明:输出获一等奖的学生姓名,有多名同学则用单个空格隔
    开。输入样例:5 2.0 1.0 2.0 3.0 0.5 5 XM 75 90 80 80 90 ZB 65 80 70 70 85 XH 70 80 70 75 90 WJ 80 85 85 85 90 LH 80 90 90 80 85
    输出样例:WJ

    代码提交说明

    代码提交说明:
    1.请严格按照每道题目给出的输入/输出样例编写相关I/O代码,数字间的默认间隔是一个空格, 浮点数的默认输出精度是保持小数点后2位。样例以外的提示信息请不要在屏幕上输出。
    2.请大家确保提交的代码可以在指定的编译条件下正确地编译执行,否则自动评测程序将给出编译错误或运行时错误的信息。
    3.每道编程题目,如果没有特殊说明,需要在1秒内完成程序的运行和输出结果,超过这个时间限制将会被判超时,失去相应测试用例的分数。每个可执行文件可使用的空间不得大于1MB。
    4.每道编程题会有多个测试用例,每通过一些测试用例可以获得 相应的分值,只有通过全部测试用例才能拿到这题全部的分数。

    题目思路

    #include<iostream>
    #include<string>
    #include<algorithm>
    using namespace std;
    
    const int N = 100 + 10;
    double a[N];
    
    struct stu {
        string name;
        double score[10];
        double total = 0;
    }stu[100];
    
    bool cmp(struct stu s1, struct stu s2)
    {
        if(s1.total<s2.total)
            return false;
        return true;
    }
    
    int main()
    {
        int k, n;
        cin >> k;
        for (int i = 0; i < k; i++)
        {
            cin >> a[i];
        }
        cin >> n;
        double sum = 0;
        for (int i = 0; i < n; i++)
        {
            cin >> stu[i].name;
            for (int j = 0,sum = 0; j < k; j++)
            {
                cin >> stu[i].score[j];
                stu[i].score[j] = stu[i].score[j] * a[j];
                stu[i].total += stu[i].score[j];
            }
        }
        sort(stu, stu + n, cmp);
        cout << stu[0].name;
        int i = 0;
        for (i = 1; i<=n/10; i++)
        {
            cout << " " << stu[i].total;
        }
        if(i<n&&i>0)
            while (stu[i].total == stu[i - 1].total && i < n) {
                cout << " " << stu[i++].total;
            }
        return 0;
    }
    
  • 相关阅读:
    函数的声明
    数组遍历的方法
    运算符
    变量命名规则
    js条件判断
    vuex使用
    高盛伦敦分部面试
    野村证券伦敦分部面试
    Linux Performance Monitoring Commands
    Linux server上too many open files问题
  • 原文地址:https://www.cnblogs.com/fsh001/p/13997226.html
Copyright © 2011-2022 走看看