题目:
翻转一个句子且不翻转单词。
如:输入:i love my mother.
输出:mother. my love i
解题思路:
1. 先翻转整个句子。
2. 翻转每一个单词。
注:翻转单词时,我们创建两个指针用来指向单词的开头与结尾,然后进行翻转。
进行下一个单词时,开始的指针=少一个结尾指针加一即可。
遇到\0结束。
代码:
翻转一个句子,且不反转单词 · abc66bb · 风夏/c语言初级学习 - Gitee.com
#include<stdio.h>
void reverse(char* start, char* end)
{
char tmp = '0';
while (start < end)
{
tmp = *start;
*start = *end;
*end = tmp;
start++;
end--;
}
}
int main()
{
char input[100] = "0";
gets(input);
int len = strlen(input);
//翻转句子
reverse( input, input+len-1);
//翻转单词
char* start = input;
char* end = input;
do
{
if (*end == ' ' || *end == '\0')
{
reverse(start, end - 1);
if (*end == '\0')
break;
start = end + 1;
end = start;
}
else
{
end++;
}
} while (*end != "\0");
printf("%s\n", input);
return 0;
}
结语:
写啦这么多,希望大家点点赞,多多支持。