请你用c++,使用动态数组完成以下题目:在主函数中输入一个字符串(长度不超过99),存储在一个字符数组中,将该字符串中的数字挑选出来组成新的字符串(数字的先后顺序与原字符串顺序一致),输出新的字符串。注意:字符串中可能包含空格。
时间: 2023-08-31 13:22:20 浏览: 48
### 回答1:
好的,下面是代码实现:
```c++
#include<iostream>
#include<string>
using namespace std;
int main() {
string str;
getline(cin, str); // 输入字符串,包含空格
string num_str = ""; // 存储数字的字符串
for (int i = 0; i < str.length(); i++) {
if (str[i] >= '0' && str[i] <= '9') { // 判断是否为数字
num_str += str[i];
}
}
cout << num_str << endl; // 输出数字字符串
return 0;
}
```
说明:
1. 使用 `string` 类型存储字符串,读入时使用 `getline` 函数,可以读入包含空格的字符串。
2. 遍历字符串,判断每个字符是否为数字,若是数字则加入 `num_str` 字符串中。
3. 输出 `num_str` 字符串即可。
注意,这里使用了 `string` 类型,而非动态数组,因为 `string` 已经实现了自动扩容功能,可以方便地进行字符串的操作。如果一定要使用动态数组,那么可以在遍历字符串时,使用 `new` 动态分配数组空间,每次扩容后将原来的数据复制到新的数组中。
### 回答2:
程序如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main() {
char str[100], newArr[100];
int index = 0;
printf("请输入一个字符串(长度不超过99): ");
fgets(str, 100, stdin);
for (int i = 0; str[i] != '\0'; i++) {
if(isdigit(str[i])) {
newArr[index] = str[i];
index++;
}
}
newArr[index] = '\0';
printf("新的字符串为: %s\n", newArr);
return 0;
}
```
运行程序后,在控制台输入一个字符串,程序将会将该字符串中的数字提取出来并输出。
### 回答3:
在C语言中,可以使用动态数组来实现该功能。首先,我们定义一个字符数组来接收主函数中输入的字符串,并利用字符串输入函数`gets`来获取用户输入的字符串。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char input[100]; // 定义字符数组来接收输入的字符串
char numbers[100]; // 定义字符数组来存储提取出的数字
int numbersIndex = 0; // 记录提取出数字的索引位置
printf("请输入一个字符串:");
gets(input); // 获取用户输入的字符串
for (int i = 0; i < strlen(input); i++) {
// 判断是否是数字,如果是则放入numbers数组中
if (input[i] >= '0' && input[i] <= '9') {
numbers[numbersIndex] = input[i];
numbersIndex++;
}
}
numbers[numbersIndex] = '\0'; // 在numbers的末尾添加'\0'表示字符串结束
printf("提取出的数字为:%s\n", numbers);
return 0;
}
```
在以上代码中,我们使用`for`循环遍历输入的字符串,通过判断字符的ASCII码是否在数字的ASCII码范围内来判断该字符是否为数字。如果是数字,则将其放入`numbers`数组中,并递增`numbersIndex`,以便记录数字在`numbers`数组中的位置。最后,我们在`numbers`数组的末尾添加一个`\0`表示字符串的结束。最后,我们使用`printf`函数将提取出的数字字符串输出。
需要注意的是,为了能够使用`gets`函数来获取用户输入的字符串,需要添加`#define _CRT_SECURE_NO_WARNINGS`来禁用编译器的报警。并且,如果输入的字符串超过`numbers`数组的长度,可能会导致输出结果不符合预期或者出现错误。