有3个学生,每个学生有3门课程的成绩,从键盘输入学生的数据(包括学号、姓名和3门课程成绩),计算出平均成绩,将原有数据和计算出的平均分存放在磁盘文件“stud.txt”中,用c语言写出以下代码
时间: 2024-09-11 20:05:12 浏览: 69
数据结构:定义一个包含学生信息(学号、姓名、成绩)的顺序表_数据结构
5星 · 资源好评率100%
以下是一个用C语言实现上述功能的简单示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义学生结构体
typedef struct {
int id; // 学号
char name[50]; // 姓名
float scores[3]; // 3门课程成绩
float average; // 平均成绩
} Student;
// 函数声明
void calculateAverage(Student *s);
void printToFile(const char *filename, Student *students, int count);
int main() {
Student students[3]; // 创建3个学生的数组
int i;
// 输入学生数据
for (i = 0; i < 3; i++) {
printf("请输入第%d个学生的信息:\n", i + 1);
printf("学号: ");
scanf("%d", &students[i].id);
printf("姓名: ");
scanf("%s", students[i].name);
printf("三门课程成绩: ");
for (int j = 0; j < 3; j++) {
scanf("%f", &students[i].scores[j]);
}
calculateAverage(&students[i]); // 计算平均成绩
}
// 将学生数据和平均成绩写入文件
printToFile("stud.txt", students, 3);
return 0;
}
// 计算学生的平均成绩
void calculateAverage(Student *s) {
float sum = 0;
for (int i = 0; i < 3; i++) {
sum += s->scores[i];
}
s->average = sum / 3;
}
// 打开文件,将学生信息和平均成绩写入文件
void printToFile(const char *filename, Student *students, int count) {
FILE *file = fopen(filename, "w");
if (file == NULL) {
printf("文件打开失败。\n");
exit(1);
}
for (int i = 0; i < count; i++) {
fprintf(file, "学号: %d\n", students[i].id);
fprintf(file, "姓名: %s\n", students[i].name);
for (int j = 0; j < 3; j++) {
fprintf(file, "课程%d成绩: %.2f\n", j + 1, students[i].scores[j]);
}
fprintf(file, "平均成绩: %.2f\n", students[i].average);
fprintf(file, "\n");
}
fclose(file);
}
```
这段代码首先定义了一个`Student`结构体,用于存储每个学生的信息。`main`函数中创建了一个包含3个学生的数组,并提示用户从键盘输入每个学生的信息。`calculateAverage`函数用于计算每个学生的平均成绩。最后,`printToFile`函数将每个学生的信息和平均成绩写入到指定的磁盘文件`stud.txt`中。
请注意,这段代码假设用户输入的数据是正确的,没有错误处理机制来检查输入的有效性。在实际应用中,应当添加必要的错误检查和处理代码。
阅读全文