P5744 【深基7.习9】培训

题目描述

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

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

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

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

输入格式

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

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

输出格式

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

样例 #1

样例输入 #1

3
kkksc03 24 0
chen_zhe 14 400
nzhtl1477 18 590

样例输出 #1

kkksc03 25 0
chen_zhe 15 480
nzhtl1477 19 600

提示

数据保证, 1 ≤ n ≤ 5 1 \leq n \leq 5 1n5。年龄为 0 ∼ 100 0 \sim 100 0100(含 0 0 0 100 100 100)的整数。成绩为 0 ∼ 600 0 \sim 600 0600(含 0 0 0 600 600 600)的 5 5 5 的整倍数。

1.题目分析

输入学员人数n,后面n行输入每一个学员的姓名,年龄,成绩。
题目要求用结构体封装数据类型,函数模拟培训过程,输出学员一年后的信息变化,即年龄长一岁,成绩提高百分之20.

提一嘴结构体定义:

结构体 结构体名称{

//结构体列表 (可以是不同数据类型 基本类型 构造类型 指针类型)

}

2.题目思路

定义结构体,写一个培训函数:将学员属性更新并打印在控制台。
值得注意的是,定义形参时必须加&符号,将修改后的数据带出。

主函数:键入人数,定义临时结构体,三个学员信息,循环输入三个信息,赋值给结构体,调用培训函数,即可。

2.代码实现

#include 
#include 

//定义结构体
struct stu {
    char name[21];
    int age;
    int grade;
};

//培训过程 值得一提的是 这里必须加&符号,将修改后的数据带出
void train(stu &s1) {
    s1.age += 1;
    //成绩大于600时,直接赋值给600
    if (s1.grade * 1.2 > 600) {
        s1.grade = 600;
    } else {
        s1.grade = s1.grade * 1.2;
    }
    //打印
    printf("%s %d %d\n", s1.name, s1.age, s1.grade);
}

int main() {
    int n;
    char name[21];
    int age;
    int grade;
    //定义临时结构体
    struct stu s1;
    scanf("%d", &n);
    for (int i = 0; i < n; ++i) {
        //输入结构体参数,并赋值
        scanf("%s %d %d", name, &age, &grade);
        //字符串赋值需要使用strcpy函数
        strcpy(s1.name, name);
        s1.age = age;
        s1.grade = grade;
        //调用函数
        train(s1);
    }
    return 0;
}

你可能感兴趣的:(刷题go,go,go,算法,数据结构,c++)