题目

读入学生人数与成绩,算平均分并写结果文件

思路

本题读入若干成绩,计算平均分,并把结果写入指定文件。

先读人数与分数数组,求 avg;再 fopen 写结果(一行平均数或明细),文件名按题面。写完后关闭文件。

解题分析

stdin 读成绩求平均,fprintf 写文件。文件打不开时仍可在屏幕输出结果,或报错返回。

函数简要说明

把计算结果写入新的文本结果文件

  • fopen(path, "w"):写模式;若文件已存在会先清空再写。
  • fprintf(fp, "avg=%.2f\n", avg):格式化输出到文件,与向屏幕 printf 相同,只是第一个参数是 FILE*
  • 读入成绩仍可用 scanf;写文件与读键盘是两套流,互不影响。

完整程序

#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;
    FILE *fp = fopen("result.txt", "w");
    if (fp) {
        fprintf(fp, "avg=%.2f\n", avg);
        fclose(fp);
    }
    printf("avg=%.2f\n", avg);
    return 0;
}