C 语言中单词反转349
C 语言中单词反转是一个常见的编程任务,涉及将一个给定字符串中的单词按相反顺序重新排列。本教程将全面探讨在 C 语言中实现单词反转的各种方法,并通过详细的示例对每个方法进行说明。
方法 1:使用 strrev() 函数
对于较短的字符串,可以使用 C 标准库中的 strrev() 函数。此函数接受一个字符串指针并返回其反转版本。下面的代码展示了如何使用 strrev() 反转字符串中的单词:```C
#include
#include
int main() {
char str[] = "Hello World";
// 反转整个字符串
strrev(str);
// 输出反转后的字符串
printf("%s", str);
return 0;
}
```
方法 2:使用 strtok() 函数
strtok() 函数可以用于将字符串分解成一系列标记(token)。通过使用适当的分隔符(例如空格),我们可以使用 strtok() 分解字符串中的单词,然后反向重新组装它们。以下代码演示了此方法:```C
#include
#include
int main() {
char str[] = "Hello World";
char *token;
// 分解字符串
token = strtok(str, " ");
while (token != NULL) {
// 反向重新组装单词
printf("%s ", token);
// 获取下一个单词
token = strtok(NULL, " ");
}
return 0;
}
```
方法 3:使用指针反转单词
此方法涉及使用指针来遍历字符串并反转各个单词。它不需要任何库函数。以下代码展示了此方法的实现:```C
#include
int main() {
char str[] = "Hello World";
int len = strlen(str);
char *start, *end;
// 遍历字符串
for (int i = 0; i < len; i++) {
// 寻找单词开头
if (str[i] != ' ') {
start = &str[i];
}
// 寻找单词结尾
while (i < len && str[i] != ' ') {
i++;
}
end = &str[i - 1];
// 反转单词
while (start < end) {
char temp = *start;
*start = *end;
*end = temp;
start++;
end--;
}
}
// 输出反转后的字符串
printf("%s", str);
return 0;
}
```
方法 4:使用递归
递归是一种将问题分解成较小实例的技术。我们可以使用递归来反转字符串中的单词,如下所示:```C
#include
void reverseWord(char *str, int start, int end) {
if (start >= end) {
return;
}
// 交换单词中的字符
char temp = str[start];
str[start] = str[end];
str[end] = temp;
// 递归反转单词的两半
reverseWord(str, start + 1, end - 1);
}
void reverseWords(char *str) {
int len = strlen(str);
// 遍历字符串并反转各个单词
int start = 0, end = 0;
while (end < len) {
if (str[end] != ' ') {
end++;
} else {
reverseWord(str, start, end - 1);
start = end + 1;
end = start;
}
}
// 反转最后一个单词
if (start < end) {
reverseWord(str, start, end - 1);
}
// 反转整个字符串
reverseWord(str, 0, len - 1);
}
int main() {
char str[] = "Hello World";
reverseWords(str);
// 输出反转后的字符串
printf("%s", str);
return 0;
}
```
2024-11-29
上一篇:巧用 C 语言输出 8 个空格
下一篇:C 语言输出 1 的方法
Java数组详解:从创建、初始化到动态扩容的全面指南
https://www.shuihudhg.cn/134428.html
PHP高效解析JSON字符串数组:从入门到精通与实战优化
https://www.shuihudhg.cn/134427.html
Java数据读取循环:核心原理、实战技巧与性能优化全解析
https://www.shuihudhg.cn/134426.html
PHP 文件包含深度解析:从基础用法到安全实践与现代应用
https://www.shuihudhg.cn/134425.html
Python编程考试全攻略:代码实现技巧、高频考点与实战演练
https://www.shuihudhg.cn/134424.html
热门文章
C 语言中实现正序输出
https://www.shuihudhg.cn/2788.html
c语言选择排序算法详解
https://www.shuihudhg.cn/45804.html
C 语言函数:定义与声明
https://www.shuihudhg.cn/5703.html
C语言中的开方函数:sqrt()
https://www.shuihudhg.cn/347.html
C 语言中字符串输出的全面指南
https://www.shuihudhg.cn/4366.html