题目:编写一个程序,提示用户输入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 Input(double(*ar)[COLS], int n); //处理输入数据任务函数
void average_1(const double(*ar)[COLS], int n); //计算每组(5个)数据的平均值函数
double average_2(const double(*ar)[COLS], int n); //计算所有数据的平均值函数
double Max(const double(*ar)[COLS], int n); //找出这15个数据中的最大值函数
void show(double(*ar)[COLS], int n); //打印赋值后数组的数据函数
int main(void)
{
double ar[ROWS][COLS];
double data;
Input(ar, ROWS); //处理输入数据任务函数
show(ar, ROWS); //打印赋值后数组的数据函数
average_1(ar, ROWS); //计算每组(5个)数据的平均值函数
data= average_2(ar, ROWS); //计算所有数据的平均值函数
printf("所有数据的平均值: %.2lf\n", data);
printf("15个数据中的最大值: %.2lf\n", Max(ar, 3)); //打印找出这15个数据中的最大值函数的返回值
return 0;
}
void Input(double(*ar)[COLS], int n) //处理输入数据任务函数
{
for (int i = 0; i < n; i++) {
printf("请输入第%d组数据(5个数):", i + 1);
for (int j = 0; j < COLS; j++)
scanf_s("%lf", &ar[i][j]);
}
}
void average_1(const double(*ar)[COLS], int n) //计算每组(5个)数据的平均值函数
{
for (int i = 0; i < n; i++) {
double sum = 0.0;
for (int j = 0; j < COLS; j++)
sum += ar[i][j];
printf("第%d组数组的平均值:%.2f\n", i + 1, sum / 5);
}
}
double average_2(const double(*ar)[COLS], int n) //计算所有数据的平均值函数
{
double sum = 0.0;
for (int i = 0; i < n; i++)
for (int j = 0; j < COLS; j++)
sum += ar[i][j];
return sum / 15;
}
double Max(const double(*ar)[5], int n) //找出这15个数据中的最大值函数
{
double max = ar[0][0];
for(int i=0;i<n;i++)
for (int j = 0; j < COLS; j++) {
if (max < ar[i][j])
max = ar[i][j];
}
return max;
}
void show(double(*ar)[5], int n) //打印赋值后数组的数据函数
{
printf("数组的数据:\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < 5; j++)
printf("%.2lf\t", ar[i][j]);
printf("\n");
}
}
假定输入的数据:
第一组:1.0 , 2.0, 3.0, 4.0, 5.0;
第二组:1.1, 2.2, 3.3, 4.4, 5.5;
第三组:10.0, 7.7, 6.6, 9.9, 8.8;
注意输入数据时,每个数字之间要加空格。
结果: