任务描述
本关任务:用户输入测试集中所给的N 个正整数存入数组 a 中,输出 a 中的最大值,最小值及求出其平均值(保留两位小数)。 请用平台给的测试集输入,对你编写的代码进行测试,请在输入时,用第一个数代表你要输入几个整数,后面的值为你给的若干正整数。
测试输入:
4 91 51 2 32
预期输出(依次输出最大值、最小值和平均值,每两个数之间一个空格):
91 2 44.00
测试输入:
5 1 151 12 22 100
预期输出(依次输出最大值、最小值和平均值,每两个数之间一个空格):
151 1 57.20
代码实现
#include <stdio.h>
int main(void)
{
int N;//本关任务:用户输入测试集中所给的N
scanf("%d", &N);
int a[N - 1];
int j, t, k;
int sum = 0, max, min;
double ave = 0;
for (j = 0; j < N; j++)
{
scanf("%d ", &a[j]);
}
for (j = 0; j < N; j++)
{
k = a[j];
sum = sum + k;
}
ave = (double)sum / N;
for (j = 1; j < N; j++)//控制位数循环
{
for (t = 0; t < N - j; t++)//控制每个位数要执行的次数,冒泡法从上而下次数逐级递减1
{
if (a[t] > a[t + 1])//冒泡法排列大小。将数值从小到大填充进数组
{
k = a[t];
a[t] = a[t + 1];
a[t + 1] = k;
}
}
}
min = a[0];
for (j = 1; j < N; j++)//控制位数循环
{
for (t = 0; t < N - j; t++)//控制每个位数要执行的次数,冒泡法从上而下次数逐级递减1
{
if (a[t] < a[t + 1])//冒泡法排列大小。将数值从小到大填充进数组
{
k = a[t];
a[t] = a[t + 1];
a[t + 1] = k;
}
}
}
max = a[0];
printf("%d %d %0.2lf", max, min, ave);
return 0;
}