三级中的C语言程序题,请看程序中的注释

#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的用法怎样?

define MAX 1000
这是宏,意思就是在这个文件里,凡是遇到MAX的时候他都会把MAX当作是 1000 这个数
至于fscanf嘛,他和scanf语句差不多,你可以把他看作fscanf作为scanf的一个流作为标准输入的列子了,可以这样写
fscanf(stdin,“参数1”,“参数2”)=scanf(“参数1”,“参数2”)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-03-05
给点分呀~
相似回答
大家正在搜