输入一个字符串,内有数字和非数字字符,例如:A123x456 17960? 302tab5876,将其中连续的数字作为一个整数,依次存放到一数组a中。例如,123放在a[0],456放在a[1]…统计共有多少个整数,并输出这些数。用C语言
时间: 2023-09-09 21:05:19 浏览: 163
### 回答1:
以下是用 C 语言实现这个需求的代码示例:
```
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main() {
char str[] = "A123x456 17960? 302tab5876";
int len = strlen(str);
int a[100];
int count = 0;
int num = 0;
for (int i = 0; i < len; i++) {
if (isdigit(str[i])) {
num = num * 10 + (str[i] - '0');
} else {
if (num != 0) {
a[count++] = num;
num = 0;
}
}
}
if (num != 0) {
a[count++] = num;
}
printf("一共有 %d 个整数:\n", count);
for (int i = 0; i < count; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
```
程序首先定义了一个字符串 `str`,其中包含数字和非数字字符。
然后,通过一个循环扫描字符串的每一个字符,如果该字符是数字,则将其转换为数字,并加到当前数字的值上。如果该字符不是数字,则将当前数字存入数组 `a`,并将当前数字置为 0。
最后,如果字符串的最后一个字符是数字,则需要将该数字存入数组 `a`。
最后,程序输出共有多少个整数,以及这些整数的值。
### 回答2:
题目要求我们编写一个程序,将输入的字符串中连续的数字作为一个整数,并存放到数组a中,并统计共有多少个整数,并输出这些数。
首先,我们需要定义一个字符数组来存储输入的字符串,并定义一个整型数组a,用于存放数字。同时,我们还需要定义一个变量count,用于记录整数的个数。
然后,我们需要遍历输入的字符串,逐个字符进行判断。如果当前字符是数字,则将其与前一个字符拼接起来形成一个新的数字,并将其转换为整数存放到数组a中。如果当前字符不是数字且前面已经有连续的数字,则说明前面的数字已经结束,我们可以将个数增加1,并将数组a的下标后移。
最后,通过循环遍历数组a,输出其中的整数。
以下是示例代码:
```c
#include <stdio.h>
#include <ctype.h>
int main() {
char str[100];
int a[100];
int count = 0;
int i, j;
int num = 0;
printf("请输入字符串:");
scanf("%s", str);
for (i = 0; str[i] != '\0'; i++) {
if (isdigit(str[i])) { // 判断当前字符是否是数字
num = num * 10 + (str[i] - '0');
} else if (num > 0) { // 前面有连续的数字
a[count++] = num;
num = 0;
}
}
if(num > 0){ // 处理最后一个整数
a[count++] = num;
}
printf("共有%d个整数:", count);
for (j = 0; j < count; j++) {
printf("%d ", a[j]);
}
printf("\n");
return 0;
}
```
运行程序后,输入一个字符串,例如"A123x456 17960? 302tab5876",则输出为"共有3个整数:123 456 17960"。
### 回答3:
#include <stdio.h>
#include <string.h>
#define MAX_SIZE 100
int main() {
char str[MAX_SIZE];
int a[MAX_SIZE];
printf("请输入一个字符串:");
scanf("%s", str);
int len = strlen(str);
int count = 0; // 统计整数个数
// 遍历字符串
for (int i = 0; i < len; i++) {
if (str[i] >= '0' && str[i] <= '9') {
int num = 0;
// 提取连续的数字
while (str[i] >= '0' && str[i] <= '9') {
num = num * 10 + (str[i] - '0');
i++;
}
a[count] = num;
count++;
}
}
printf("共有%d个整数,它们分别是:\n", count);
// 输出整数数组a
for (int i = 0; i < count; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
阅读全文