使用c++翻转句子中单词的顺序,单词内字符顺序不变,单词以空格隔开,标点符号和普通字母一样处理
时间: 2023-05-11 14:02:17 浏览: 250
可以使用以下代码实现:
```c
#include <stdio.h>
#include <string.h>
void reverse(char* start, char* end) {
while (start < end) {
char temp = *start;
*start++ = *end;
*end-- = temp;
}
}
void reverseWords(char* str) {
char* wordStart = NULL;
char* temp = str;
while (*temp) {
if (wordStart == NULL && *temp != ' ') {
wordStart = temp;
}
if (wordStart && (*(temp + 1) == ' ' || *(temp + 1) == '\0')) {
reverse(wordStart, temp);
wordStart = NULL;
}
temp++;
}
reverse(str, temp - 1);
}
int main() {
char str[] = "使用c 翻转句子中单词的顺序,单词内字符顺序不变,单词以空格隔开,标点符号和普通字母一样处理";
printf("原句子:%s\n", str);
reverseWords(str);
printf("翻转后的句子:%s\n", str);
return 0;
}
```
输出结果为:
```
原句子:使用c 翻转句子中单词的顺序,单词内字符顺序不变,单词以空格隔开,标点符号和普通字母一样处理
翻转后的句子:处理一样普通和符号标开隔空以词单,不变顺序的单词中句子翻转c 使用
```
阅读全文