输入一个句子(一行),将句子中的每一个单词翻转后输出。(来源Coursera课程)
输入
只有一行,为一个字符串,不超过500个字符。单词之间以空格隔开。所谓单词指的是所
有不包含空格的连续的字符。
这道题请用cin.getline输入一行后再逐个单词递归处理。
输出
翻转每一个单词后的字符串,单词之间的空格需与原文一致。
样例
输入
1 hello world.
输出
1 olleh .dlrow
我的思路:
#include <iostream>
using namespace std;
//Date: October 31,2017
//Writen by Yuxin Liu.
//利用递归去翻转单词
int reverseWord(char str[], int i)
{
if (str[i]=='\0')
{
return 0;
}
else
{
reverseWord(str, i + 1);
}
cout << str[i];
return 0;
}
void oneWord(char str[], char word[][10])
{
int j=0,k = 0;
for (int i = 0; i < strlen(str); i++)
{
if ((str[i] == ' ') )
{
word[j][k] = '\0';
j++;
k = 0;
}
else
{
word[j][k] = str[i];
k++;
}
}
word[j][k] = '\0';
}
int main()
{
const int n = 50;
char str[100]; char word[n][10] = {};
cin.getline(str, 100);
oneWord(str, word);//str字符串中的字符用空格分隔在word中
for (int i = 0; i < n; i++)
{
if (word[i][0] == NULL & word[i + 1][0] == NULL)
break;
reverseWord(word[i], 0);
cout << ' ';
}
return 0;
}