PTA-C语言-军事体能成绩统计(用结构体解题,有说明)

该篇文章详细描述了如何使用C语言编写程序,以解决体能测试中计算每位学生的总成绩以及各项目最高分的问题,涉及结构体、输入/输出和三元操作符的应用。
摘要由CSDN通过智能技术生成

体能考试结束后,输入n名(不超过10)男生的成绩,每名学生的成绩包括引体向上、蛇形跑、3公里、仰卧起坐,输出每名学生的总成绩,并输出每个项目的最高分。

输入格式:

输入人数n,然后每行输入体能每个人的4项体能成绩。

输出格式:

每行输出每个人的总成绩
最后一行输出每一项的最高分,空格隔开

输入样例:

4
90 70 80 90
70 88 98 90
58 70 70 89
70 80 88 94

输出样例:

 

330
346
287
332
90 88 98 94 

解决方案,虽然有点复杂,但纯属突发奇想,写着玩玩

#include<stdio.h>

int main() {
    struct Student {
        int a, b, c, d;
    } num[10];
    int n, i, j;
    int maxA = 0, maxB = 0, maxC = 0, maxD = 0;

    // 输入人数
    scanf("%d", &n);
    for (i = 0; i < n; i++) {
        // 输入每名学生的成绩
        scanf("%d %d %d %d", &num[i].a, &num[i].b, &num[i].c, &num[i].d);

        // 计算总成绩
        int sum = num[i].a + num[i].b + num[i].c + num[i].d;
        printf("%d\n", sum);

        // 更新每个项目的最高分
        maxA = (maxA > num[i].a) ? maxA : num[i].a;
        maxB = (maxB > num[i].b) ? maxB : num[i].b;
        maxC = (maxC > num[i].c) ? maxC : num[i].c;
        maxD = (maxD > num[i].d) ? maxD : num[i].d;
    }

    // 输出每个项目的最高分
    printf("%d %d %d %d\n", maxA, maxB, maxC, maxD);

    return 0;
}

附加:三元操作符是 C 语言中的一种条件表达式,它允许您在一条语句中同时进行条件判断和赋值操作。三元操作符的基本语法如下:
条件 ? 表达式1 : 表达式2
如果条件为真(即条件表达式的结果为非零),则表达式的值为表达式1;如果条件为假(即条件表达式的结果为零),则表达式的值为表达式2。
在您的代码中,maxA = (maxA > num[i].a) ? maxA : num[i].a; 这行代码的意思是:
(maxA > num[i].a) 是一个条件表达式,它会比较 maxA 和 num[i].a 的值。
如果 maxA 大于 num[i].a,则条件为真,maxA 的值保持不变,即 maxA = maxA。
如果 maxA 不大于 num[i].a,则条件为假,maxA 的值被赋为 num[i].a 的值,即 maxA = num[i].a。
简单来说,这行代码的目的是为了更新 maxA 的值,使其保持为当前遇到的最高分数 num[i].a 和之前 maxA 中的较大值。同样的逻辑也应用于 maxB、maxC 和 maxD 的更新

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值