输入一组学生信息并保存到文件中。学生信息包括学号,姓 名,5门课的分数。要求使用结构体数组做函数参数编程。 要求:使用函数原型:void Inputscore(STUDENT stu[],int n, int m) void SavetoFile(char* fname,STUD ENT stu[],int n, int m) 用c语言编写
时间: 2024-02-28 07:56:13 浏览: 66
好的,以下是C语言代码实现:
```c
#include <stdio.h>
#define MAX_LEN 20
#define MAX_COURSE 5
#define MAX_STUDENT 100
typedef struct {
char id[MAX_LEN];
char name[MAX_LEN];
float score[MAX_COURSE];
} STUDENT;
void Inputscore(STUDENT stu[], int n, int m);
void SavetoFile(char* fname, STUDENT stu[], int n, int m);
int main() {
STUDENT stu[MAX_STUDENT];
int n, m;
char fname[MAX_LEN];
printf("请输入学生人数:");
scanf("%d", &n);
printf("请输入课程数:");
scanf("%d", &m);
printf("请输入学生信息:\n");
Inputscore(stu, n, m);
printf("请输入输出文件名:");
scanf("%s", fname);
SavetoFile(fname, stu, n, m);
return 0;
}
void Inputscore(STUDENT stu[], int n, int m) {
for (int i = 0; i < n; i++) {
printf("请输入第 %d 个学生的学号:", i + 1);
scanf("%s", stu[i].id);
printf("请输入第 %d 个学生的姓名:", i + 1);
scanf("%s", stu[i].name);
printf("请输入第 %d 个学生的 %d 门课程成绩:", i + 1, m);
for (int j = 0; j < m; j++) {
scanf("%f", &stu[i].score[j]);
}
}
}
void SavetoFile(char* fname, STUDENT stu[], int n, int m) {
FILE* fp = fopen(fname, "w");
if (fp == NULL) {
printf("打开文件失败!\n");
return;
}
fprintf(fp, "学号\t姓名\t");
for (int i = 1; i <= m; i++) {
fprintf(fp, "课程%d\t", i);
}
fprintf(fp, "平均分\n");
for (int i = 0; i < n; i++) {
float sum = 0;
fprintf(fp, "%s\t%s\t", stu[i].id, stu[i].name);
for (int j = 0; j < m; j++) {
fprintf(fp, "%.2f\t", stu[i].score[j]);
sum += stu[i].score[j];
}
fprintf(fp, "%.2f\n", sum / m);
}
fclose(fp);
printf("成绩已保存到文件 %s 中!\n", fname);
}
```
以上代码中,我们定义了一个结构体 `STUDENT`,用于存储学生的学号、姓名和课程分数。然后,我们分别定义了两个函数 `Inputscore` 和 `SavetoFile`,用于输入学生信息和将学生成绩保存到文件中。在 `main` 函数中,我们先输入学生人数和课程数,然后调用 `Inputscore` 函数输入学生信息,再输入文件名并调用 `SavetoFile` 函数保存成绩到文件中。
阅读全文