问题 C: 例题4-3 比较交换3个实数值,并按序输出

问题 C: 例题4-3 比较交换3个实数值,并按序输出

时间限制: 1 Sec 内存限制: 12 MB

献花: 210 解决: 190

[献花][花圈][TK题库]

题目描述

从键盘输入3个实数a, b, c,通过比较交换,将最小值存储在变量a中,最大值存储在变量c中,中间值存储在变量b中,并按照从小到大的顺序输出这三个数a, b, c。

末尾输出换行。

输入

输入以空格分隔的三个实数

输出

按照从小到大的顺序输出这三个实数,中间以空格分隔,最小值在前,最大值在后。小数点后保留2位小数。

注意末尾的换行。

样例输入

3 7 1

样例输出

1.00 3.00 7.00
答案:

问题 C: 例题4-3 比较交换3个实数值,并按序输出

时间限制: 1 Sec 内存限制: 12 MB

献花: 210 解决: 190

[献花][花圈][TK题库]

题目描述

从键盘输入3个实数a, b, c,通过比较交换,将最小值存储在变量a中,最大值存储在变量c中,中间值存储在变量b中,并按照从小到大的顺序输出这三个数a, b, c。

末尾输出换行。

输入

输入以空格分隔的三个实数

输出

按照从小到大的顺序输出这三个实数,中间以空格分隔,最小值在前,最大值在后。小数点后保留2位小数。

注意末尾的换行。

样例输入

3 7 1

样例输出

1.00 3.00 7.00
答案:

#include<stdio.h>

int main(){

double a,b,c,t;

scanf("%lf %lf %lf",&a,&b,&c);

//a=1;

//b=7;

//c=3;

if(a>b){

t=b;

b=a;

a=t;

}

if(b>c){

t=c;

c=b;

b=t;

}

if(a>b){

t=b;

b=a;

a=t;

}

printf("%.2f %.2f %.2f",a,b,c);

return 0;

}

思路:

两个数的排序,只需要比较一下,如果第一个比第二个大,交换一下,否则什么都不用做。

三个数的排序 ,可以先将前两个排序,保证第一个比第二个小。

然后将第二个和第三个数排序,保证第二个比第三个小。

经过上面两次排序,保证了第三个是最大的,但不能保证第二个还比第一个大,因为第二次排序的时候可能改变了第二个数。因此,还要再将前两个数进行排序。最终保证了三个整数从小到大排列。