#include <stdio.h>
#define MAX 100000
void Asc_order(int a[], int n);//升序
void Des_order(int a[], int n);//降序
int main()
{
int n,i,j,tmp;//输入的个数,tmp交换时的临时变量
int num[MAX];
int sum;
float avg;
scanf("%d",&n);
for (i = 0; i < n; i++)
scanf("%d",&num[i]);
Asc_order(num,n);
for (j = 0; j < n; ++j)
printf("%d ", num[j]);
printf("\n");
Des_order(num,n);
for (j = 0; j < n; ++j)
printf("%d ", num[j]);
printf("\n");
sum = 0;//累加之前给sum初值
for (i = 0; i < n; i++)
sum += num[i];
avg = (float)sum / n;
printf("%d %d %.3f\n", n, sum, avg);
return 0;
}
void Asc_order(int a[], int n)
{
int i, j, t;
for (i = 0; i < n - 1; ++i)//n个数,总共需要进行n-1次
{ //n-1个数排完,第一个数一定已经归位
//每次会将最大(升序)或最小(降序)放到最后面
for (j = 0; j < n - i - 1; ++j)
{
if (a[j] > a[j + 1])//每次冒泡,进行交换 ,升序前者要比后者小
{
t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
}
}
}
}
void Des_order(int a[], int n)
{
int i, j, t;
for (i = 0; i < n - 1; ++i)//n个数,总共需要进行n-1次
{ //n-1个数排完,第一个数一定已经归位
//每次会将最大(升序)或最小(降序)放到最后面
for (j = 0; j < n - i - 1; ++j)
{
if (a[j] < a[j + 1])//每次冒泡,进行交换 ,前者要比后者大
{
t = a[j];
a[j] = a[j + 1];
a[j + 1] = t;
}
}
}
}
C语言 数组的排序,和与平均值。
最新推荐文章于 2023-12-30 18:22:57 发布