C++,将一个一维字符数组进行逆置输出
时间: 2024-03-02 19:49:52 浏览: 19
好的,这个问题很简单,可以使用双指针来实现,具体代码如下:
```c++
#include <iostream>
using namespace std;
void reverse(char* str) {
if(str == nullptr) {
return;
}
// 计算字符串长度
int len = 0;
while(str[len] != '\0') {
len++;
}
// 双指针逆置
int left = 0, right = len - 1;
while(left < right) {
char temp = str[left];
str[left] = str[right];
str[right] = temp;
left++;
right--;
}
}
int main() {
char str[] = "1357";
reverse(str);
cout << str << endl; // 输出7531
return 0;
}
```
另外需要注意的是,字符串最后一位是`\0`,表示字符串的结尾,也要算在字符串长度里面。
相关问题
将一个一维字符数组进行逆置输出,如原来顺序1357,逆置后为7531
好的,这个问题很简单,可以使用双指针来实现,具体代码如下:
```c++
#include <iostream>
using namespace std;
void reverse(char* str) {
if(str == nullptr) {
return;
}
// 计算字符串长度
int len = 0;
while(str[len] != '\0') {
len++;
}
// 双指针逆置
int left = 0, right = len - 1;
while(left < right) {
char temp = str[left];
str[left] = str[right];
str[right] = temp;
left++;
right--;
}
}
int main() {
char str[] = "1357";
reverse(str);
cout << str << endl; // 输出7531
return 0;
}
```
另外需要注意的是,字符串最后一位是`\0`,表示字符串的结尾,也要算在字符串长度里面。
c语言一维数组逆置
以下是两种C语言一维数组逆置的方法:
方法一:
```c
#include <stdio.h>
int main() {
int n, i;
printf("请输入元素总个数n:\n");
scanf("%d", &n);
int a[n], b[n]; // 定义两个一维变长数组
printf("请输入a[%d]中的元素:\n", n);
// 循环输入a[n]的值
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
// 1.将a[n]中的值逆序输入b[n]中
for (i = 0; i <= n - 1; i++) {
b[i] = a[n - 1 - i];
}
// 2.将b[n]的值正序存入a[n]中
for (i = 0; i <= n - 1; i++) {
a[i] = b[i];
}
printf("倒置后数组中的元素为:\n");
// 3.循环输出a[n]值为倒置后的数组a[n]
for (i = 0; i < n; i++) {
printf("%d ", a[i]);
}
return 0;
}
```
方法二:
```c
#include <stdio.h>
int main() {
int n, i;
printf("请输入总元素个数n:\n");
scanf("%d", &n);
int a[n]; // 定义变长数组a[n]
printf("请输入a[%d]中的元素:\n", n);
// 元素输入
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
int temp; // 定义中间变量temp
// 功能函数:交换n/2次,每次都把头尾元素交换
for (i = 0; i <= n / 2 - 1; i++) {
temp = a[i];
a[i] = a[n - 1 - i];
a[n - 1 - i] = temp;
}
printf("元素倒置后:\n");
// 元素输出
for (i = 0; i < n; i++) {
printf("%d ", a[i]);
}
return 0;
}
```