在数组本地逆序一个字符串
时间: 2023-12-26 21:24:33 浏览: 80
可以使用双指针来实现。具体步骤如下:
1. 定义两个指针,一个指向字符串的开头,另一个指向结尾。
2. 不断交换两个指针所指的字符,并将指针向中间移动,直到两个指针相遇。
3. 交换完成后,整个字符串就被本地逆序了。
以下是代码实现:
```c++
#include <iostream>
#include <cstring>
using namespace std;
void reverse_string(char* str) {
int len = strlen(str);
char *p1 = str, *p2 = str + len - 1;
while (p1 < p2) {
swap(*p1, *p2);
p1++;
p2--;
}
}
int main() {
char str[] = "hello world";
reverse_string(str);
cout << str << endl; // 输出: "dlrow olleh"
return 0;
}
```
注意,本地逆序只是将字符串在数组中的顺序颠倒过来,并不改变字符串在内存中的地址。因此,该函数不需要返回值。
相关问题
用C语言在数组本地逆序一个字符串
可以使用双指针来实现。具体步骤如下:
1. 定义两个指针,一个指向字符串的开头,另一个指向结尾。
2. 不断交换两个指针所指的字符,并将指针向中间移动,直到两个指针相遇。
3. 交换完成后,整个字符串就被本地逆序了。
以下是代码实现:
```c
#include <stdio.h>
#include <string.h>
void reverse_string(char* str) {
int len = strlen(str);
char *p1 = str, *p2 = str + len - 1;
while (p1 < p2) {
char tmp = *p1;
*p1 = *p2;
*p2 = tmp;
p1++;
p2--;
}
}
int main() {
char str[] = "hello world";
reverse_string(str);
printf("%s\n", str); // 输出: "dlrow olleh"
return 0;
}
```
注意,本地逆序只是将字符串在数组中的顺序颠倒过来,并不改变字符串在内存中的地址。因此,该函数不需要返回值。
请编写程序,对键盘输入的字符串进行逆序,逆序后的字符串仍然保留在原来字符数组中,最后输出。 输入格式:输入字符串时,输入以等号(=)结束(注意不是回车)
好的,以下是对应的 C++ 代码:
```
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char str[1000];
int len;
// 输入字符串
cin.getline(str, 1000, '=');
len = strlen(str);
// 对字符串进行逆序
for (int i = 0; i < len / 2; i++) {
char temp = str[i];
str[i] = str[len - 1 - i];
str[len - 1 - i] = temp;
}
// 输出逆序后的字符串
cout << str << endl;
return 0;
}
```
程序先定义了一个字符数组 `str` ,大小为 1000 ,用于存放输入的字符串。接着使用 `cin.getline()` 函数读入字符串,以等号(=)作为结束符。然后使用 `strlen()` 函数获取字符串的长度。接下来使用循环将字符串进行逆序。最后使用 `cout` 输出逆序后的字符串。
需要注意的是,在逆序字符串时我们只需要遍历字符串长度的一半即可,因为一旦交换到字符串中心就已经完成了逆序。
以上是对应的 C++ 代码,你可以在本地编译运行看看效果。
阅读全文