请用C语言编写一个程序,要求:可以实现多组输入。在主函数中输入一个字符串(长度不超过 99),存储在一个字符数组中,将该字符串中的数字挑选出来组成新的字符串(数字的先后顺序与原字符串顺序一致),输出新的字符串。注意:字符串中可能包含空格。
时间: 2023-08-31 22:40:44 浏览: 88
上海电机学院C语言实训答案
### 回答1:
以下是用 C 语言编写的程序,可以实现多组输入,并将输入字符串中的数字挑选出来组成新的字符串:
```c
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#define MAX_LEN 100
int main() {
char str[MAX_LEN];
char num_str[MAX_LEN];
int num_str_len = 0;
while (fgets(str, MAX_LEN, stdin)) {
for (int i = 0; i < strlen(str); i++) {
if (isdigit(str[i])) {
num_str[num_str_len++] = str[i];
}
}
num_str[num_str_len] = '\0';
printf("%s\n", num_str);
num_str_len = 0;
}
return 0;
}
```
程序中,我们定义了两个字符数组 `str` 和 `num_str`,分别用于存储输入的字符串和输出的数字字符串。另外,我们还定义了一个变量 `num_str_len`,用于记录数字字符串的长度。
在主函数中,我们使用 `fgets` 函数从标准输入中读取一行字符串,存储在字符数组 `str` 中。然后,我们遍历这个字符串,如果当前字符是数字,就将它加入到字符数组 `num_str` 中,并相应地更新 `num_str_len`。最后,我们在数字字符串的末尾加上一个空字符,并使用 `printf` 函数输出数字字符串。
注意,在每次循环结束时,我们需要将 `num_str_len` 重置为 0,以便处理下一行字符串。
### 回答2:
您好!以下是我用C语言编写的程序来实现您的需求:
```c
#include <stdio.h>
#include <string.h>
void extractNumbers(char* str, char* newStr) {
int len = strlen(str);
int j = 0;
for(int i = 0; i < len; i++) {
if(str[i] >= '0' && str[i] <= '9') {
newStr[j++] = str[i];
}
}
newStr[j] = '\0';
}
int main() {
char str[100];
char newStr[100];
int numCases;
printf("请输入测试案例的个数:");
scanf("%d", &numCases);
getchar(); // 读取换行符
for(int i = 0; i < numCases; i++) {
printf("请输入第%d组测试案例的字符串:", i+1);
fgets(str, sizeof(str), stdin);
extractNumbers(str, newStr);
printf("提取出数字的字符串:%s\n", newStr);
}
return 0;
}
```
程序流程:
1. 首先在主函数中输入测试案例的个数。
2. 然后使用循环,依次输入每个测试案例的字符串。
3. 调用`extractNumbers`函数来提取数字,并将提取出的数字存储在新字符串`newStr`中。
4. 输出提取出数字的字符串。
请注意:
1. 在输入测试案例的字符串时,可以包含空格。
2. 输入测试案例的字符串长度不能超过99。
希望以上程序和说明对您有帮助!如有任何问题,请随时向我提问。
### 回答3:
下面是使用C语言编写的程序,实现了多组输入,可以将字符串中的数字提取出来组成新的字符串。
```c
#include <stdio.h>
#include <string.h>
int main()
{
int numGroups;
char input[100];
char output[100];
printf("请输入组数: ");
scanf("%d", &numGroups);
getchar(); // 清空输入缓冲区
for (int i = 0; i < numGroups; i++) {
printf("请输入字符串: ");
fgets(input, sizeof(input), stdin);
int len = strlen(input);
int index = 0;
for (int j = 0; j < len; j++) {
if (input[j] >= '0' && input[j] <= '9') {
output[index++] = input[j];
}
}
output[index] = '\0'; // 添加字符串结束符
printf("提取出来的数字为: %s\n", output);
}
return 0;
}
```
这个程序可以实现多组输入,通过循环输入字符串,然后遍历字符串中的每个字符,如果字符是数字则将其添加到新的字符串中。最后输出提取出来的数字字符串。
程序运行时会先要求输入组数,然后依次输入每组字符串,每次输入完一个字符串后会输出提取出来的数字字符串。
请注意,在本程序中,使用了`fgets()`函数来读取输入字符串,这样可以避免输入过长导致字符串溢出的问题。
阅读全文