【答案】
void main()
{
int i,k,cnt,xx[N],max;
float pj;
FILE *fw;
long j=0;
clrscr();
fw=fopen("out92.dat","w");
read_dat(xx);
max=xx[0];
for(i=1,k=0;i<N;i++)
{ 来源:考试大
if(xx[i]>max)
max=xx[i]; /*求出数组xx中最大数max*/
if(xx[i]%3==0 ||xx[i]%7==0)
{
j+=xx[i]; /*求出数组xx中值能被3整除或能被7整除的数的总和*/
k++;
}
}
for(i=0,cnt=0;i<N;i++)
if(xx[i]==max)
cnt++; /*求出数组xx中最大数max的个数*/
pj=(float)(j*100/k)/100;
/*求出数组xx中值能被3整除或能被7整除的数的平均值*/
printf("nnmax=%d,cnt=%d,pj=%6.2fn",max,cnt,pj);
fprintf(fw,"%dn%dn%6.2fn",max,cnt,pj);
fclose(fw);
}
【解析】根据题意得,要编写的代码应该具有两个功能,一是求出数组中的最大数以及最大数的个数;二是求出数组xx中值能被3整除或能被7整除的数的平均值。
首先,要找出数组中最大的元素。先定义第1个元素为最大值max,然后依次和后面的元素比较,每次比较完成后都将较大的数保存入max中。
接着,被3整除和被7整除两个条件满足一个即可,所以两个条件之间用"或"运算。本题要求对平均值的计算结果保留两位小数。因为运算符"/"在这里的含义是整除,而我们要保留小数,所以要使用强制类型转换将结果转换为浮点型,这样就可以实现保留两位小数。