单词反转

题目大意

给你一些英文句子,请将这些句子中的每个英语单词反转,然后再将其输出.这里的英语单词仅由大小写英文字母组成,输入时有多个英文句子,每句占一行,且每句不超过80个字符。

Sample Input

Hello world!

Happy programming,happy life!

Sample Output

olleH dlrow!

yppaH gnimmargorp,yppah efil!

方法与总结

  • 判断是否为字母
  • 找到单词最中间位置
  • 对逐个单词进行反转

代码

#include <iostream>
#include <string>
using namespace std;

bool ischar(char s)
{
    if( (s>='A' && s<='Z') || (s>='a' && s<='z') )
    return 1;
    else
    return 0;
 } 

int main()
{
    string str;
    while(getline(cin,str))    
    {
        int z=0;//定义变量记录每个单词首位置 
        for (int i=0;i<str.length(); i++)
        {
            if(!ischar(str[i]))
            {
                for(int j = z, x = 0; j < z+(i-z)/2; j++, x++)
                {
                    char t;
                    t=str[j];
                    str[j]=str[i-x-1];
                    str[i-x-1]=t;
                }
                for(int j=z; j<i; j++)
                cout<<str[j];
                cout<<str[i];
                z=i+1;
            }
        }
        cout<<endl;
    }
    return 0;
}
/* bottom:40px 距浏览器底部距离 right:40px 距浏览器右边距离 */