问题来源:XYOJ??http://xyoj1.xynu.edu.cn/problem.php?id=1043
题目描述
从键盘输入3个实数a, b, c,通过比较交换,将最小值存储在变量a中,最大值存储在变量c中,中间值存储在变量b中,并按照从小到大的顺序输出这三个数a, b, c。
末尾输出换行。
输入格式
输入以空格分隔的三个实数
输出格式
按照从小到大的顺序输出这三个实数,中间以空格分隔,最小值在前,最大值在后。小数点后保留2位小数。
注意末尾的换行。
?分析:要想三个数比较大小并且重新排序,就要让他们两两比较并交换。此时就用到了C语言中比较重要的一个知识点:比较并交换。
比较是比较简单的,使用if判断语句即可。
交换则需要引入一个临时中间变量‘ t ’。
例如:比较a,b两个数的大小并排序。先判断a,b的大小,接着交换a,b位置,将较小的数换到前面。
if (a>b){
t=a;
a=b;
b=t;}
这样就可以将较小的数移动到前面了。
同理,三个数道理相同:
# include <stdio.h> // 引入标准输入输出库
int main(){ // 主函数开始
int a,b,c,t; // 定义四个整型变量a, b, c, t
scanf ("%d%d%d",&a,&b,&c); // 从标准输入读取三个整数并赋值给a, b, c
if (a>b){ // 如果a大于b
t=a; // 将a的值赋给临时变量t
a=b; // 将b的值赋给a
b=t; // 将临时变量t的值赋给b
}
if (a>c){ // 如果a大于c
t=a; // 将a的值赋给临时变量t
a=c; // 将c的值赋给a
c=t; // 将临时变量t的值赋给c
}
if (b>c){ // 如果b大于c
t=b; // 将b的值赋给临时变量t
b=c; // 将c的值赋给b
c=t; // 将临时变量t的值赋给c
}
printf("%.2f %.2f %.2f\n",(float)a,(float)b,(float)c); // 将排序后的三个数以浮点数的形式输出,保留两位小数
} // 主函数结束
#include<stdio.h>
int main(){
int a,b,c,d,t;
scanf("%d%d%d%d",&a,&b,&c,&d);
if(a>b){
t=a;
a=b;
b=t;
}
if(a>c){
t=a;
a=c;
c=t;
}
if(a>d){
t=a;
a=d;
d=t;
}
if(b>c){
t=b;
b=c;
c=t;
}
if(b>d){
t=b;
b=d;
d=t;
}
if(c>d){
t=d;
d=c;
c=t;
}
printf("%d %d %d %d",a,b,c,d);
}
?