下面是我编的一个程序,运行出来应该有100行数据(每行5个),可是当存入txt时由于main函数的for循环使得每次得出的五个数据把前一行的数据覆盖了,最后Data中输出的数据只有一行,哪位高手来帮帮忙修改修改啊,小弟在此先谢谢大家了!
#include<stdio.h>
#include<math.h>
float i,j,T,GTi,GAl,xAla,xAlb,oTiAla,oTiAlb,Gma,Gmb,R=8.314;
void WriteDat()
{
FILE *Data;
Data=fopen("Data.txt","w");
printf("%.3f\t%.3f\t%.3f\t%.3f\t%.3f\t\n",xAla,Gma,xAlb,Gmb,T);
fprintf(Data,"%.3f\t%.3f\t%.3f\t%.3f\t%.3f\t\n",xAla,Gma,xAlb,Gmb,T);
fclose(Data);
}
void main()
{
printf("Please input a number that between 0 and 3000:\n");
scanf("%f",&i);
T=273+900+i*0.1;
GTi=5758.548+38.38941*T-7.4305*T*log(T)+9.36357*0.001*T*T-1.048055*0.000001*T*T*T-525090/T;
GAl=4602-3.013*T;
for(j=1;j<=100;j++)
{
xAla=0.001*j;
xAlb=xAla;
oTiAla=(-123788.5+33.20902*T)+(16034.9-12.18272*T)*(2*xAla-1);
oTiAlb=(-117572.6+32.45153*T)+(4835.982-1.410195*T)*(2*xAlb-1);
Gma=R*T*((1-xAla)*log(1-xAla)+xAla*log(xAla))+oTiAla*xAla*(1-xAla);
Gmb=(1-xAlb)*GTi+xAlb*GAl+R*T*((1-xAlb)*log(1-xAlb)+xAlb*log(xAlb))+oTiAlb*xAlb*(1-xAlb);
WriteDat();
printf("%.3f\t%.3f\t%.3f\t%.3f\t%.3f\t\n",xAla,Gma,xAlb,Gmb,T);
}
}