用c语言编写程序由用户输入一个长度不超过20的字符串,以回车结束,并将其保存到字符数组中。将该字符串中的数字字符在字符数组中逆置,其它字符顺序保持不变后输出。例如输入“a12bc34d”,逆置后为“a43bc21d”。要求接受输入字符串和逆置字符串分别用两个函数实现。
时间: 2024-03-25 11:38:21 浏览: 284
好的,这是一个比较基础的字符串操作题目,以下是实现代码:
```c
#include <stdio.h>
#include <string.h>
void inputString(char* str) {
fgets(str, 21, stdin); // 从标准输入读取字符串,最多读取 20 个字符
if (str[strlen(str) - 1] == '\n') {
str[strlen(str) - 1] = '\0'; // 去掉换行符
}
}
void reverseDigits(char* str) {
int len = strlen(str);
int i = 0, j = len - 1;
while (i < j) {
if (str[i] >= '0' && str[i] <= '9') {
if (str[j] >= '0' && str[j] <= '9') {
// 交换数字字符
char temp = str[i];
str[i] = str[j];
str[j] = temp;
i++;
j--;
} else {
j--;
}
} else {
i++;
}
}
}
int main() {
char str[21];
printf("请输入一个长度不超过20的字符串:");
inputString(str);
reverseDigits(str);
printf("逆置后的字符串为:%s\n", str);
return 0;
}
```
代码中主要用到了两个函数:
- `inputString`:接收用户输入的字符串,最多读取 20 个字符,且需要去掉换行符;
- `reverseDigits`:将字符串中的数字字符逆置,使用双指针法遍历字符串,交换数字字符。
在 `main` 函数中,先调用 `inputString` 函数接收用户输入的字符串,然后调用 `reverseDigits` 函数逆置数字字符,最后输出逆置后的字符串。
注意,这里输入字符串和逆置字符串的长度都限制在 20 个字符以内,因此字符数组的大小为 21,其中最后一个字符用来存储字符串结尾的 '\0'。
阅读全文