全国计算机等级考试上机题(南开100题)第92题
92:请编制程序,从文件in.dat中读取200个整数至数组xx中,求出最大数max及最大数的个数cnt和数组xx中值能被3整除或能被7整除的算求增均值pj(保留2位小数)。结果cnt1,cnt2,pj输出到out.dat中。
部分程序、读数据函数read_dat(int xx[200])及输出格式已给出。
--------------------
max=xx[0]; /*标准答案*/
for(I=1,k=0;I<N;I++)
{if (xx[I]>max) max=xx[I];
if (xx[I]%3==0||xx[I]%7==0)
{j+=xx[I];k++;}
}
for(I=0,cnt=0;I<N;I++)
if (xx[I]==max) cnt++;
pj=(float)(j*100/k)/100;
或者:
cnt=0;max=xx[0];pj=0.0;
for(i=0;i<N;i++)
if(max<xx) max=xx;
for(i=0;i<N;i++)
if(xx==max) cnt++;
for(i=0;i<N;i++)
if(xx%3==0||xx%7==0)
{ pj+=xx; k++; }
pj/=k;
原程序如下:
#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 cnt1,cnt2,xx[N],i;
float pj;
FILE *fw;
fw=fopen("out.dat","w");
clrscr();
read_dat(xx);
/*请补充...*/
printf("\n\ncnt1=%d,cnt2=%d,pj=%6.2f\n",cnt1,cnt2,pj);
fprintf(fw,"%d\n%d\n%6.2f\n",cnt1,cnt2,pj);
fclose(fw);
}