c语言写一个程序使输入的字符反向存放
时间: 2024-12-04 14:22:23 浏览: 4
在 C 语言中,你可以使用数组和索引来实现字符反向存放的功能。下面是一个简单的示例程序,它会读取用户输入的一行字符,然后将它们存储在一个字符数组中,并打印出反向的字符。
```c
#include <stdio.h>
#include <string.h>
int main() {
char input[100]; // 假设最多输入99个字符
printf("请输入一行字符: ");
fgets(input, sizeof(input), stdin); // 读取一整行字符
// 删除fgets最后的换行符
if (input[strlen(input) - 1] == '\n') {
input[strlen(input) - 1] = '\0';
}
int length = strlen(input);
for (int i = 0; i < length / 2; i++) {
// 交换字符
char temp = input[i];
input[i] = input[length - 1 - i];
input[length - 1 - i] = temp;
}
printf("反向后的字符: %s\n", input);
return 0;
}
```
当你运行这个程序并输入一些字符后,它会在原地反转输入的字符顺序。
相关问题
编写程序,将一个字符串反向存放(用C语言编写函数实现)
```c
#include <stdio.h>
#include <string.h>
void reverse(char *str) {
int length = strlen(str);
for (int i = 0; i < length / 2; i++) {
char temp = str[i];
str[i] = str[length - i - 1];
str[length - i - 1] = temp;
}
}
int main() {
char str[100];
printf("Enter a string: ");
scanf("%s", str);
reverse(str);
printf("Reversed string: %s\n", str);
return 0;
}
```
这个程序使用了一个 `reverse` 函数,它接收一个指向字符串的指针,并将字符串反向存放。这个函数使用了一个简单的循环,交换字符串的前半部分和后半部分的字符,直到字符串中间为止。注意,我们需要使用 `strlen` 函数来计算字符串的长度。在 `main` 函数中,我们首先读入一个字符串,然后调用 `reverse` 函数来反向存放它。最后,我们输出反向存放后的字符串。
用C语言编写输入一串字符,存放到一个字符数组a中(长度为30),将数组元素为大写字母的字符转换成前一 个字符(字母不包括A和a'字符)存到另一个数组b中,长度可以定义为30个,并按实际个数反序 输出数组内容。例如:如果输入“D5h*x@S9EH7b%km”,执行后b数组的内容为“CRDG”,反向输出 “GDRC”
好的,以下是用C语言编写的代码:
```c
#include <stdio.h>
#include <ctype.h>
#define MAX_LEN 30
int main() {
char a[MAX_LEN + 1]; // 为字符串留出一个额外的 '\0' 结束符
char b[MAX_LEN];
int len = 0;
// 将输入的字符串存储到数组 a 中
printf("请输入一个字符串(长度不超过 %d):", MAX_LEN);
fgets(a, MAX_LEN + 1, stdin);
// 将大写字母转换成前一个字符并存储到数组 b 中
for (int i = 0; a[i] != '\0' && len < MAX_LEN; i++) {
if (isupper(a[i]) && a[i] != 'A') {
b[len++] = a[i] - 1;
} else if (isupper(a[i + 1]) && a[i + 1] != 'A') {
b[len++] = a[i + 1] - 1;
i++; // 跳过下一个字符
}
}
// 反向输出数组 b
printf("转换后的数组 b 为:");
for (int i = len - 1; i >= 0; i--) {
printf("%c", b[i]);
}
printf("\n");
return 0;
}
```
代码的思路如下:
1. 定义两个字符数组 a 和 b,分别用于存储输入的字符串和转换后的字符串;
2. 通过标准库函数 `fgets()` 从标准输入中读取一个字符串,存储到数组 a 中;
3. 遍历数组 a 中的每个字符,若该字符为大写字母且不是 'A' 或 'a',则将其转换成前一个字符并存储到数组 b 中。注意,此处需要使用标准库函数 `isupper()` 判断一个字符是否为大写字母;
4. 反向输出数组 b 中的元素。
需要注意的几点:
1. 由于输入的字符串可能会超过数组 a 的长度,因此需要将数组 a 的长度定义为 MAX_LEN + 1,并在数组末尾添加一个 '\0' 结束符;
2. 在遍历数组 a 的过程中,需要判断当前字符和下一个字符是否都需要转换。如果下一个字符需要转换,则需要跳过下一个字符,避免重复转换;
3. 在输出时,需要从数组 b 的最后一个元素开始反向输出。
阅读全文