从键盘输入一串符号(符号个数不超过100),要求将字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符和非数字字符原来的相对次序。使用c++
时间: 2024-04-30 15:18:27 浏览: 68
以下是一个简单的C++实现,用到了两个字符串,一个用于存储数字字符,一个用于存储非数字字符。遍历输入的字符串,将数字字符存入数字字符串中,非数字字符存入非数字字符串中,最后将它们拼接起来就可以了。
```c++
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char s[101], digits[101], nondigits[101];
cin >> s;
int len = strlen(s), d = 0, nd = 0;
for (int i = 0; i < len; i++) {
if (s[i] >= '0' && s[i] <= '9') {
digits[d++] = s[i];
} else {
nondigits[nd++] = s[i];
}
}
digits[d] = '\0';
nondigits[nd] = '\0';
strcat(nondigits, digits);
cout << nondigits << endl;
return 0;
}
```
输入:
```
abc123def456
```
输出:
```
abcdef123456
```
相关问题
C语言实现从键盘输入一串符号(符号个数不超过100),要求将字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符和非数字字符原来的相对次序。
以下是C语言实现的代码:
```c
#include <stdio.h>
#include <ctype.h>
#define MAX_LEN 100
int main() {
char str[MAX_LEN];
char num[MAX_LEN];
char non_num[MAX_LEN];
int i, j, k;
printf("请输入字符串(不超过100个字符):");
fgets(str, MAX_LEN, stdin);
j = k = 0;
for (i = 0; str[i] != '\0'; i++) {
if (isdigit(str[i])) {
num[j++] = str[i];
} else {
non_num[k++] = str[i];
}
}
num[j] = non_num[k] = '\0';
printf("数字字符移动后的结果为:%s%s\n", non_num, num);
return 0;
}
```
代码的思路是:将输入的字符串遍历一遍,将数字字符和非数字字符分别存放到两个数组中,最后将它们拼接起来输出。使用了 `isdigit()` 函数来判断一个字符是否为数字字符。
阅读全文