编写程序,有5名学生,每名学生有3门课的成绩,从键盘输入数据(包括学号、姓名、数学成绩、C语言成绩、英语成绩),计算平均成绩,将原有数据和平均分存放在stuinfo.txt文件中。
要求:
(1)编写函数计算学生平均成绩。
(2)在stuinfo.txt文件中保存每名学生的学号、姓名、3门课成绩和平均成绩。
可以定义一个结构存储学生的各项信息,然后定义一个学生信息结构数组来存储输入的5个学生的信息输入,再计算平均成绩写入文件即可,代码如下:
#include <stdio.h>
struct stu{
char sid[20]; // 学号
char name[20]; //姓名
int math; // 数学成绩
int cscore; // C语言成绩
int english; // 英语成绩
double avg; // 平均成绩
};
// 计算n个 学生的平均成绩的函数
void countAvg(struct stu * stus,int n){
int i;
for(i=0;i<n;i++){
stus[i].avg=(stus[i].math+stus[i].cscore+stus[i].english)/3.0;
}
}
int main(void){
int i;
struct stu stus[N];
FILE* fp = fopen("stuinfo.txt","w");
if(fp==NULL){
printf("文件打开或创建失败!\n");
return 0;
}
// 获取N个学生的信息输入,并计算平均成绩和写入信息到文件
for(i=0;i<5;i++){
printf("请输入第%d个学生的学号:",i+1);
scanf("%s",stus[i].sid);
printf("请输入与第%d个学生的姓名:",i+1);
scanf("%s",stus[i].name);
printf("请输入第%d个学生的数学成绩:",i+1);
scanf("%d",&stus[i].math);
printf("请输入第%d个学生的C语言成绩:",i+1);
scanf("%d",&stus[i].cscore);
printf("请输入第%d个学生的英语成绩:",i+1);
scanf("%d",&stus[i].english);
printf("\n");
countAvg(stus,N);
fprintf(fp,"%s %s %d %d %d %f\n",stus[i].sid,stus[i].name,
stus[i].math,stus[i].cscore,stus[i].english,stus[i].avg);
}
fclose(fp);
printf("文件写入成功!\n");
return 0;
}