杭电ACM大赛2000关于ASCII码排序的问题

#include <iostream>
using namespace std;
int main()
{
    char a[3];
    for (int i=0;i<3;i++)
    cin>>a[i];
    if(a[0]>a[1])
    {
        a[0]=a[0]+a[1];
        a[1]=a[0]-a[1];
        a[0]=a[0]-a[1];
    }
    if(a[1]>a[2])
    {
        a[1]=a[1]+a[2];
        a[2]=a[1]-a[2];
        a[1]=a[1]-a[2];
    }
    if(a[0]>a[2])
    {
        a[0]=a[0]+a[3];
        a[3]=a[0]-a[3];
        a[0]=a[0]-a[3];
    }
    cout<<a[0]<<" "<<a[1]<<" "<<a[2]<<endl;
}

//不知道上面的代码哪里出错啦?通不过,下面为正解

#include <iostream>
#include <algorithm>
using namespace std;
int main(void)
{
	char n[4];
	while (cin >> n)
	{
		if (n[0] > n[1]) swap(n[0], n[1]);
		if (n[1] > n[2]) swap(n[1], n[2]);
		if (n[0] > n[1]) swap(n[0], n[1]);
		cout << n[0] << " " << n[1] << " " << n[2] << endl;
	}
	return 0;
}

文章导航