C语言——三个数排序问题

问题来源: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);
}

  • 24
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值