题目大意
给你一些英文句子,请将这些句子中的每个英语单词反转,然后再将其输出.这里的英语单词仅由大小写英文字母组成,输入时有多个英文句子,每句占一行,且每句不超过80个字符。
Sample Input
Hello world!
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;
}