这是我在一次偶然的发呆中想到的一个功能,为什么不能输入多个数字,再让程序去判断这些数的大小。
原来我是想通过变量赋值的方法去完成一个从大到小还是从小到大的判断的,但后面发现不行,也就直接用分开的算法来了
for (j = 1; j < 20; j++)
for (i = 1; i <= 20 - j; i++)
{
if(size=='>'){
if (a[i] < a[i + 1])//小于时交换数组中的值
{
t = a[i];
a[i] = a[i + 1];
a[i + 1] = t;
}}
else
{
if (a[i] > a[i + 1])//大于时交换数组中的值
{
t = a[i];
a[i] = a[i + 1];
a[i + 1] = t;
}
}
}
后面也想过让用户来选择需要排序的。
printf("请输入需要排序的数字数量:");
scanf_s("%d", &js);
int a[js];
但是后面发现编译器好像无法完成编译,也就放弃了这个想法了
完整代码。另外代码打得比较仓促,可能会有些不好的地方,这里大家见谅一下。后续看有时间没有把没完成的功能完成一下
#include "stdio.h"
int main()
{
int i, j, t;
char size;
int a[20];
printf("排序方式,输入<或者>:");
ret:
size = getchar();
if(size == '<' || size == '>')//对输入的数据进行检查
{
printf("输入数据有误 请参考提示输入\n");
goto ret;
}
printf("请输入 20 个数字:\n");
for (i = 1; i <= 20; i++)
{
printf("计数 第%d次 输入:", i);//提示输入
scanf("%d", &a[i]);
if (i == 20)
printf("\n完成输入,进入计算.....");
}
for (j = 1; j < 20; j++)
for (i = 1; i <= 20 - j; i++)
{
if(size=='>'){
if (a[i] < a[i + 1])//小于时交换数组中的值
{
t = a[i];
a[i] = a[i + 1];
a[i + 1] = t;
}}
else
{
if (a[i] > a[i + 1])//大于时交换数组中的值
{
t = a[i];
a[i] = a[i + 1];
a[i + 1] = t;
}
}
}
if (size == '>')
printf("\n 这些数由大到小顺序是:");
else
printf("\n 这些数由小到大顺序是:");
for (i = 1; i <= 20; i++)
printf("%-2d", a[i]);
getchar();
return 0;
}