hdu2000ASCII码排序(c语言)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
hdu2000ASCII码排序(c语⾔)
hdu 2000 ASCII码排序
题⽬描述
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Problem Description
输⼊三个字符后,按各字符的ASCII码从⼩到⼤的顺序输出这三个字符。
Input
输⼊数据有多组,每组占⼀⾏,有三个字符组成,之间⽆空格。
Output
对于每组输⼊数据,输出⼀⾏,字符中间⽤⼀个空格分开。
Sample Input
qwe
asd
zxc
Sample Output
e q w
a d s
c x z
题⽬难点
1. 题⽬要求“输⼊数据有多组”,⽤while(scanf("%c%c%c%*c",&a,&b,&c)!=EOF) 来实现⼀直输⼊(实现⽅法有很多,截取了⽹上常⽤的
⼀种)
2. 当测试第⼀组数据的时候,很容易成功;
但当测试第⼆组第三组数据的时候就发现问题了;
原因是程序把你⽤来确认输⼊的“回车键”当作下⼀组输⼊的第⼀个字符
解决⽅法1:专门留⼀个空字符给回车键,(见第8⾏输⼊scanf("%c%c%c % * c",&a,&b,&c));其中 “ * ” 表⽰该输⼊项读⼊后不赋予任何变量,即跳过该输⼊值。
参考问题解答1
解决⽅法2:⽤getchar()吞掉回车键。
getchar()是⼀种函数,功能是从stdio流中读字符。
参考问题解答2
问题解答1
#include <stdio.h>
int main()
{
char a, b, c, t;
while( scanf("%c%c%c%*c",&a,&b,&c)!=EOF )
{
if( a>b ) { t=a; a=b; b=t; }//如果a的ASCII码⼤于b,就交换a,b
if( a>c ) { t=a; a=c; c=t; }
if( b>c ) { t=b; b=c; c=t; }
printf("%c %c %c\n",a,b,c);
}
return 0;
}
问题解答2
#include <stdio.h>
int main()
{
char a, b, c, t;
while( scanf("%c%c%c",&a,&b,&c)!=EOF )
{
getchar();
if( a>b ) { t=a; a=b; b=t; }//如果a的ASCII码⼤于b,就交换a,b
if( a>c ) { t=a; a=c; c=t; }
if( b>c ) { t=b; b=c; c=t; }
printf("%c %c %c\n",a,b,c); }
return 0;
}。