第一次写博客
做作业的时候有一道题要求统计字符串中的数字
如“12s133 358-76vh9”,提取出每段数字并将其化为整型:
12、133、358、76、9
逻辑思想:遍历数组,用检测是否处于数字字符或数字字符与其他字符的交界处的方法判断是否应该开始读取数字和结束读取,类比电位的上升与下降。
代码如下:
#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
char a[20];
printf("字符串:");
gets(a);
int len=strlen(a),i,j,count=0,wei[20],num[10]={0},times=0;
bool ctoi=0,befctoi=0;
for(i=0;i<len+1;i++)
{
if(a[i]>='0'&&a[i]<='9')
{
ctoi=1;
}
else
{
ctoi=0;
}
if(befctoi==0&&ctoi==1)//上升沿
{
wei[count]=a[i]-'0';
befctoi=1;
count++;
}
else if(befctoi==1&&ctoi==1)//高位
{
wei[count]=a[i]-'0';
count++;
}
else if(befctoi==1&&ctoi==0)//下降沿
{
for(j=0;j<count;j++)
{
num[times]+=wei[j]*pow(10,count-j-1);
}
times++;
befctoi=0;
count=0;
}
}
printf("%d个数\n",times);
for(i=0;i<times;i++)
{
printf("a[%d]=%d\n",i,num[i]);
}
return 0;
}
效果如图: