您的位置:首页 > 其它

[2000]:ASCII码排序(三个数排序、考虑scanf函数)

2015-10-28 10:36 429 查看
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;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: