早教吧 育儿知识 作业答案 考试题库 百科 知识分享
早教吧考试题库频道 --> 计算机类考试 -->计算机三级 -->

请补充完整程序,使得程序能实现以下功能: 从文件IN.dat中读取200个整数至数组number中,求出最大

题目

请补充完整程序,使得程序能实现以下功能:

从文件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; iN; 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; iN; 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整除的算术平均值。
max = number[0]; for (i=1, k=0; iN; 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; iN; 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整除的算术平均值。