zoukankan      html  css  js  c++  java
  • hdu 2000 ASCII码排序(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
    ",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
    ",a,b,c);
        }
            return 0;
    }
    
  • 相关阅读:
    185. [USACO Oct08] 挖水井
    JavaEE Tutorials (9)
    vjudge A
    HDU 2089 不要62
    国庆 day 2 下午
    国庆 day 2 上午
    国庆 day 1 下午
    P2899 [USACO08JAN]手机网络Cell Phone Network
    洛谷 P1690 贪婪的Copy
    洛谷 P2209 [USACO13OPEN]燃油经济性Fuel Economy
  • 原文地址:https://www.cnblogs.com/yuzilan/p/10626229.html
Copyright © 2011-2022 走看看