ZZULIOJ--1233:单词倒置

时间限制: 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;
}
发布了16 篇原创文章 · 获赞 1 · 访问量 309

猜你喜欢

转载自blog.csdn.net/CoIorful/article/details/104110175
今日推荐