C语言排序

这是我在一次偶然的发呆中想到的一个功能,为什么不能输入多个数字,再让程序去判断这些数的大小。

原来我是想通过变量赋值的方法去完成一个从大到小还是从小到大的判断的,但后面发现不行,也就直接用分开的算法来了

		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;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值