编写一个函数void minmaxave(int a[ ],int n)完成对大小为n的数组找出最大值最小值并输出,
编写一个函数void sort(int a[ ],int n,int m)完成对大小为n的数组从小到大的排序,
但排序时必须根据m的的值选用算法:当m为1时用冒泡法排序;
当m为2时用选择排序;
当m为其他值时不排序。
再编写主函数,先从键盘输入20个数存入一个数组再输出,
然后分别调用上面第一个函数求该组数的最小、最大、平均值,调用第二个函数先排序然后将排序结果输出。
#include<stdio.h>
#define n 20int main(){void minmaxavg(int a[], int );void sort(int a[], int , int );int a[n], m, i;for (i = 0;i < n ;i++){scanf("%d", &a[i]);printf("%d “, a[i]);}printf(“请输入m的值:”);scanf(”%d", &m);minmaxavg(a, n);sort( a, n , m);}void minmaxavg(int a[], int N){int avg, max=a[0],min=a[0],sum = 0,i;for (i = 0;i < N;i++){if (max < a[i])max = a[i];else if (min > a[i])min = a[i];sum += a[i];}avg = sum / N ; printf(“它们的和是%d,平均值是%d,其中最大值是%d,最小值是%d\n”, sum, avg, max, min);}void sort(int a[], int N, int m){int j;if (m == 1)//冒泡法{int i, j, t;for (i = 1;i < N;i++)for (j = 0;j < N - i;j++)if (a[j] < a[j + 1])t = a[j], a[j] = a[j + 1], a[j + 1] = t;for (i = 0;i < N;i++)printf("%d “, a[i]);}else if (m == 2)//选择法{int i, pos, min,j;for (i = 0;i < N - 1;i++){min = a[i];pos = i;for (j = i + 1;j < N;j++)if (a[j] < min){min = a[j];pos = j;}a[pos] = a[i];a[i] = min;}printf(“排序后为:”);for (j = 0;j < N;j++)printf(”%d “, a[j]);}else {printf(“由于没有选择排序,所以原样输出:”);for (j = 0;j < N;j++)
printf(”%d ", a[j]);
}
}