题目
从标准输入读入学生人数以及每个学生的成绩,计算所有学生的平均成绩,并将计算出的平均分格式化写入到输出文本文件中。
输入格式:第一行输入学生人数 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;
}