0
点赞
收藏
分享

微信扫一扫

1086: ASCII码排序(多实例测试)

天行五煞 2022-02-11 阅读 37
c语言

题目描述

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

输入

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

输出

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

样例输入 Copy

qwe
asd
zxc

样例输出 Copy

e q w
a d s
c x z

提示

注意:scanf("%c",&ch)格式读字符时,所有字符都是有效输入,如回车符、空格符等,如以下程序不能正常读入第二组输入数据 
while(scanf("%c%c%c",&a,&b,&c)!=EOF) 
{
if(a>b) 

temp=a;a=b;b=temp; 

if(a>c) 

temp=a;a=c;c=temp; 

if(b>c) 

temp=b;b=c;c=temp; 

printf("%c %c %c\n",a,b,c); 


原因是第一行输入最后的回车会被下一个scanf语句中的第一个%c读给a; 
解决方法如下: 
while(scanf(" %c%c%c",&a,&b,&c)!=EOF) 

   ...... 

while(scanf("%c%c%c ",&a,&b,&c)!=EOF) 

   ...... 

while(scanf("%c%c%c\n",&a,&b,&c)!=EOF) 

   ...... 

在scanf的格式控制串中加入空白符的作用是跳过0个或多个空白符(包括空格、回车或制表符)。

代码:

//字符排序
//多组,每组一行,3个
//输入:
//qwe
//asd
//zxc
//输出:
//e q w
//a d s
//c x z
//while(scanf("%c%c%c",&a,&b,&c)!=EOF)
//while(scanf(" %c%c%c",&a,&b,&c)!=EOF)
//while(scanf("%c%c%c ",&a,&b,&c)!=EOF)
//while(scanf("%c%c%c\n",&a,&b,&c)!=EOF)
//在scanf的格式控制串中加入空白符的作用是跳过0个或多个空白符(包括空格、回车或制表符)。




#include <stdio.h>
int main ()
{
    char a,b,c;
    char temp=0;
    while(scanf("%c%c%c",&a,&b,&c)!=EOF)
    {
        getchar();
        if(a<b)
        {
            temp=a;
            a=b;
            b=temp;
        }
        if(c<b)
        {
            temp=c;
            c=b;
            b=temp;
        }
        if(c>a)
        {
            temp=a;
            a=c;
            c=temp;
        }
        printf("%c %c %c\n",b,c,a);
    }
    return 0;
}

运行结果:

提交:

 

 有点奇怪的地方,按照题中所给的提示,就会出现如下情况

 所以还是建议使用

 getchar();

或使用4个变量来解决第一行输入最后的回车会被下一个scanf语句中的第一个%c读给a,的问题

while(scanf("%c%c%c%c",&a,&b,&c,&d)!=EOF)

举报

相关推荐

0 条评论