pokerjest 2017-10-22 04:06 采纳率: 66.7%
浏览 989
已采纳

ASCII码排序 oj 上下两个代码有什么不一样么,为什么上面正确下面错误

#include
int main(void)
{
char t, a, b, c, ch;

while(scanf("%c%c%c", &a, &b, &c)!=EOF)
{
    if(a>b) 
    {
        t=a;
        a=b;
        b=t;
    }
    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);
    scanf("%c",&ch);
}

return 0;

}

#include
int main(void)
{
char x, y, z, i, ch;

while(scanf("%c%c%c", &x, &y, &z)!=EOF)
{
    if(x>y)
    {
        i=x;
        x=y;
        x=i;
    }
    if(x>z)
    {
        i=x;
        x=z;
        z=i;
    }
    if(y>z)
    {
        i=y;
        y=z;
        z=i;
    }
    printf("%c %c %c\n", x, y, z);
    scanf("%c",&ch);
}

return 0;

}

  • 写回答

1条回答 默认 最新

  • threenewbee 2017-10-23 12:51
    关注
     char t, a, b, c, ch;
    这些变量没有初始值,而且变量定义的顺序(t在前,而第二个程序i在后)不同
    while(scanf("%c%c%c", &a, &b, &c)!=EOF)
    这里如果输入的格式不同,那么可能a b c中的一个或者几个没有正确赋值
    
    如果两者叠加,可能造成程序结果不同,碰巧第一个对了。
    
    除此之外,两个程序没有什么区别
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?