此代码只为实现作业要求,并不是最优解!
整体思路:
1.先定义一个num[ ]数组用于存放输入的数字,将默认值置0;
2. 再定义一个max[ ]数组用于存放对num数组的一次遍历中最大的值
3.一次num数组的遍历结束后,将其最大值赋给max数组,并用n记录最大值的地址
4.通过n记录的地址将相对应的num置0(抛弃)
5.对剩余num重复步骤3,4,直至抛弃所有num,并将最大值依次赋给max数组
6.设置循环输出max,实现大小排序
代码如下
#include <stdio.h>
int main(int argc, const char *argv[])
{
int num[100] = {};//存放输入值
int max[100] = {};//存放比较值
int n = 0; //记录一次对输入值的遍历中,最大数的地址
printf("输入数字:\n");
//输入
for (int i = 0; i < 100; i++)
{
scanf("%d", &num[i]);
}
//遍历max
for (int k = 0; k < 100; k++)
{
//遍历num
for (int j = 0; j < 99; j++)
{
//当前值大于后来值
if (num[j] >= num[j + 1])
{
if (max[k] < num[j])
{
max[k] = num[j];//记录最大数
n = j;//记录最大值的地址
}
}
//后来值大于当前值
else
{
if (max[k] < num[j + 1])
{
max[k] = num[j + 1];//记录最大数
n = j + 1;//记录最大值的地址
}
}
}
num[n] = 0;//将一次num遍历中的最大值置0
}
//遍历输出大值
for (int m = 0; m < 100; m++)
{
printf("%d>", max[m]);
}
return 0;
}