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

发布时间:2024年01月22日

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

?

文章来源:https://blog.csdn.net/weixin_75136217/article/details/135727631
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。