题目

从标准输入读入学生人数以及每个学生的成绩,计算所有学生的平均成绩,并将计算出的平均分格式化写入到输出文本文件中。

输入格式:第一行输入学生人数 n;随后 n 行每行输入一个整数成绩。

输出格式:控制台输出计算得到的平均成绩,并将 avg=xx.xx 同步写入 report.txt 文件。

数据范围与约定:1 ≤ n ≤ 500。

思路与算法

1. 统计累加
累加所有学生成绩,浮点除法 double avg = sum * 1.0 / n;。

2. 报表写入
以 "w" 写入模式打开目标文件,使用 fprintf(fp, "平均分: %.2f\n", avg); 输出,演示控制台与文件同时输出的处理模式。

完整程序

#include <stdio.h>

int main(void)
{
    int n;
    if (scanf("%d", &n) != 1 || n < 1) {
        return 1;
    }
    double sum = 0, x;
    for (int i = 0; i < n; i++) {
        scanf("%lf", &x);
        sum += x;
    }

    double avg = sum / n;
    // "w" 模式覆盖写入文本
    FILE *fp = fopen("result.txt", "w");
    if (fp) {
        // fprintf 格式化输出到文件
        fprintf(fp, "avg=%.2f\n", avg);
        fclose(fp);
    }

    printf("avg=%.2f\n", avg);
    return 0;
}