进阶PAT 2022-12-11 02:16 采纳率: 78.4%
浏览 41
已结题

关于空白文章的一个有趣问题

有了您的指点,加油加油~我在本次实验遇到的困难与思考点较多,难度确实有提升。首先,要思考结构体的要求,哈哈

  • 写回答

3条回答 默认 最新

  • ShowMeAI 2022-12-11 08:36
    关注

    代码和样例计算结果截图如下,望采纳,有问题欢迎随时沟通,再帮你看。

    #include <iostream>
    #include <cstring>
    #include <algorithm>
    
    using namespace std;
    
    const int N = 10010;
    
    // 定义一个结构体,用来存储每个学生的信息
    struct Student
    {
        string name; // 姓名
        double grade[6]; // 成绩
        double weight_grade; // 加权成绩
    }stu[N];
    
    // 定义一个数组,用来存储每门课的学分
    int w[6];
    
    // 比较函数,用来比较两个学生的加权成绩
    bool cmp(Student s1, Student s2)
    {
        if (s1.weight_grade != s2.weight_grade)
        {
            return s1.weight_grade > s2.weight_grade;
        }
        else
        {
            for (int i = 1; i <= 5; i ++ )
            {
                if (s1.grade[i] != s2.grade[i])
                {
                    return s1.grade[i] > s2.grade[i];
                }
            }
        }
        return s1.name < s2.name;
    }
    
    int main()
    {
        // 输入每门课的学分
        int total_weight = 0; // 总的权重
        for (int i = 1; i <= 5; i ++ )
        {
            cin >> w[i];
            total_weight += w[i];
        }
    
        int n;
        cin >> n;
    
        // 输入每个学生的信息
        for (int i = 0; i < n; i ++ )
        {
            cin >> stu[i].name;
            for (int j = 1; j <= 5; j ++ )
            {
                cin >> stu[i].grade[j];
            }
        }
    
        // 计算每个学生的加权成绩
        for (int i = 0; i < n; i ++ )
        {
            stu[i].weight_grade = 0;
            for (int j = 1; j <= 5; j ++ )
            {
                stu[i].weight_grade += stu[i].grade[j] * w[j];
            }
            stu[i].weight_grade /= total_weight; // 计算加权平均分
        }
    
        // 对所有学生的加权成绩进行排序
        sort(stu, stu + n, cmp);
    
        // 输出排序后的结果
        for (int i = 0; i < n; i ++ )
        {
            cout << stu[i].name << " ";
            printf("%.2lf", stu[i].weight_grade);
            cout << endl;
        }
    
        return 0;
    }
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 12月19日
  • 已采纳回答 12月11日
  • 修改了问题 12月11日
  • 创建了问题 12月11日

悬赏问题

  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程