目录
题目
编程对数组的N个数进行 升序 / 降序 排列
分析思路
用宏定义定义N,并确定N的大小。定义数组并赋值。用两组for循环解决:
代码(升序)
#include <stdio.h>
#define N 8
void main()
{
int i, j, t;
int a[N] = { 52,61,14,93,39,24,85,16 };
printf("排序前:\n");
for (i = 0; i < 8; i++)
{
printf("%5d", a[i]);
if ((i+1)%4 == 0)
printf("\n");
}
for (i = 0; i < N-1; i++)
{
for (j = 0; j < N-1; j++)
{
if (a[j] > a[j+1])
{
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
}
printf("排序后:\n");
for (i = 0; i < 8; i++)
{
printf("%5d", a[i]);
if ((i + 1) % 4 == 0)
printf("\n");
}
}
知道了升序改为降序很简单,只需要在判断的时候将 > 改为 < ,让前一项大于后一项即可。
代码(降序)
#include <stdio.h>
#define N 8
void main()
{
int i, j, t;
int a[N] = { 52,61,14,93,39,24,85,16 };
printf("排序前:\n");
for (i = 0; i < 8; i++)
{
printf("%5d", a[i]);
if ((i+1)%4 == 0)
printf("\n");
}
for (i = 0; i < N-1; i++)
{
for (j = 0; j < N-1; j++)
{
if (a[j] < a[j+1])
{
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
}
printf("排序后:\n");
for (i = 0; i < 8; i++)
{
printf("%5d", a[i]);
if ((i + 1) % 4 == 0)
printf("\n");
}
}
希望这篇文章对大家有用,如有错误请指出,我会改正哒。