/*编写一个程序,提示用户输入3组数,每组数包含5个double类型的数(假设用户都正确地响应,不会输入非数值数据)。
该程序应完成下列任务。
a.把用户输入的数据存储在3×5的数组中
b.计算每组(5个)数据的平均值
c.计算所有数据的平均值
d.找出这15个数据中的最大值
e.打印结果每个任务都要用单独的函数来完成(使用传统C处理数组的方式)。
完成任务b,要编写一个计算并返回一维数组平均值的函数,利用循环调用该函数3次。
对于处理其他任务的函数,应该把整个数组作为参数,完成任务c和d的函数应把结果返回主调函数。
*/
#include<stdio.h>
#define ROWS 3
#define COLS 5
void store(double ar[][COLS]);
void average_row(double ar[][COLS]);
void average_all(double ar[][COLS]);
void max_all(double ar[][COLS]);
int main(void)
{
double a[ROWS][COLS] = { 0 };
store(a);
average_row(a);
average_all(a);
max_all(a);
return 0;
}
void store(double ar[][COLS])
{
int i, j;
double n;
printf("请输入15个数字:");
//scanf("%lf", &n);
for (i = 0; i < ROWS; i++)
{
for (j = 0; j < COLS; j++)
{
scanf("%lf", &n);
ar[i][j] = n;
}
}
}
void average_row(double ar[][COLS])
{
int i, j;
double sum;
for (i = 0; i < ROWS; i++)
{
for (j = 0, sum = 0; j < COLS; j++)
{
sum += ar[i][j];
}
printf("ROW %d average = %lf\n",i, sum / COLS);
}
}
void average_all(double ar[][COLS])
{
int i, j;
double sum;
for (i = 0,sum = 0; i < ROWS; i++)
{
for (j = 0; j < COLS; j++)
{
sum += ar[i][j];
}
}
printf("average of all is %lf\n", sum / (ROWS * COLS));
}
void max_all(double ar[][COLS])
{
int i, j;
double max;
for (max = 0, i = 0; i < ROWS; i++)
{
for (j = 0; j < COLS; j++)
{
if (max < ar[i][j])
max = ar[i][j];
}
}
printf("最大值为 %lf\n", max);
}
C PRIMER PLUS(第六版编程练习)10.13编程练习_13题
最新推荐文章于 2024-01-02 14:32:44 发布