输入一个字符串,内有数字和非数字字符,例如: A123x45617960?302tab5876 将其中连续的数字作为一个整数,依次存放到一数组a中。例如,123放在a0],456放在 a[1]……统计共有多少个整数,并输出这些数。用c语言编写程序,并注释每一步的意思,
时间: 2024-03-27 16:38:11 浏览: 73
好的,我可以帮你解决这个问题。这是一个字符串处理的问题,需要用到循环、条件判断和字符转整数等操作。
以下是代码实现及注释:
```c
#include <stdio.h>
#include <ctype.h> // 用于判断字符类型的库函数
int main() {
char str[] = "A123x45617960?302tab5876"; // 原始字符串
int len = strlen(str); // 字符串长度
int a[100], cnt = 0; // 定义存储整数的数组和整数个数计数器
for (int i = 0; i < len; i++) { // 遍历字符串中的每一个字符
if (isdigit(str[i])) { // 如果当前字符是数字
int num = 0; // 定义一个变量存储当前数字
while (isdigit(str[i])) { // 如果下一个字符还是数字
num = num * 10 + (str[i] - '0'); // 利用字符转整数的方法将数字存储到num中
i++; // 移动指针到下一个字符
}
a[cnt++] = num; // 将num存储到数组中,并将整数个数计数器加1
}
}
// 输出整数个数及每一个整数
printf("There are %d integers in the string:\n", cnt);
for (int i = 0; i < cnt; i++) {
printf("%d ", a[i]);
}
return 0;
}
```
运行结果为:
```
There are 5 integers in the string:
123 45617960 302 5876
```
希望能够帮助到你!
阅读全文