题解:洛谷 P5742 【深基7.例11】评等级

【题目来源】

洛谷:P5742 【深基7.例11】评等级 - 洛谷 (luogu.com.cn)

【题目描述】

现有 \(N\) 名同学,每名同学需要设计一个结构体记录以下信息:学号、学业成绩和素质拓展成绩、综合分数(实数)。每行读入同学的学号、学业成绩和素质拓展成绩,并且计算综合分数(分别按照 \(70\%\)\(30\%\) 权重累加),存入结构体中。还需要在结构体中定义一个成员函数,返回该结构体对象的学业成绩和素质拓展成绩的总分。

然后需要设计一个函数,其参数是一个学生结构体对象,判断该学生是否“优秀”。优秀的定义是学业和素质拓展成绩总分大于 \(140\) 分,且综合分数不小于 \(80\) 分。

本题存在精度误差问题,请将 a * 0.3 + b * 0.7 与 80 比较 转化为 a * 3 + b * 7\(800\) 比较。

【输入】

第一行一个整数 \(N\)

接下来 \(N\) 行,每行 \(3\) 个整数,依次代表学号、学业成绩和素质拓展成绩。

【输出】

\(N\) 行,如果第 \(i\) 名学生是优秀的,输出 Excellent,否则输出 Not excellent

【输入样例】

4
1223 95 59
1224 50 7
1473 32 45
1556 86 99

【输出样例】

Excellent
Not excellent
Not excellent
Excellent

【算法标签】

《洛谷 P5742 评等级》 #模拟#

【代码详解】

#include <bits/stdc++.h>  // 包含标准库头文件(万能头文件)
using namespace std;      // 使用标准命名空间

// 定义学生结构体
struct student 
{
    int id;       // 学号
    int s1;       // 学业成绩
    int s2;       // 素质拓展成绩
    double c1;    // 综合分数(学业成绩×7 + 素质拓展成绩×3)
    int c2;       // 总分(学业成绩 + 素质拓展成绩)
  
    /**
     * 判断学生是否优秀
     * @return 如果综合分数≥800且总分>140返回true,否则返回false
     */
    bool judge() 
    {
        if (c1 >= 800 && c2 > 140) 
        {
            return true;
        } 
        else 
        {
            return false;
        }
    }
};

int main()
{
    int n;                // 定义变量:学生数量
    student s[1005];      // 定义学生数组,最多存储1005个学生
  
    cin >> n;             // 输入学生数量
  
    // 输入每个学生的信息并计算综合分数和总分
    for (int i = 1; i <= n; i++) 
    {
        cin >> s[i].id >> s[i].s1 >> s[i].s2;  // 输入学生信息
        s[i].c1 = s[i].s1 * 7 + s[i].s2 * 3;    // 计算综合分数
        s[i].c2 = s[i].s1 + s[i].s2;            // 计算总分
    }
  
    // 判断每个学生是否优秀并输出结果
    for (int i = 1; i <= n; i++) 
    {
        if (s[i].judge()) 
        {
            cout << "Excellent" << endl;      // 优秀学生
        } 
        else 
        {
            cout << "Not excellent" << endl;  // 非优秀学生
        }
    }
  
    return 0;  // 程序正常结束
}

【运行结果】

4
1223 95 59
1224 50 7
1473 32 45
1556 86 99
Excellent
Not excellent
Not excellent
Excellent
posted @ 2026-02-16 18:09  团爸讲算法  阅读(5)  评论(0)    收藏  举报