题目描述
输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符。
输入
输入数据有多组,每组占一行,有三个字符组成,之间无空格。
输出
对于每组输入数据,输出一行,字符中间用一个空格分开。
样例输入
qwe
asd
zxc
样例输出
e q w
a d s
c x z
思路:
这个提要求对字符进行排序,其实和三个数字进行排序类似,只不过字符排序用的是该字符所对应的ASCII码值的大小。唯一需要注意的是 :while (scanf("%c%c%c\n", &ch1, &ch2, &ch3) != EOF) 这行代码中记得加一个 \n ,原因是第一行输入最后的回车会被下一个scanf语句中的第一个%c读给ch1。可以参考代码的注释进行理解。
代码:
#include<stdio.h>
int main()
{
char ch1, ch2, ch3;//定义三个字符型变量
while (scanf("%c%c%c\n", &ch1, &ch2, &ch3) != EOF)//当输入为空时结束循环,注意读取键盘的输入时要加\n
{
char t;//定义中间变量
if (ch1 < ch2)
{
//ch1的值和ch2的值进行交换
t = ch2;
ch2 = ch1;
ch1 = t;
}
if (ch2 < ch3)
{
t = ch3;
ch3 = ch2;
ch2 = t;
}
if (ch1 < ch3)
{
t = ch3;
ch3 = ch1;
ch1 = t;
}
printf("%c %c %c\n", ch3, ch2, ch1);//从小到大的顺序输出
}
return 0;
}