C语言写程序:从score.txt中读取5名学生的5每门课课程成绩,求每个课程的平均分,将结果以5行5列的形式输出至文件 ave.txt 注意:学号、成绩均为数值型,程序尽量简单,不调用函数。
时间: 2024-11-13 13:25:25 浏览: 25
20位学生有3门课程分别是高数-大英-C语言的考试成绩-求每门课的总分和平均分.pdf
在C语言中编写这样的程序,首先需要打开输入文件`score.txt`读取数据,然后计算每门课程的平均分,并将其存储到输出文件`ave.txt`中。这里是一个简单的示例,不使用函数来完成这个任务:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LINES 5
#define MAX_COLS 5
int main() {
char score_file[] = "score.txt";
char ave_file[] = "ave.txt";
FILE *fin = fopen(score_file, "r");
FILE *fout = fopen(ave_file, "w");
if (fin == NULL || fout == NULL) {
printf("Error opening files.\n");
return 1;
}
int scores[MAX_LINES][MAX_COLS] = {0};
int sum[5] = {0}; // 用于记录每门课总分
float avg[5]; // 存储每门课平均分
for (int i = 0; i < MAX_LINES; ++i) {
fgets(scores[i], sizeof(scores[i]), fin); // 读取一行
if (scores[i][0] != '\0') { // 检查是否为空行
char* endptr;
long num = strtol(scores[i], &endptr, 10);
if (*endptr == '\0' && i < 4) { // 只处理前5名学生
scores[i][0] = num;
sum[i % 5] += num; // 累加对应科目的分数
}
}
}
fclose(fin);
for (int j = 0; j < 5; ++j) {
avg[j] = (float)sum[j] / MAX_LINES; // 计算平均分
fprintf(fout, "%f\n", avg[j]); // 写入文件
}
fclose(fout);
printf("Average scores have been written to ave.txt.\n");
return 0;
}
阅读全文