各位高手帮忙看一下哪里错了,谢谢!
题目:一个文本文件中存放着NBA火箭队员姚明的信息。每一行的数据及其含义是这样排列的(每一行数据均为场均值):赛季 出场 时间 总篮板 助攻 盖帽 犯规 得分
08-09 77 33.6 9.9 1.8 1.9 3.3 19.7
07-08 55 37.2 10.8 2.3 2 3.1 22
06-07 48 33.8 9.4 2 2 3.3 25
05-06 57 34.2 10.2 1.5 1.6 3.4 22.3
04-05 80 30.6 8.4 0.8 2 3.7 18.3
03-04 82 32.8 9 1.5 1.9 3.3 17.5
02-03 82 29 8.2 1.7 1.8 2.8 13.5
写一个程序,把这些数据存储到一个结构体数组中。程序应该读到文件末尾,并且应该在最后保存姚明每一项的职业生涯统计数据。例如,要计算姚明职业生涯中的平均每场篮板数,就不能只是简单地将总篮板列的数据相加求平均,那会得到一个错误的数值9.4,而应该将每个赛季的出场时间乘以该赛季的总篮板数,求和之后再用总出场次数去除才能得到正确结果9.3。最后结果保留小数点后1位。职业生涯的统计数据附加在最后一行,程序运行结束后打开该文本文件检查内容是否完整。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 7
struct yaoming //声明结构体yaoming
{
char season[10];
int GP;
float time;
float rebound;
float assist;
float block_shot;
float foul;
float score;
}yao[N],yao_total; //定义结构体变量,存放赛季数据的yao[N]和存放综合数据的yao_total
void save() //定义函数save,将输入的赛季数据存放至数据文件yao.dat中
{
FILE *fp;
int i;
if((fp=fopen("yaoming.dat","wb"))==NULL)
{
printf("cannot open file\n");
return;
}
for(i=0;i<N;i++)
if(fwrite(&yao[i],sizeof(struct yaoming),1,fp)!=1)
printf("file write error\n");
if(fwrite(&yao_total,sizeof(struct yaoming),1,fp)!=1)
printf("file write error\n");
fclose(fp);
}
void print() //定义函数print,将文件中的数据打印出来
{
FILE *fp;
int i;
if((fp=fopen("yaoming.dat","rb"))==NULL)
{
printf("cannot open file\n");
exit(0);
}
for(i=0;i<N;i++)
{
fread(&yao[i],sizeof(struct yaoming),1,fp);
printf("%s\t%d\t%f\t%f\t%f\t%f\t%f\t%f\n",yao[i].season,yao[i].GP,yao[i].time,yao[i].rebound,yao[i].assist,yao[i].block_shot,yao[i].foul,yao[i].score);
}
fread(&yao_total,sizeof(struct yaoming),1,fp);
printf("%s\t%d\t%f\t%f\t%f\t%f\t%f\t%f\n",yao_total.season,yao_total.GP,yao_total.GP,yao_total.time,yao_total.rebound,yao_total.assist,yao_total.block_shot,yao_total.foul,yao_total.score);
fclose(fp);
}
int main()
{
int i,j,a=0;
float b=0.0,c=0.0,d=0.0,e=0.0,m=0.0,n=0.0;
char t;
printf("please enter data of yaoming:\n");
for(i=0;i<N;i++) //输入姚明的赛季数据
scanf("%s%d%f%f%f%f%f%f",yao[i].season,&yao[i].GP,&yao[i].time,&yao[i].rebound,&yao[i].assist,&yao[i].block_shot,&yao[i].foul,&yao[i].score);
for(j=0;j<N;j++) //计算得出综合数据,存放在结构体变量yao_total中
{
a+=yao[i].GP;
b+=yao[i].time;
c+=yao[i].rebound*yao[i].time;
d+=yao[i].assist*yao[i].time;
e+=yao[i].block_shot*yao[i].time;
m+=yao[i].foul*yao[i].time;
n+=yao[i].score*yao[i].time;
}
t=(char)N;
yao_total.season[0]=t;
yao_total.GP=a;
yao_total.time=b/N;
yao_total.rebound=c/a;
yao_total.assist=d/a;
yao_total.block_shot=e/a;
yao_total.foul=m/a;
yao_total.score=n/a;
save(); //调用save函数
print(); //调用print函数
return 0;
}
程序运行如下,非正常中止。
这是怎么回事,哪里错了呢?恳请各位大侠指教啊...谢谢!