ASCII码排序
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 115984 Accepted Submission(s): 48263
Problem Description
输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符。
Input
输入数据有多组,每组占一行,有三个字符组成,之间无空格。
Output
对于每组输入数据,输出一行,字符中间用一个空格分开。
Sample Input
qwe
asd
zxc
Sample Output
e q w
a d s
c x z
(个人)解题思路
1.怎么以三为单位处理(不是指能否一次输入单位为3的字符)字符
2.怎样存储字符更方便于调用
3.怎么把三个字符排序(字符能否直接比较大小)
–>仅供参考
上面是个人做题的解题思路(看到题目的时候),下面的操作过程中遇到的问题及解决方案:
如下是在没有考虑到scanf函数对特殊键的输入,和没有思考scanf函数与getchar在使用上的差别
#include<stdio.h>
int main()
{
char a,b,c;
while(scanf("%c%c%c",&a,&b,&c)!=EOF){
char temp = ' ';
int a1 = (int)a;
int b1 = (int)b;
int c1 = (int)c;
if(a1>b1){
temp = a1;
a1 = b1;
b1 = temp;
}
if(a1>c1){
temp = a1;
a1 = c1;
c1 = temp;
}
if(b1>c1){
temp = b1;
b1 = c1;
c1 = temp;
}
printf("%c %c %c\n",a1,b1,c1);
}
return 0;
}
在输入第一组的2个数时会输入“回车”,这个回车会被第二个“scanf”函数捕获,只要在第二个“scanf”语句前加一句“getchar();”就行了,,当然这是基于输入三个字母之间没有空格的情况
#include<stdio.h>
int main()
{
char a,b,c;
while(scanf("%c%c%c",&a,&b,&c)!=EOF){
int temp = 0;
int a1 = (int)a;
int b1 = (int)b;
int c1 = (int)c;
if(a1>b1){
temp = a1;
a1 = b1;
b1 = temp;
}
if(a1>c1){
temp = a1;
a1 = c1;
c1 = temp;
}
if(b1>c1){
temp = b1;
b1 = c1;
c1 = temp;
}
printf("%c %c %c\n",a1,b1,c1);
getchar();
}
return 0;
}