函数reverse的原型为:void reverse(char s[]);,其功能是将字符串s中的字符位置颠倒。例如,字符串“ilovechina”中的字符位置颠倒后变为“anihcevoli”。编制
时间: 2023-06-05 11:48:09 浏览: 204
以下是一个C语言的函数,实现了reverse函数的功能:
```
void reverse(char s[]) {
int len = strlen(s);
int i;
char temp;
for (i = 0; i < len/2; i++) {
temp = s[i];
s[i] = s[len-1-i];
s[len-1-i] = temp;
}
}
```
该函数首先通过strlen函数获取字符串s的长度,然后通过循环将字符串s中的字符位置颠倒。具体来说,它使用一个循环变量i来遍历字符串s的前半部分,将第i个字符与倒数第i个字符互换位置,直到遍历完整个字符串s的前半部分。由于字符串s的长度可能是奇数,所以在循环的条件中使用了len/2来保证只遍历了一半的字符。
例如,如果将字符串“ilovechina”传递给reverse函数,函数将修改该字符串的内容,使其变为“anihcevoli”。
相关问题
c++编写函数,通过指针一个将字符串反向。 函数首部为: void ReverseString(char *s)
下面是一个简单的 C++ 函数,通过指针将字符串反向:
```c++
#include <iostream>
#include <cstring>
void ReverseString(char* s) {
int len = strlen(s);
int i = 0, j = len - 1;
while (i < j) {
std::swap(s[i], s[j]);
i++;
j--;
}
}
int main() {
char s[] = "hello, world";
std::cout << "Before reverse: " << s << std::endl;
ReverseString(s);
std::cout << "After reverse: " << s << std::endl;
return 0;
}
```
函数的主要思路是使用两个指针 `i` 和 `j`,分别指向字符串的开头和结尾。然后不断交换字符,直到 `i` 大于等于 `j`。这个函数可以很好地处理包括空字符串在内的任何字符串。
编写函数reverse(char *s)的倒序递归程序,使字符串s倒序。
当你想要编写一个递归函数来反转字符串`s`时,可以采用这样的思路:首先检查基本情况,如果字符串为空或者只有一个字符,那么返回该字符串即可。然后对于非空字符串,你可以将第一个字符与剩余部分(通过递归调用自身去掉第一个字符得到)的反转结果连接起来。
下面是一个简单的C语言实现:
```c
#include <stdio.h>
#include <string.h>
// 递归函数,接受一个指向字符数组的指针
void reverse(char* s, int start, int end) {
// 基本情况:当start等于end时,说明已经到达字符串的中心位置,直接返回
if (start >= end)
return;
// 交换开始和结束位置的字符
char temp = s[start];
s[start] = s[end];
s[end] = temp;
// 继续递归处理剩余部分
reverse(s, start + 1, end - 1);
}
// 主函数调用
void reverseString(char* s) {
reverse(s, 0, strlen(s) - 1); // 传入整个字符串以及起始和结束下标
}
int main() {
char str[] = "Hello, World!";
printf("Original string: %s\n", str);
reverseString(str);
printf("Reversed string: %s\n", str);
return 0;
}
```
这个程序会打印出原始字符串"Hello, World!"和其倒序后的"!dlroW ,olleH"。
阅读全文