C语言:使三个数按照从大到小的顺序输出

       此题的解决思路为:三个数a,b,c,将a与b进行比较,若b大于a则交换a和b,把较大的数储存在a中。同理将a与c进行比较,若c大于a则交换a和c,仍然把较大的数储存在a中。然后再比较b和c,把b与c之间较大的数储存在b中。利用for循环语句和if判断语句来实现。最后就能使三个数按照从大到小的顺序输出。

       初次设想的具体代码如下:

#include<stdio.h>
int main()
{
	int a = 25;
	int b = 56;
	int c = 98;
	int tmp = 0;//定义一个临时变量tmp,用于交换
	if (a < b)//首先判断a与b的大小,将较大的数放在a中
	{
		tmp = a;
		a = b;
		b = tmp;
	}
	if (a < c)//再判断a与c的大小,仍然将较大的数放在a中
	{
		tmp = a;
		a = c;
		c = tmp;
	}
	if (b < c)//最后判断b和c,将b和c之间较大的数储存在b中
	{
		tmp = b;
		b = c;
		c = tmp;
	}
	printf("%d %d %d ", a, b, c);
	getchar();
	return 0;
}

       观察上述代码,可以发现每次判断的部分都为交换两个数,所以我们可以考虑将此部分设定为一个函数,方便调用,也可以使整体代码看起来更加轻便。所以进行以下优化。

       但我们在设置函数的时候需要注意的是,在给函数传参的时候传递给函数的是两个数在内存中的地址,所以我们在函数中需要使用指针,需要定义一个指针变量x,y,然后在每一次对比交换两个数个过程中,把两个数的地址传递给指针变量x,y,这样就可以很好地调用函数。并且整体的代码就不会冗余。

       优化具体代码如下:

#include<stdio.h>
int main()
void Swap (int *x, int *y)//定义一个交换Swap函数,方便使用。用指针变量x,y来接受传递过来的参数
{
	int tmp = *x;//交换过程
	*x = *y;
	*y = tmp;
}
int main()
{
	int a = 25;
	int b = 56;
	int c = 98;
	int tmp = 0;
	if (a < b)
	{
		Swap(&a, &b);//调用函数,给Swap函数传递的是a和b的取地址
	}
	if (a < c)
	{
		Swap(&a, &c);
	}
	if (b < c)
	{
		Swap(&b, &c);
	}
	printf("%d %d %d ", a, b, c);
	getchar();
	return 0;
}

  • 5
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值