时间限制: 1 Sec 内存限制: 128 MB
提交: 493 解决: 204
[状态] [提交] [命题人:外部导入]
题目描述
最近birdfly收到了女友的几份信件,为了只要他俩知道信件的秘密,女友把信件里的每个单词都倒置了。这样只有birdfly将它们倒置过来才能明白女友的心思了。为此birdfly还特意请你编写程序帮他解决一下这个问题。
简单起见假定每封信只包含英文单词和空格,每两个单词之间有一个空格。且长度不超过100,每个单词长度不超过50。
输入
输入有多组样例,每组样例输入一行英文(单词和空格)。
输出
对于每组实例输出单词倒置后的结果。每组实例输出占一行。
样例输入 Copy
I ma yppah yadot
oT eb ro ton ot eb
I tnaw ot niw eht ecitcarp tsetnoc
样例输出 Copy
I am happy today
To be or not to be
I want to win the practice contest
来源/分类
2010校赛热身赛
这道题之前没有遇到过感觉很新颖,就记了下来,方法比较巧妙,思路是在一句话中,遇到单词(不是空格),就开始统计该单词的长度,然后在将整个单词翻转,最后直接输出,代码如下
#include<bits/stdc++.h>
using namespace std;
int main()
{
char str[1000];
while(gets(str)){
int i=0;
int begin;
char temp;
int end;
while(str[i]){
if(str[i]!=' '){ //这里括号的位置很重要,要不然会陷入死循环一定要把i--,end=i放入在if里面
begin = i;
while(str[i]&&str[i]!=' '){ //这里的意思是既不能出现回车(结束),也不能出现时空格的情况
i++;
}
i--;
end=i;
}
while(end>begin){ //单词交换,利用单词的长度
temp=str[end];
str[end]=str[begin];
str[begin]=temp;
end--;
begin++;
}
i++; //推动循环进行
}
puts(str);
}
return 0;
}