[题解] P5742 【深基7.例11】评等级

本题考查结构体。

知识铺垫

用户可以优先阅读 结构体 相关知识点。

结构体可以帮助我们更好的对同种目的的数据进行合并表示。

例如:如果我们需要对成员的成绩进行分析,可以定义一个名为 student 的结构体。

使用结构体,应当先定义结构体类型,它的基本语法格式如下:

struct 结构体名称
{
    成员类型1 成员名称1;
    成员类型2 成员名称2;
    ...
    成员类型n 成员名称n;
};

struct定义结构体的关键字,结构体名称用于标识这个新的数据类型,花括号内部包含了若干成员变量的声明每个成员变量都有自己的类型和名称,它们之间用分号分隔。

下面展示本题对于成员的结构体命名:

struct students
{
    int numb; // 表示 int 类型的 numb,题目中存储学生学号
    int xueye, suzhi; // 表示 int 类型的 xueye,suzhi,题目中存储学生学业成绩和素质成绩
    int zonghe; // 表示 int 类型的 zonghe,题目中存储学生综合成绩
}s[MAXN];

结构体是一种类型,而不是变量,不能赋值;定义了结构体类型后,还需要声明结构体变量才能使用

声明结构体变量有两种方式:先定义类型再声明变量,或者在定义类型的同时声明变量。

// 方式 1:先定义类型,再声明变量
struct students s[MAXN];  //使用了已经定义的结构体类型 Student
// 方式 2:定义类型的同时声明变量
struct students
{
    int numb; // 表示 int 类型的 numb,题目中存储学生学号
    int xueye, suzhi; // 表示 int 类型的 xueye,suzhi,题目中存储学生学业成绩和素质成绩
    int zonghe; // 表示 int 类型的 zonghe,题目中存储学生综合成绩
}s[MAXN];

题目分析

题目中要求我们使用结构体进行存储。所以可以设计一个名为 students 的结构体,同时分别命名了学号、学业成绩、素质拓展成绩、综合分数。

根据题目要求,按照 \(70\%\)\(30\%\) 权重计算综合分数即可。

需要注意的是:本题存在精度误差问题,请将 a * 0.7 + b * 0.3 与 80 比较 转化为 a * 7 + b * 3 与 800 比较。

代码

// P5742 【深基7.例11】评等级
// code by:cq_irritater
// time:2025/06/26
#include <bits/stdc++.h>

using namespace std;

const int MAXN = 1010;

struct students
{
    int numb;
    int xueye, suzhi;
    int zonghe;
}s[MAXN];

int n;

int main()
{
    // freopen("code.in", "r", stdin);
    scanf("%d", &n);
    for (int i = 1; i <= n; i++)
    {
        scanf("%d %d %d", &s[i].numb, &s[i].xueye, &s[i].suzhi);
        s[i].zonghe = s[i].xueye * 7 + s[i].suzhi * 3;
    }
    for (int i = 1; i <= n; i++)
    {
        if (s[i].xueye + s[i].suzhi > 140 && s[i].zonghe >= 800)
        {
            printf("Excellent\n");
        }
        else
        {
            printf("Not excellent\n");
        }
    }
    return 0;
}

posted @ 2025-07-28 16:40  cq_irritater  阅读(210)  评论(0)    收藏  举报