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;
    }
    
  • 相关阅读:
    存储过程中执行动态Sql语句
    模拟alert和confirm
    SignalR
    Html5实践之EventSource
    Java路径操作具体解释
    HDU 1330 Nearest Common Ancestors(求两个点的近期公共祖先)
    Graph(2014辽宁ACM省赛)
    基于注解的Spring MVC整合Hibernate(所需jar包,spring和Hibernate整合配置,springMVC配置,重定向,批量删除)
    W5500问题集锦(二)
    Android Fragment 简单实例
  • 原文地址:https://www.cnblogs.com/yuzilan/p/10626229.html
Copyright © 2011-2022 走看看