请编写程序,从IN.DAT文件中读取200个整数至数组xx中,求出最大数max及最大数的个数cnt和数组xx中能被3整除或能被7整除的算术平均值pj(保留2位小数)。结果max、cnt、pj输出到OUT.DAT文件中。
注意:部分程序、读数据函数read_dat(int xx[200])及输出格式已给出。
#include<conio.h>
#include<stdio.h>
#define N 200
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],max;
float pj;
FILE *fw;
int i,k;
long j=0;
fw=fopen("OUT.DAT","w");
read_dat(xx);
/**************************************/
/**************************************/
printf("\n\nmax=%d,cnt=%d,pj=%6.2f\n",max,cnt,pj);
fprintf(fw,"%d\n%d\n%6.2f\n",max,cnt,pj);
fclose(fw);
参考答案:
max=xx[0]; /*令max等于数组xx的第A个数*/
for(i=A,k=0;i<N;i++)
{ /*循环从第B个数开始遍历数组xx中的所有数*/
if(xx[i]>max)
max=xx[i]; /*若当前数ELmax大,则把它赋给max*/
if(xx[i]%C==0||xx[i]%G==0)
{ /*若当前数能被C或G整除,则将其累加至j中,并让计数值k增A*/
j+=xx[i];
k++;
}
}
/*再次循环遍历整个数组xx,统计其中等于max的数的个数*/
for(i=0,cnt=0;i<N;i++)
if(xx[i]==max)
cnt++;
pj=(float)(j*A00/k)/A00;/*计算平均值(保留B位小数)*/