1)由用户输入一个长度不超过20的字符串,以回车结 束,并将其保存到字符数组中。将该宇符申中的数字 字符在字符数组中逆置,其它字符顾序保持不变后输 出。例如输入 “a12bc34d”,逆置后为 “a43bc21d” 要求接受
时间: 2024-03-07 08:47:43 浏览: 63
好的,我理解了您的问题。以下是用 C 语言实现的解决方案:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define MAX_LEN 20
int main() {
char str[MAX_LEN + 1];
printf("请输入一个长度不超过20的字符串:");
fgets(str, MAX_LEN + 1, stdin);
str[strcspn(str, "\n")] = '\0'; // 去掉字符串末尾的换行符
int len = strlen(str);
char digits[len + 1];
int num_count = 0;
for (int i = 0; i < len; i++) {
if (isdigit(str[i])) {
digits[num_count++] = str[i];
}
}
digits[num_count] = '\0';
int digit_idx = num_count - 1;
for (int i = 0; i < len; i++) {
if (isdigit(str[i])) {
putchar(digits[digit_idx--]);
} else {
putchar(str[i]);
}
}
putchar('\n');
return 0;
}
```
首先,我们定义了一个字符数组 `str` 来保存用户输入的字符串,其长度为 `MAX_LEN`。然后,我们使用 `fgets` 函数从标准输入中读取用户输入的字符串,并在末尾添加一个字符串结束符 `\0`。接着,我们遍历字符串 `str`,将其中的数字字符保存到字符数组 `digits` 中,并记录数字字符的个数 `num_count`。注意,我们使用 `isdigit` 函数来判断一个字符是否为数字字符。
之后,我们用变量 `digit_idx` 来记录字符数组 `digits` 中下一个要输出的数字字符的下标,初始值为 `num_count - 1`。然后,我们再次遍历字符串 `str`,对于每个字符,如果它是数字字符,则输出字符数组 `digits` 中对应下标的字符,否则直接输出该字符。最后,我们输出一个换行符,表示输出结束。
例如,当用户输入字符串 `a12bc34d` 时,程序的输出结果为 `a43bc21d`。
希望这个解决方案能够帮助到您!
阅读全文