6、 编写一个函数实现字符串中单词的逆序,其他字符保持位置不变,请用C语言使用三种方法完整实现
时间: 2023-05-15 14:07:22 浏览: 89
字符串逆序-使用C语言实现的字符串按单词逆序.zip
1. 第一种方法:使用指针
```c
#include <stdio.h>
#include <string.h>
void reverseWords(char *str)
{
char *word_begin = NULL;
char *temp = str;
while (*temp)
{
if ((word_begin == NULL) && (*temp != ' '))
{
word_begin = temp;
}
if (word_begin && ((*(temp + 1) == ' ') || (*(temp + 1) == '\0')))
{
char *word_end = temp;
while (word_begin < word_end)
{
char t = *word_begin;
*word_begin++ = *word_end;
*word_end-- = t;
}
word_begin = NULL;
}
temp++;
}
}
int main()
{
char str[] = "hello world";
printf("Original string: %s\n", str);
reverseWords(str);
printf("Reversed string: %s\n", str);
return 0;
}
```
2. 第二种方法:使用数组
```c
#include <stdio.h>
#include <string.h>
void reverseWords(char str[])
{
int i, j, k;
int len = strlen(str);
for (i = 0; i < len; i++)
{
if (str[i] == ' ')
continue;
j = i;
while (str[j] != ' ' && str[j] != '\0')
j++;
for (k = i; k < (i + j) / 2; k++)
{
char temp = str[k];
str[k] = str[i + j - k - 1];
str[i + j - k - 1] = temp;
}
i = j;
}
}
int main()
{
char str[] = "hello world";
printf("Original string: %s\n", str);
reverseWords(str);
printf("Reversed string: %s\n", str);
return 0;
}
```
3. 第三种方法:使用递归
```c
#include <stdio.h>
#include <string.h>
void reverseWords(char *str)
{
char *temp = str;
while (*temp == ' ')
temp++;
if (*temp == '\0')
return;
reverseWords(temp + 1);
printf("%c", *temp);
}
int main()
{
char str[] = "hello world";
printf("Original string: %s\n", str);
reverseWords(str);
printf("\n");
return 0;
}
```
阅读全文