三整数大小排序

    xiaoxiao2022-06-22  18

    输入三个整数,从小到大排序后输出。

    样例输入:20 7 33

    样例输出:7 20 33

    思路一:

    a b c三个数共有6中可能的顺序,使用6条if语句

    #include<stdio.h> int main(){ int a,b,c; scanf("%d%d%d",&a,&b,&c); if(a<=b&&b<=c) printf("%d %d %d\n",a,b,c); if(a<=c&&c<=b) printf("%d %d %d\n",a,c,b); if(b<=a&&a<=c) printf("%d %d %d\n",b,a,c); if(b<=c&&c<=a) printf("%d %d %d\n",b,c,a); if(c<=a&&a<=b) printf("%d %d %d\n",c,a,b); if(c<=b&&b<=a) printf("%d %d %d\n",c,b,a); return 0; } 输入111,输出6次。

    思路二:改进 使用if else语句,排除情况的交叉

    #include<stdio.h> int main(){ int a,b,c; scanf("%d%d%d",&a,&b,&c); if(a<=b&&b<=c)printf("%d %d %d\n",a,b,c); else if(a<=c&&c<=b)printf("%d %d %d\n",a,c,b); else if(b<=a&&a<=c)printf("%d %d %d\n",b,a,c); else if(b<=c&&c<=a)printf("%d %d %d\n",b,c,a); else if(c<=a&&a<=b)printf("%d %d %d\n",c,a,b); else(c<=b&&b<=a)printf("%d %d %d\n",c,b,a); return 0; }思路三:把abc三个变量本身改成a<=b<=c的形式。依次比较ab ac bc

    #include<stdio.h> int main(){ int a,b,c,temp; scanf("%d%d%d",&a,&b,&c); if(a>b){//交换ab的大小 temp=a; a=b; b=temp; } if(a>c){ temp=a; a=c; c=temp; } if(b>c){ temp=b; b=c; c=temp; } printf("%d %d %d\n",a,b,c); return 0; } 思路四:求出三个数的最大值、最小值,再计算中间值。

    #include<cmath> int main(){ int a,b,c,x,y,z; scanf("%d%d%d",&a,&b,&c); x=a;if(b<x)x=b;if(c<x)x=c;//x为最小值 z=a;if(b>z)z=b;if(c>z)z=c;//z为最大值 y=a+b+c-x-z; printf("%d %d %d\n",x,y,z); return 0; }

    转载请注明原文地址: https://ju.6miu.com/read-1123080.html

    最新回复(0)