题解:洛谷 P5744 【深基7.习9】培训

【题目来源】

洛谷:P5744 【深基7.习9】培训 - 洛谷 (luogu.com.cn)

【题目描述】

某培训机构的学员有如下信息:

  • 姓名(字符串)
  • 年龄(周岁,整数)
  • 去年 NOIP 成绩(整数,且保证是 \(5\) 的倍数)

经过为期一年的培训,所有同学的成绩都有所提高,提升了 \(20\%\)(当然 NOIP 满分是 \(600\) 分,不能超过这个得分)。

输入学员信息,请设计一个结构体储存这些学生信息,并设计一个函数模拟培训过程,其参数是这样的结构体类型,返回同样的结构体类型,并输出学员信息。

【输入】

第一行输入一个正整数 \(n\),表示学员个数。

第二行开始往下 \(n\) 行。每行首先是一个字符串表示学员姓名,再是一个整数表示学员年龄,再是一个整数为去年 NOIP 成绩。

【输出】

输出 \(n\) 行,每行首先输出一个字符串表示学生姓名,再往后两个整数,表示经过一年的培训后学员的年龄和他们今年的 NOIP 成绩。以空格隔开。

【输入样例】

3
kkksc03 24 0
chen_zhe 14 400
nzhtl1477 18 590

【输出样例】

kkksc03 25 0
chen_zhe 15 480
nzhtl1477 19 600

【算法标签】

《洛谷 P5744 培训》 #模拟#

【代码详解】

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

// 定义学生结构体
struct student 
{
    string name;  // 学生姓名
    int age;      // 学生年龄
    int cj;       // 学生成绩
};

int main()
{
    student s[1005];  // 定义学生数组,最多存储1005个学生
    int n;            // 定义变量:学生数量
  
    cin >> n;         // 输入学生数量
  
    // 输入每个学生的信息
    for (int i = 1; i <= n; i++) 
    {
        cin >> s[i].name >> s[i].age >> s[i].cj;  // 输入姓名、年龄和成绩
    }
  
    // 处理每个学生的数据并输出结果
    for (int i = 1; i <= n; i++) 
    {
        s[i].cj += s[i].cj * 0.2;  // 成绩增加20%
      
        // 成绩上限为600分
        if (s[i].cj > 600) 
        {
            s[i].cj = 600;
        }
      
        // 输出处理后的学生信息(年龄+1,调整后的成绩)
        cout << s[i].name << " " << s[i].age + 1 << " " << s[i].cj << endl;
    }
  
    return 0;  // 程序正常结束
}

【运行结果】

3
kkksc03 24 0
chen_zhe 14 400
nzhtl1477 18 590
kkksc03 25 0
chen_zhe 15 480
nzhtl1477 19 600
posted @ 2026-02-17 08:20  团爸讲算法  阅读(1)  评论(0)    收藏  举报