Oput Limit Exceeded关于c++编程的小问题

Problem Description
输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符。
Input
输入数据有多组,每组占一行,有三个字符组成,之间无空格。
Output
对于每组输入数据,输出一行,字符中间用一个空格分开。
Sample Input
qwe
asd
zxc

Sample Output
e q w
a d s
c x z
我的代码是
#include<iostream>
using namespace std;
void resit(char*x,char*y);
void main()
{
char a,b,c;
while(cin>>a)
{
cin>>b>>c;
resit(&a,&b);
resit(&a,&c);
resit(&b,&c);
cout<<a<<' '<<b<<' '<<c<<endl;
}
}
void resit(char*x,char*y)
{
char m;
if(*x>*y)
{
m=*x;
*x=*y;
*y=m;
}
}结果老是出现output limit exceeded的情况,请问到底是哪里出了问题,能帮忙更正下吗?是死循环吗?该怎么跳出去呢?

第1个回答  2009-10-13
output limit exceeded 应该是你的程序死循环了, 然后一直输出, 直到输出的内容太多, 就会ole了

看了一下应该是你的读入问题, while(cin>>a) 这里 如果测试数据有多余的空格, 你的程序就读不了。
改成每次读入一个字符串 应该可以避免这种情况

修正后的程序

#include<iostream>
using namespace std;
void resit(char*x,char*y);
void main()
{
char s[100];
char a,b,c;
while(cin>>s)
{
a = s[0], b = s[1], c = s[2];
resit(&a,&b);
resit(&a,&c);
resit(&b,&c);
cout<<a<<' '<<b<<' '<<c<<endl;
}
}
void resit(char*x,char*y)
{
char m;
if(*x>*y)
{
m=*x;
*x=*y;
*y=m;
}
}
第2个回答  2009-10-12
我给你看看,稍等一会,现在有点事。本回答被提问者采纳
相似回答