编写C++程序实现将一个字符串按逆序存放,并输出原字符串和逆序后字符串(用字符数组和指针两种方法完成,字符串自己定义)。
时间: 2024-11-29 08:35:18 浏览: 19
在C++中,可以使用字符数组和指针两种方式来实现字符串逆序的操作。以下是两种方法的示例:
**1. 使用字符数组实现:**
```cpp
#include <iostream>
// 定义字符串结构体,包含一个字符数组和长度
struct String {
char chars[100];
int length;
};
// 函数用于输入字符串并逆序存储
void reverseString(char* input) {
String str;
std::cin.getline(str.chars, sizeof(str.chars), '\n');
str.length = strlen(str.chars);
// 从两端开始交换字符
for (int i = 0, j = str.length - 1; i < j; ++i, --j) {
std::swap(str.chars[i], str.chars[j]);
}
// 输出原始字符串和逆序后的字符串
std::cout << "Original string: ";
for (int i = 0; i <= str.length; ++i) {
if (str.chars[i] != '\0') {
std::cout << str.chars[i];
}
}
std::cout << "\nReversed string: ";
for (int i = 0; i <= str.length; ++i) {
if (str.chars[i] != '\0') {
std::cout << str.chars[i];
}
}
}
int main() {
reverseString(NULL); // 注意这里的NULL,因为我们需要传入一个字符数组地址
return 0;
}
```
**2. 使用指针实现:**
```cpp
#include <iostream>
#include <cstring> // 包含strlen函数
void reverseString(char* input) {
char str[] = {0}; // 存放字符串的临时字符数组
std::copy(input, input + strlen(input), str);
str[strlen(input)] = '\0'; // 添加结束符
// 逆序字符串
char* start = str;
char* end = str + strlen(str) - 1;
while (start < end) {
std::swap(*start, *end);
start++;
end--;
}
// 输出原始字符串和逆序后的字符串
std::cout << "Original string: " << str << "\nReversed string: " << str << "\n";
}
int main() {
char input[100];
std::cout << "Enter a string: ";
std::cin.getline(input, sizeof(input), '\n');
reverseString(input);
return 0;
}
```
在这两个示例中,用户需要手动输入字符串。运行上述代码后,你会看到原始字符串和逆序后的字符串。
阅读全文