ASCII码排序
时间限制:
3000 ms | 内存限制:
65535 KB
难度:
2
-
描述
-
输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符。
-
输入
- 第一行输入一个数N,表示有N组测试数据。后面的N行输入多组数据,每组输入数据都是占一行,有三个字符组成,之间无空格。 输出
- 对于每组输入数据,输出一行,字符中间用一个空格分开。 样例输入
-
3 qwe asd zxc
样例输出
-
e q w a d s c x z
#include <iostream>
#include <string>
using namespace std;
void Swap(char& a, char& b)
{
char t = a;
a = b;
b = t;
}
void test()
{
int n = 0;
cin >> n;
char szIn[4];
while (n--)
{
cin >> szIn;
cout << szIn[0] << " " << szIn[1] << " " << szIn[2] << "\n";
if (szIn[0] > szIn[1])
{
Swap(szIn[0], szIn[1]);
}
if (szIn[2] < szIn[1])
{
Swap(szIn[2], szIn[1]);
}
if (szIn[1] < szIn[0])
{
Swap(szIn[0], szIn[1]);
}
cout << szIn[0] << " " << szIn[1] << " " << szIn[2] << "\n";
}
}
int main()
{
test();
return 0;
}
运行结果:
运行号 | 用户 | 题目 | 结果 | 时间 | 内存 | 语言 | 提交时间 |
---|
782337 | arbboter | ASCII码排序 | ![]() | 4 | 232 | C/C++ | 03-26 15:44:57 |
代码2
#include <iostream>
#include <string>
using namespace std;
void test()
{
int n = 0;
cin >> n;
char szIn[4];
char szOut[3];
while (n--)
{
cin >> szIn;
szOut[0] = (szIn[0] < szIn[1] ? szIn[0] : szIn[1])<szIn[2] ? (szIn[0] < szIn[1] ? szIn[0] : szIn[1]):szIn[2];
szOut[2] = (szIn[0] > szIn[1] ? szIn[0] : szIn[1])>szIn[2] ? (szIn[0] > szIn[1] ? szIn[0] : szIn[1]) : szIn[2];
szOut[1] = szIn[0] + szIn[1] + szIn[2] - szOut[0] - szOut[2];
cout << szOut[0] << " " << szOut[1] << " " << szOut[2] << "\n";
}
}
int main()
{
test();
return 0;
}
运行结果:
运行号 | 用户 | 题目 | 结果 | 时间 | 内存 | 语言 | 提交时间 |
---|
782347 | arbboter | ASCII码排序 | ![]() | 0 | 232 | C/C++ | 03-26 15:58:07 |
由于第二种方法没有swap,所以运行时间减少了。