c语言ASCII码输出问题

描述
输入三个字符(可以重复)后,按各字符的ASCII码从小到大的顺序输出这三个字符。
输入
第一行输入一个数N,表示有N组测试数据。后面的N行输入多组数据,每组输入数据都是占一行,有三个字符组成,之间无空格。
输出
对于每组输入数据,输出一行,字符中间用一个空格分开。

#include<stdio.h>
int main()
{
char a,b,c,t;
int x,y,z,w;
scanf("%d\n",&w);
// getchar();

while(w--)
{
scanf("%c%c%c",&a,&b,&c);
fflush(stdin);
x=(int)a;
y=(int)b;
z=(int)c;
if(x>y)
{
t=a;
a=b;
b=t;
x=(int)a;
y=(int)b;
z=(int)c;
}
if(x>z)
{
t=a;
a=c;
c=t;
x=(int)a;
y=(int)b;
z=(int)c;
}

if(y>z)
{
t=b;
b=c;
c=t;
}

if(w>0)
printf("%c %c %c\n",a,b,c);
else
printf("%c %c %c",a,b,c);

}

return 0;
}

编译软件测试是对的 不过提交就说结构错误 是什么特殊输入没有考虑到吗

程序不太简练,字符的比较就是其ASCII码的比较,因此程序可以简化为:
#include<stdio.h>
int main()
{
char a,b,c,t;
int n;
scanf("%d\n",&n);

while(n--)
{
scanf("%c%c%c",&a,&b,&c);
fflush(stdin);
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);
}
return 0;
}追问

是哦 谢谢 不过提交还是显示WrongAnswer 快愁死了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-08-21
#include <stdio.h>

main()
{
int c;
while((c = getchar())!=EOF)
{
printf("%d\n", c);
}
return 0;
}
不用getchar就这样
#include <stdio.h>

main()
{
int c;
scanf("%c", &c);
while(c!=EOF)
{
printf("%d\n", c);
scanf("%c", &c);
}
return 0;
}
打字不易,如满意,望采纳。追问

可是还要按大小排序呀

第2个回答  2014-08-22
也可以用#include<ctype.h>这个头文件里的函数toascii(x),就会返回对应字符的ascii码值,然后在进行比较。
还有完全可以直接比较,一样可以得出正确的结果。
第3个回答  2014-08-21
每个if完加一个continue,当然输出语句就得放到里面,不然可能会出现一组数据进行多次交换的情况,还有需不需要加一个判断,w小于0的时候断开,我没用过这种结构,不太清楚
相似回答