HDOJ2000:ASCII码排序

ASCII码排序

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 70659    Accepted Submission(s): 29183

Problem Description
输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符。

 

Input
输入数据有多组,每组占一行,有三个字符组成,之间无空格。

 

Output
对于每组输入数据,输出一行,字符中间用一个空格分开。

 

Sample Input
qwe asd zxc

 

Sample Output
e q w a d s c x z

 

Author
lcy

 

Source
C语言程序设计练习(一)
解:
#include 
 int main()
 {
 char a,b,c,d,x,y,z;
       while(scanf("%c%c%c%c",&a,&b,&c,&d) != EOF)
       {
         x=ab?a:b;
         z=z>c?z:c;
         y=a+b+c-x-z;
         printf("%c %c %cn",x,y,z);
       }
 }

这是我一开始想出来的代码,感觉非常的冗长。要在打代码之前提前打草。好在这道题对长度没有限制……还有就是要看清楚到底是从小到大还是从大到小排列。注意别写错了。

下面放上一个优化的代码:
#include
main()
{
 char a,b,c,d;
 while(scanf("%c %c %c",&a,&b,&c)!=EOF)
 {
     getchar();
  if(a>=b)
  {
   if(c>=a)
   printf("%c %c %cn",b,a,c);
   else if(b>=c)
   printf("%c %c %cn",c,b,a);
   else if(b=b)
   printf("%c %c %cn",a,b,c);
   else if(c>=a)
   printf("%c %c %cn",a,c,b);
   else if(a>c)
   printf("%c %c %cn",c,a,b);
  }
 }
}

发表评论

您的电子邮箱地址不会被公开。