读入 n 后一遍循环累加年龄求和,用实数除法求平均值并按 %.2f 输出两位小数。
OJ: roj
题目 ID: 1059
难度:入门
标签:入门循环格式化输出python
创建: 2026-09-29 16:45
更新: 2026-10-04 23:49
题目描述
班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保留到小数点后两位。
输入:第一行一个整数
输出:一行一个浮点数,为平均年龄,保留到小数点后两位。样例:输入 2 / 18 / 17(第一行是人数),输出 17.50——末尾的 0 也要输出。
思路
把 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;
}