请补充完整程序,使得程序能实现以下功能: 从文件IN.dat中读取200个整数至数组number中,求出最大数max及最大数的个数cnt和数组number中能被3整除或能被7整除的算术平均值ave(保留2位小数)。把结果max、 cnt、ave输出到

admin2011-11-13  36

问题 请补充完整程序,使得程序能实现以下功能:
   从文件IN.dat中读取200个整数至数组number中,求出最大数max及最大数的个数cnt和数组number中能被3整除或能被7整除的算术平均值ave(保留2位小数)。把结果max、 cnt、ave输出到OUT. dat文件中。
   注意:部分程序、读数据函数read_ dat (int number[200])及输出格式已给出。
#include <conio. h>
#include <stdio. h>
#define  N 200
void read_ dat(int number[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,",  &number[i*10+j]);
           printf("%d ", number[i*10+j]);
       }
       printf ("\n");
   }
   fclose (fp);
}
void main ()
{   int  cnt, number[N], max;
   float  ave;
   FILE  *fw;
   int   i,  k; ’
   long  j = 0;
   fw = fopen("OUT.dat",  "w");
   read_ dat (number);
   / ************************************************ /
   / ************************************************ /
   printf("\n\nmax=%d, cnt=%d, ave=%6.2f\n", max, cnt, ave);
   fprintf(fw,  "%d\n%d\n%6.2f\n", max, cnt, ave);
   fclose (fw);
}

选项

答案max = number[0]; for (i=1, k=0; i<N; i++) { if (number[i] > max) max = number[i]; if (number[i]%3==0 || number[i]%7==0) { j += number[i]; k++; } } for (i=0, cnt=0; i<N; i++) if (number[i] == max) cnt++; ave = (float) (j*100/k)/100; [解题思路] 用整型变量max保存数组number中元素的最大值,首先把数组number的第一个元素number[0]存入max中;然后在for循环语句中当循环变量i从1递增到N-1时, 对数组number中的每一个元素number[i]与max进行比较,如果表达式number[i]>max成立,则把数组元素number[i]的值存入变量max中;再用表达式number[i]%3==0|| number[i]%7==0判断number[i]能否被3或7整除,如果表达式结果值为真,则把数组元素 number[i]的值与变量j的值相加,同时计数变量k加1。退出循环后,变量max中的值就是数组number中元素的最大值,再用for循环语句对数组number中的每一个元素与max的值进行相等的判断,如果number[i]的值等于max,则计数变量cnt加1。最后用表达式 (float)(j*100/k)/100求得数组number中能被3整除或能被7整除的算术平均值。

解析
转载请注明原文地址:https://kaotiyun.com/show/6gvZ777K
0

最新回复(0)