C++比较三个数大小

使用vs2022编写比较三个数大小并按大小顺序输出

#include <stdio.h>
int main()
{
int a=0, b=0, c=0, f=0, g=0, h=0, j=0, k=0, l=0, y=0, u=0, o=0;
scanf_s("% % %", &a, &b, &c);
{
f = (a > b && a > c) ? 1 : 0;
g = (a < b && a < c) ? 1 : 0;
h = (b > a && b > c) ? 1 : 0;
j = (b < a && b < c) ? 1 : 0;
k = (c > a && c > b) ? 1 : 0;
l = (c < a && c < b) ? 1 : 0;
y = ((f == j) || (g == h)) ? 1 : 0;
u = ((f == l) || (g == k)) ? 1 : 0;
o = ((h == l) || (j == k)) ? 1 : 0;
}
printf("% % %", (f * a + h * b + k * c), (y * c + u * b + o * a), (g * a + j * b + l * c));
return 0;
}

只能正确输出最大值和最小值,中间值无法正确输出,请大家帮忙康康哪里有问题,谢谢
(不知道为什么网页提交问题后不允许出现d,大家默认补上就行)

最后用&&

img


img

#include <stdio.h>
int main()
{
int a=0, b=0, c=0, f=0, g=0, h=0, j=0, k=0, l=0, y=0, u=0, o=0;
scanf("%d %d %d", &a, &b, &c);
{
f = (a > b && a > c) ? 1 : 0;//a最大
g = (a < b && a < c) ? 1 : 0;//a最小
h = (b > a && b > c) ? 1 : 0;
j = (b < a && b < c) ? 1 : 0;
k = (c > a && c > b) ? 1 : 0;
l = (c < a && c < b) ? 1 : 0;
y = ((f == j) && (g == h)) ? 1 : 0;
u = ((f == l)&& (g == k)) ? 1 : 0;
o = ((h == l) && (j == k)) ? 1 : 0;
}
printf("%d %d %d", (f * a + h * b + k * c), ( y * c + u * b + o * a ), (g * a + j * b + l * c));
return 0;
}


封装个函数实现

#include <iostream>
using namespace std;
int getminmax(int a, int b,int flag)
{
    if(flag == 1)
    {
          if(a > b)
                return a;
          return b;
    }
    else if(a < b)
          return a;
    return b;
}
int main()
{
    int a,b,c;
    cin>>a>>b>>c;
    int max = getminmax(getminmax(a,b,1),c,1);
    int min = getminmax(getminmax(a,b,0),c,0);
    cout<<"三个值排序为:"<<max<<">"<<a+b+c-min-max<<">"min<<endl;
    return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632