使用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,大家默认补上就行)
最后用&&
#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;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!