问题 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;
}
思路:
两个数的排序,只需要比较一下,如果第一个比第二个大,交换一下,否则什么都不用做。
三个数的排序 ,可以先将前两个排序,保证第一个比第二个小。
然后将第二个和第三个数排序,保证第二个比第三个小。
经过上面两次排序,保证了第三个是最大的,但不能保证第二个还比第一个大,因为第二次排序的时候可能改变了第二个数。因此,还要再将前两个数进行排序。最终保证了三个整数从小到大排列。