#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAX 1000
int xx[MAX],odd=0,even=0;
double ave1=0.0,ave2=0.0,totfc=0.0;
void WriteDat(void);
int ReadDat(void)
{
FILE *fp;
int i,j; //就是这一行!!!!!!!!!!!!!!!
if((fp=fopen("IN029.DAT","r"))==NULL) return 1;
//移到这里就不对了,搞不明白
for(i=0;i<100;i++){
for(j=0;j<10;j++){
fscanf(fp,"%d,",&xx[i*10+j]);}
fscanf(fp,"\n");
if(feof(fp))break;
}
fclose(fp);
return 0;
}
void Compute(void)
{ int toto=0,tote=0;int dd[MAX];
int i=0,j=0;
for(i;i<1000;i++){
if(xx[i]%2){odd++;toto+=xx[i];dd[j]=xx[i];j++;}
else {even++;tote+=xx[i];}
}
ave1=toto/odd;
ave2=tote/even;
for(i=0;i<j;i++){totfc+=(dd[i]-ave1)*(dd[i]-ave1);}
totfc=(totfc/odd);
}
void main( )
{
int i;
for(i=0;i<MAX;i++)
xx[i]=0;
if(ReadDat())
{
printf("数据文件IN029.DAT不能打开!\007\n");
return;
}
Compute();
printf( "ODD=%d\nAVE1=%f\nAVE2=%f\nTOTFC=%f\n",odd,ave1,ave2,totfc);
WriteDat();
}
void WriteDat(void)
{
FILE *fp;
fp=fopen("OUT029.DAT","w");
fprintf(fp,"%d\n%lf\n%lf\n%lf\n",odd,ave1,ave2,totfc);
fclose(fp);
}
问题:为什么程序中int i,j;这行往下移两行程序就不对了?
另外1.
#define MAX 1000是什么意思?
2.fscanf(fp,"%d,",&xx[i*10+j]);}
fscanf(fp,"\n");是什么意思?fscanf的用法怎样?