#include <iostream>
using namespace std;
int main()
{
int a, b, c, max;
cout<<"a="; cin>>a;
cout<<"b="; cin>>b;
cout<<"c="; cin>>c;
a>b?(max=a, a=b, b=max):a;
b>c?(max=b, b=c, c=max):a;
a>b?(max=a, a=b, b=max):a;
cout<<a<<" "<<b<<" "<<c;
}
这是一个代码,您可以在其中输入 3 个随机数,并将它们按顺序排列。但是,我不明白这部分:
a>b?(max=a, a=b, b=max):a;
b>c?(max=b, b=c, c=max):a;
a>b?(max=a, a=b, b=max):a;
它是如何工作的,为什么?
假设a = 6
,b = 54
和c = 12
。
a>b?(max=a, a=b, b=max):a; <-- 将 max 设置为 6,然后将 a 设置为 54,然后 54=max。然后比较 6 和 54 哪个是假的,并写一个 (6) 作为第一个数字?
b>c?(max=b, b=c, c=max):a; <-- 将最大值设置为 54,b=12,12=最大值。然后将 54 与 12 进行比较,这在我们的例子中是正确的,并将 c=12 写为第二个数字?
a>b?(max=a, a=b, b=max):a; <-- 将最大值设置为 6,a=54,54=最大值。然后将 6 与 54 进行比较,这是错误的并再次写入 6,wtf?
该程序本身可以正常工作。我只是不明白算法是如何工作的。