用c语言编写程序,输入一组学生信息并保存到文件中。学生信息包括学号,姓名,5门课的分数。 要求使用结构体数组做函数参数编程。 要求:使用函数原型:void Inputscore(STUDENT stu[],int n,int m) void SavetoFile(char* fname,STUDENT stu[],int n, int m)
时间: 2024-03-07 13:48:47 浏览: 115
好的,我可以帮你解答这个问题。
首先,我们需要定义一个结构体来存储学生信息,包含学号、姓名和5门课的分数:
```c
typedef struct {
char id[10]; // 学号
char name[20]; // 姓名
float score[5]; // 5门课的分数
} STUDENT;
```
然后,我们可以定义两个函数来实现输入学生信息和保存到文件中:
```c
void Inputscore(STUDENT stu[], int n, int m);
void SavetoFile(char* fname, STUDENT stu[], int n, int m);
```
其中,参数`stu`是一个结构体数组,表示学生信息;`n`表示学生数量;`m`表示每个学生的课程数量。
下面是完整的程序代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct {
char id[10]; // 学号
char name[20]; // 姓名
float score[5]; // 5门课的分数
} STUDENT;
void Inputscore(STUDENT stu[], int n, int m);
void SavetoFile(char* fname, STUDENT stu[], int n, int m);
int main() {
STUDENT stu[100];
int n = 0, m = 5;
printf("请输入学生数量:");
scanf("%d", &n);
Inputscore(stu, n, m);
SavetoFile("student.txt", stu, n, m);
printf("学生信息已保存到文件中。\n");
return 0;
}
void Inputscore(STUDENT stu[], int n, int m) {
int i, j;
for (i = 0; i < n; i++) {
printf("请输入第%d个学生的学号、姓名和5门课的分数:\n", i + 1);
scanf("%s%s", stu[i].id, stu[i].name);
for (j = 0; j < m; j++) {
scanf("%f", &stu[i].score[j]);
}
}
}
void SavetoFile(char* fname, STUDENT stu[], int n, int m) {
FILE* fp;
int i, j;
fp = fopen(fname, "w");
if (fp == NULL) {
printf("无法打开文件:%s\n", fname);
exit(1);
}
fprintf(fp, "学号\t姓名\t课程1\t课程2\t课程3\t课程4\t课程5\n");
for (i = 0; i < n; i++) {
fprintf(fp, "%s\t%s\t", stu[i].id, stu[i].name);
for (j = 0; j < m; j++) {
fprintf(fp, "%.1f\t", stu[i].score[j]);
}
fprintf(fp, "\n");
}
fclose(fp);
}
```
在主函数中,我们先定义了一个结构体数组`stu`,然后通过`Inputscore`函数输入学生信息,并通过`SavetoFile`函数将学生信息保存到文件中。
`Inputscore`函数中,我们使用`for`循环逐个输入每个学生的信息,包括学号、姓名和5门课的分数。
`SavetoFile`函数中,我们首先打开一个文件,然后使用`fprintf`函数将所有学生的信息写入文件中。在写入文件时,我们使用制表符`\t`来分隔不同的字段,使用换行符`\n`来分隔不同的行。
运行程序后,输入学生数量和每个学生的信息,程序会自动将学生信息保存到一个名为`student.txt`的文件中。你可以根据自己的需要修改文件名和文件路径。
阅读全文