编写一个完整的C++程序,要求将一个字符串中的字符逆序存放。如字符串为“abcde",则逆序存放后应为"edcba"。 输入格式: 在一行中输入一个长度不超过20的字符串、并以回车结束。 输出格式: 在一行中输出逆序后的字符串。
时间: 2024-03-07 16:46:58 浏览: 134
以下是实现要求的完整的 C++ 程序:
```cpp
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
char str[21]; // 定义一个长度不超过20的字符数组,用于存放输入的字符串
cin >> str; // 读入字符串
int len = strlen(str); // 获取字符串长度
for (int i = len-1; i >= 0; i--) // 从最后一个字符开始循环
{
cout << str[i]; // 逆序输出字符
}
return 0;
}
```
程序首先定义了一个长度为 21 的字符数组 `str`,用于存放输入的字符串。然后使用 `cin` 读入一个字符串,并使用 `strlen` 函数获取字符串长度。接着使用 `for` 循环从最后一个字符开始循环,依次逆序输出每一个字符。最后返回 0,表示程序正常结束。
注意,为了保证程序的健壮性,还需要对输入字符串的长度进行判断,确保不超过数组的最大长度。
相关问题
用C语言 编写一个程序,要求将一个字符串中的字符逆序存放。如字符串为“abcde”,则逆序存放后应为“edcba”。 输入格式: 在一行中输入一个长度不超过20的字符串,并以回车结束。 输出格式: 在一行中输出逆序后的字符串。
在C语言中,你可以使用数组或指针来实现字符串逆序的功能。这里是一个简单的示例程序:
```c
#include <stdio.h>
#include <string.h>
// 函数声明,用于交换两个字符
void swap(char* a, char* b) {
char temp = *a;
*a = *b;
*b = temp;
}
int main() {
char str[21]; // 存放字符串,包括空字符'\0'
fgets(str, sizeof(str), stdin); // 从标准输入读取字符串,忽略换行符
// 将字符串转换为小写并去掉尾部的换行符
for (size_t i = 0; str[i] != '\0'; i++) {
if (str[i] >= 'A' && str[i] <= 'Z') {
str[i] = str[i] + ('a' - 'A');
}
}
int len = strlen(str) - 1; // 获取字符串长度
for (int i = 0; i < len / 2; i++) {
swap(&str[i], &str[len - i]); // 逐个字符交换
}
printf("逆序后的字符串: %s\n", str);
return 0;
}
```
在这个程序中,我们首先通过`fgets()`函数从用户处获取输入字符串,然后遍历整个字符串,如果遇到大写字母,将其转换为小写。接着,我们用一个for循环从字符串的两端开始向中间交换字符,实现逆序。最后,打印出逆序后的字符串。
C语言中将一个字符串中的字符逆序存放。如字符串为“abcde",则逆序存放后应为"edcba"
可以使用两个指针,一个指向字符串的开头,一个指向字符串的结尾,然后交换它们指向的字符,直到两个指针相遇。
以下是一个示例代码:
```c
#include <stdio.h>
#include <string.h>
void reverse_string(char* str) {
int len = strlen(str);
char* start = str;
char* end = str + len - 1;
while (start < end) {
char temp = *start;
*start = *end;
*end = temp;
start++;
end--;
}
}
int main() {
char str[] = "abcde";
reverse_string(str);
printf("%s\n", str); // 输出 edcba
return 0;
}
```
阅读全文
相关推荐













