当前位置: 代码迷 >> C语言 >> 这个程序的错误在哪?我找不出来,谁帮帮我!!!
  详细解决方案

这个程序的错误在哪?我找不出来,谁帮帮我!!!

热度:433   发布时间:2008-06-29 09:58:37.0
这个程序的错误在哪?我找不出来,谁帮帮我!!!
最近要交实习报告,自己写了个程序,结果不对。运行后,oil.dat里没保存数据,还有就是把所有数据输出时,结果总是0,耗油的数据算的不对,总是一个数!!这是什么原因?请高手帮帮忙!!!!以下是我写的代码:

#include <stdio.h>
#include <stdlib.h>
#define SIZE 256
struct oil_type
{double jiayou;
double danjia;
double lucheng;
double youhao;
}oil[SIZE];

void save(int k)
{FILE *fp;
int i;
if((fp=fopen("oil.dat","wb"))==NULL)
{printf("不能打开文件或文件不存在!");
return;
}
for(i=0;i==k;i++)
if(fwrite(&oil[i],sizeof(struct oil_type),1,fp)!=1)
printf("文件写入失败!");
fclose(fp);
}

void count(int k)
{FILE *fp;
int i;
printf("加油金额\t加油单价\t行驶路程\t百里油耗\n");
fp=fopen("oil.dat","wb");
for(i=0;i==k;i++)
{fread(&oil[i],sizeof(struct oil_type),1,fp);
printf("%f\t%f\t%f\t%f\t",oil[i].jiayou,oil[i].danjia,oil[i].lucheng,oil[i].youhao);
printf("\n");}
fclose(fp);
}

int main(int argc, char *argv[])
{int i,k=0;
char c;
double j;
for(i=0;i<SIZE;i++)
{printf("是否输入数据,是请输入”y/Y“,否请输入”n/N“:");
scanf("%s",&c);
if(c=='n'||c=='N')
goto end;
printf("请输入此次加油金额:");
scanf("%f",&oil[i].jiayou);
printf("请输入此次加油单价:");
scanf("%f",&oil[i].danjia);
printf("请输入此次行驶里程:");
scanf("%f",&oil[i].lucheng);
j=oil[i].jiayou/oil[i].danjia;
oil[i].youhao=(j/c)*100;
k++;
save(k);
}
end:
count(k);
system("PAUSE");   
return 0;
}

题目:
汽车油耗计算: 对于家用经济型小轿车来说,统计油耗是经常做的一件事。本题目要求根据汽油单价、每次加油所用钱数,以及该次加的油所跑里程数计算出该车的百公里油耗,并进行保存,根据需要给出统计数据。
----------------解决方案--------------------------------------------------------
  相关解决方案