文件e:\score.txt存放着学生考试成绩信息,每行包含学号和一门课 的实验成绩及考试成绩。编程,在原文件的最后一列,为每位学生增加综合成绩(实验成绩 ×0.4+考试成绩×0.6),综合成绩保留一位小数c语音
时间: 2024-01-03 14:03:17 浏览: 95
以下是实现该功能的C语言代码:
```
#include <stdio.h>
int main() {
FILE *fp = fopen("e:\\score.txt", "r+"); // 以读写方式打开文件
if (fp == NULL) {
printf("文件打开失败!\n");
return 0;
}
char buf[1024];
while (fgets(buf, 1024, fp) != NULL) { // 逐行读取文件内容
float lab_score, exam_score, total_score;
sscanf(buf, "%*s %f %f", &lab_score, &exam_score); // 解析实验成绩和考试成绩
total_score = lab_score * 0.4 + exam_score * 0.6; // 计算综合成绩
sprintf(buf, "%s %.1f\n", buf, total_score); // 将综合成绩加入到该行末尾
fseek(fp, -strlen(buf), SEEK_CUR); // 将文件指针移到该行开头
fputs(buf, fp); // 写入修改后的内容
}
fclose(fp); // 关闭文件
return 0;
}
```
其中,使用了`fopen`函数打开文件,`fgets`函数逐行读取文件内容,`sscanf`函数解析每行的实验成绩和考试成绩,`sprintf`函数将综合成绩加入到该行末尾,`fseek`函数将文件指针移到该行开头,`fputs`函数写入修改后的内容,最后使用`fclose`函数关闭文件。注意,该代码假设每行开头都是学生的学号,如果不是,需要调整`sscanf`函数的参数。
阅读全文