58、请编制程序,从文件in.dat中读取200个整数至数组xx中,不计数组xx绝对值最小的
void read_dat(int xx[N])
{
int i,j;
FILE *fp;
fp=fopen("in.dat","r");
for(i=0;i<20;i++)
{for(j=0;j<10;j++)
{fscanf(fp,"%d,",&xx[i*10+j]);
printf("%d ",xx[i*10+j]);
}
printf("\n");
}
fclose(fp);
}
void main()
{
int cnt,xx[N],min;
float pj;
FILE *fw;
clrscr();
fw=fopen("out.dat","w");
read_dat(xx);
printf("\n\nmin=%d,cnt=%d,pj=%6.2f\n",min,cnt,pj);
fprintf(fw,"%d\n%d\n%6.2f\n",min,cnt,pj);
fclose(fw);
}
/* 注:记住是求次最小数。*/
void main()
{
int cnt,xx[N],min;
float pj;
FILE *fw;
int i,min0; /* min0存绝对值最小的数,不是绝对值。min是绝对值次小的数,也不是绝对值。*/
clrscr();
fw=fopen("out.dat","w");
read_dat(xx);
min0=xx[0];
for(i=0;i<N;i++)
if(abs(xx[i])<=abs(min0))
min0=xx[i];
else
min=xx[i];
cnt=0;
pj=0.0;
for(i=0;i<N;i++)
if(abs(xx[i])<abs(min) && abs(xx[i])>abs(min0))
{
min=xx[i];
cnt=1;
}
else
if(abs(xx[i])==abs(min))
cnt++;
for(i=0;i<N;i++)
if(abs(xx[i])!=abs(min))
pj+=xx[i];
pj/=(200-cnt);
printf("\n\nmin=%d,cnt=%d,pj=%6.2f\n",min,cnt,pj);
fprintf(fw,"%d\n%d\n%6.2f\n",min,cnt,pj);
fclose(fw);
}