问题描述:在C语言中,三个数怎样比较大小呢,我们怎样可以把他们按从大到小进行排列呢?(这个问题下面展示)或者从小到大级进行排序呢(这个问题读者自己解决哦,相同的思想)?
我们可以这样想,假设有三个房子,里面住着三个数【a】【b】【c】,随机拿其中一个数与其他两个数进行比较,最大的那个数放在第一个位置里,然后剩余两个数进行比较,放在相应的位置。
(红色箭头代表两束进行比较)但是此时我们遇见一个问题,里面原本住着人,我们不能是最大就去抢别人的房子吧,现在可是法制社会。怎样才能让它走呢,这时我们不难想到,创建一个更好的家,它会离开了。这是我们就应该创建一个新的变量,让它们在相应的位置。图画的不行,还想画的,发现自己对软件不熟悉,就没有画了。更多描述,在代码里。
#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main() { //创建三个房子: int a = 0; int b = 0; int c = 0; scanf("%d %d %d", &a, &b, &c); //假设我们设定,a里面住最大的数,b其次,c最小。 //下面进行交换房子: if (a < b) { int temp = a;//创建一个新房子,让a搬走: a = b;//让b住进a的房间,a一定要在前面,因为原本是a的房子,必须经过a的同意了,别人才能住进去: b = temp;//a住进b的房子: } if (a < c) { int temp = a; a = c; c = temp; } if (b < c) { int temp = b; b = c; c = temp; } //如果前面三个if条件都不满足的话,那大小排序就是我们想要的:a>b>c; printf("%d %d %d", a, b, c); return 0; }
运行结果如上。
重要环节:
1:需要创建一个新房子,进行交换位置
2:交换位置时,一定要让原来在这房子里面的主人在前面,因为要经过主人的同意,才可以住进去
3:没有进入if条件,那么说明,此时的排序是我们想要的
第一次写,如果有什么错误,希望大家可以指出,欢迎探讨。