c语言 输入一行字符串,含有数字和非数字字符以及空格等,如: df23adfd56 2343?23dgjop535 如果将其中所有连续出现的数字视为一个整数,要求统计在该字符串中共有多少个整数,并将这些数依次输出。
时间: 2024-02-25 13:52:48 浏览: 131
好的,这是一个比较常见的字符串处理问题。你可以使用C语言的字符数组(字符串)和循环结构来解决。下面是一个示例代码:
```c
#include <stdio.h>
#include <ctype.h> // 包含isdigit函数的头文件
int main() {
char str[1000];
int i, j, num, count;
printf("请输入一个字符串:");
gets(str); // 获取输入的字符串
i = 0;
count = 0;
while (str[i] != '\0') { // 遍历字符串
if (isdigit(str[i])) { // 如果是数字
num = 0;
j = i;
while (isdigit(str[j])) { // 统计该数字的位数
num = num * 10 + (str[j] - '0');
j++;
}
printf("%d ", num); // 输出该数字
count++; // 统计数字个数
i = j; // 更新i的值,跳过该数字
} else {
i++;
}
}
printf("\n共有%d个整数\n", count);
return 0;
}
```
该程序首先定义一个字符数组 `str`,然后通过 `gets` 函数获取输入的字符串。接着使用循环结构遍历该字符串中的每一个字符,如果是数字,则统计该数字的位数,并输出该数字;如果不是数字,则直接跳过。最后统计输出的数字个数并输出即可。
需要注意的是,在统计数字的位数时,我们使用了 `isdigit` 函数判断字符是否为数字,使用了 ASCII 码的转换将字符转换为数字。同时,我们使用了另外一个变量 `j` 来辅助统计数字的位数,避免修改 `i` 的值导致遍历出错。
阅读全文