一、题目要求:
16.输人一个字符串,内有数字和非数字字符,
例如:A123x456 17960?302tab5876
将其中连续的数字作为一个整数,依次存放到一数组a中。例如,123放在a[0],456放在a[1]……统计共有多少个整数,并输出这些数。
二、解题思路:
1.需要输入的待筛选的字符串需要一个字符数组承载,要筛选出的数字选择放入一个二维字符数组承载,编写一个函数,将两个数组作为参数传入;
2.额外需要一个判断单个字符是否为数字的函数;
3.主要功能函数中需要调用是否为数字的函数来判断字符串中的字符,且遇到连续的数字只统计一次整数的数量,并将连续的数字通过循环存入a数组中。
三、具体程序:
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
char str[50];
gets(str);
char a[50][50];
void fun(char* str, char (*a)[50]);
fun(str, a);
return 0;
}
int isNumber(char n)
{
if (n >= '0' && n <= '9')return (1);
else return (0);
}
void fun(char* str, char(*a)[50])
{
int i, j = 0, point, flag = 1, count = 0;
for (i = 0; i < strlen(str); i++)
{
if (isNumber(*(str + i)))
{
if (flag == 1)
{
flag = 0;
point = i;
int k = 0;
while (isNumber(*(str + point)))
{
*(*(a + j) + k) = *(str + point);
point++;
k++;
}
*(*(a + j) + k) = '\0';
j++;
count++;
}
}
else
{
flag = 1;
}
}
printf("一共有%d个整数\n", count);
for (i = 0; i < count; i++)
{
printf("%s\n", *(a + i));
}
}