求平均年龄

GitHub跳转原题关系图返回列表

读入 n 后一遍循环累加年龄求和,用实数除法求平均值并按 %.2f 输出两位小数。

OJ: roj

题目 ID: 1059

难度:入门

标签:入门循环格式化输出python

创建: 2026-09-29 16:45

更新: 2026-10-04 23:49

题目描述

班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保留到小数点后两位。

输入:第一行一个整数 nn(1≤n≤1001 \le n \le 100)表示学生人数;其后 nn 行每行一个整数,表示每个学生的年龄(15∼2515 \sim 25)。

输出:一行一个浮点数,为平均年龄,保留到小数点后两位。样例:输入 2 / 18 / 17(第一行是人数),输出 17.50——末尾的 0 也要输出。

思路

把 nn 个年龄读进来一遍循环累加求和,再除以 nn 就是答案。除法要用实数除法(累加和用 double 存),否则会退化成整除得到 17 而不是 17.50;输出用 %.2f 固定两位小数,会自动补齐末尾的 0。

参考代码

Python 版:

python
#!/usr/bin/env python3
# Author by Rainboy blog: https://rainboylv.com github: https://github.com/rainboylvx
# rbook: -> https://rbook.roj.ac.cn  https://rbook2.roj.ac.cn
# rainboy的学习导航网站: https://idx.roj.ac.cn
# create_at: 2026-09-29 16:45
# update_at: 2026-09-29 16:52

import sys
from itertools import islice


def solve() -> None:
    data = map(int, sys.stdin.buffer.read().split())  # map 已经是迭代器,可 next 消费
    n = next(data)                     # 学生人数,同时是要求和的元素个数
    ages = islice(data, n)             # 紧跟其后的 n 个年龄,惰性取出即可求和
    print(f"{sum(ages) / n:.2f}")      # 保留两位小数,对齐参考实现的 "%.2lf"


if __name__ == "__main__":
    solve()

C++ 版(同一算法):

cpp
/**
 * Author by Rainboy blog: https://rainboylv.com github: https://github.com/rainboylvx
 * rbook: -> https://rbook.roj.ac.cn  https://rbook2.roj.ac.cn
 * rainboy的学习导航网站: https://idx.roj.ac.cn
 * create_at: 2026-10-04 23:49
 * update_at: 2026-10-04 23:49
 */
#include <cstdio>

typedef long long ll;

ll n;   // 学生人数
ll sum; // 年龄总和

int main() {
    scanf("%lld", &n);
    for (ll i = 1; i <= n; i++) {
        ll a; // 当前学生的年龄
        scanf("%lld", &a);
        sum += a;
    }
    printf("%.2f\n", (double)sum / (double)n); // 保留两位小数,补齐末尾的 0
    return 0;
}