杭电acm1062答案!!!

2025-01-03 23:40:03
推荐回答(3个)
回答1:

#include
#include
#include

int main()
{
char s[1001],*p,*q,*iter;
int t,l,i,count,j;
while( scanf("%d\n",&t)!=EOF)
{
// getchar();
while(t--)
{
gets(s);//读取一行数据,包括空格
l=strlen(s);
count=0;
for(i=0;i {
if(s[i]!=' ')
{
count++;
}
else
{
for(j=i-1;j>=i-count;j--)
{
printf("%c",s[j]);
}
printf(" ");
count=0;
}

}
for(j=l-1;s[j]!=' ';j--)
{
printf("%c",s[j]);
}
printf("\n");
}
}
return 0;
}

回答2:

#include
//#include
#include
#include
using namespace std;
int main()
{
//ifstream in("data.txt");
int T;
cin >> T;
getchar();
while(T --)
{
stack ch_stk; //思路是一个个单词扔栈里面再弹出就反转了
string ori_msg;
string ch_msg;
getline(cin, ori_msg);
ch_msg.resize(ori_msg.length());
int j = 0;
for(int i=0; i {
if(ori_msg[i] != ' ') //
ch_stk.push(ori_msg[i]);
else
{
while(!ch_stk.empty())
{
ch_msg[j++] = ch_stk.top();
ch_stk.pop();
}
ch_msg[j++] = ' ';
}
}
while(!ch_stk.empty()) //处理最后一个单词,因为这里已经跳出循环了
{
ch_msg[j++] = ch_stk.top();
ch_stk.pop();
}
cout << ch_msg << endl;
}
}

回答3:

有个小问题,在最后一个for循环如果输入一串没有空格的字符串会产出错误,应把s[j]!=' '改为s[j]!=' '&&j>=0