C语言竞争得分问题案例

题目描述

为了鼓励大家写出更好的任务,ACM集训队采用了竞争得分的方式。

具体来说,假设有 n 个人提交了任务,并且其中原始得分最低的人记作 amin  ,原始得分最高的人记作 amax,第 i 个人的原始得分为 ai  ,那么第  i 个人的得分就是:

100*ai-amin/amax-amin

由于成绩系统的问题,最终录入的成绩只能是整数,采用直接去掉小数部分的方法。

输入

第一行一个整数 n 表示人数。(1<=n<=1000)

第二行共n 个整数,为序列 a ,其中 ai 表示第 i 个人的原始任务得分。(1<=n<=1000)(数据保证最高分和最低分不同)

输出

一行,共 n 个整数,表示经过更新后每个人的得分。

样例输入

3
1 2 3

样例输出

0 50 100

案例代码

#include <stdio.h>

int main() {
    int n;
    scanf("%d", &n);

    int scores[n];
    for (int i = 0; i < n; i++) {
        scanf("%d", &scores[i]);
    }

    int min_score = scores[0];
    int max_score = scores[0];
    for (int i = 1; i < n; i++) {
        if (scores[i] < min_score) {
            min_score = scores[i];
        }
        if (scores[i] > max_score) {
            max_score = scores[i];
        }
    }

    for (int i = 0; i < n; i++) {
        int updated_score = 100 * (scores[i] - min_score) / (max_score - min_score);
        printf("%d ", updated_score);
    }

    return 0;
}

在主函数中,首先读取输入的人数n,然后创建一个大小为n的数组来存储每个人的得分。接下来,遍历数组找到最低分和最高分。然后再次遍历数组,根据给定的计算公式计算每个人的得分,并输出整数部分。

运行截图

图片[1]-C语言竞争得分问题案例-QQ沐编程

© 版权声明
THE END
喜欢就支持一下吧
点赞11赞赏 分享