第一次来发帖,大家帮忙看下程序吧
我们那个文件老师坑爹的只讲了半节课,自己编从头错到尾,悲催啊!
哪位大神帮我看下
题目修改实验三中的实验题4,有十个学生、四门课程,用结构体定义学生的信息,实现:
将原有数据和计算出的平均分数存放在磁盘文件stud中。
文件的格式如下:
学号 姓名 数学 外语 体育 C语言 平均
100103 ZhangSan 70 80 93 78 81
100101 Lisi 63 74 82 90 73
…. …. …. …. …. ….
在向文件stud写入数据后,应检查验证stud文件中的内容是否正确。
代码
#include
#include
#define n 10;
struct student{
char ID;
char Name;
float sub[4];
float avg;
};
int main()
{
int i,j;
struct student stu[n];
FILE *fp;
float sum=0;
if((fp=("stud.txt","w"))==NULL)
{
printf("Can't open");
exit(1);
}
fprintf(fp, "%-10s%-15s%-10s%-10s%-10s%-10s%-10s\n",
"学号", "姓名", "数学", "外语", "体育", "C语言", "平均");
for(i=0;i
{
fscanf(stdin,"%s%s",stu[i].ID,stu[i].Name);
fprintf(fp,"%s\t%s",stu[i].ID,stu[i].Name);
for(j=0;j<4;j++)
{
fscanf(stdin,"%f",&stu[i].sub[j]);
fprintf(fp,"%f\t",stu[i].sub[j]);
sum+=stu[i].sub[j];
}
stu[i].avg=sum/4;
sum=0;
fprintf(stdout,"%f\n",stu[i].avg);
fprintf(fp,"%f\n",stu[i].avg);
}
fclose(fp);
return 0;
}
------解决方案--------------------
#include
#include
#define n 10
struct student
{
char ID;
char Name;
float sub[4];
float avg;
};
int main()
{
int i,j;
struct student stu[n];
FILE *fp;
float sum=0;
if((fp=fopen("stud.txt","w"))==NULL)
{
printf("Can't open");
exit(1);
}
fprintf(fp, "%-10s%-15s%-10s%-10s%-10s%-10s%-10s\n",
"学号", "姓名", "数学", "外语", "体育", "C语言", "平均");
for(i=0;i
{
fscanf(stdin,"%s%s",stu[i].ID,stu[i].Name);
fprintf(fp,"%s\t%s",stu[i].ID,stu[i].Name);
for(j=0;j<4;j++)
{
fscanf(stdin,"%f",&stu[i].sub[j]);
fprintf(fp,"%f\t",stu[i].sub[j]);
sum+=stu[i].sub[j];
}
stu[i].avg=sum/4;
sum=0;
fprintf(stdout,"%f\n",stu[i].avg);
fprintf(fp,"%f\n",stu[i].avg);
}
fclose(fp);
return 0;
}