如何用C语言实现:在d:\s5.txt文件中,每行保存了学生的学号、三门课程的成绩。其中,学号包含10位数字,三门课程的成绩均为整数,取值范围在[0,100]之内。 要求:计算三门课程的平均分数(保留一位小数),计算每位同学的总分,并保存到d:\t5.txt中
时间: 2024-05-09 20:17:57 浏览: 66
您好!这个问题是关于C语言的文件操作和数据处理的问题,可以使用fgets函数逐行读取文件内容,并用sscanf函数解析每行数据,然后进行计算并将结果保存到文件中。以下是代码示例:
```c
#include <stdio.h>
int main() {
FILE *f_in, *f_out;
char line[80];
int id, score1, score2, score3;
double avg;
double total_score;
int count;
f_in = fopen("d:/s5.txt", "r");
if (!f_in) {
printf("Failed to open input file!\n");
return 1;
}
f_out = fopen("d:/t5.txt", "w");
if (!f_out) {
printf("Failed to open output file!\n");
fclose(f_in);
return 1;
}
while (fgets(line, sizeof(line), f_in)) {
if (sscanf(line, "%10d %d %d %d", &id, &score1, &score2, &score3) != 4) {
printf("Invalid line format: %s\n", line);
continue;
}
total_score = score1 + score2 + score3;
avg = total_score / 3.0;
fprintf(f_out, "%10d %.1lf\n", id, avg);
}
fclose(f_in);
fclose(f_out);
return 0;
}
```
请注意,由于本AI是基于文本的,无法进行文件操作,因此无法直接执行上述代码。但是,您可以在本地编译并运行这个程序,或者将代码复制到CSDN的编译器中进行测试。如果需要更多帮助,请随时问我!
阅读全文