统计字符串中连续数字字符组成的整数的个数

来源:互联网 发布:java中的23种设计模式 编辑:程序博客网 时间:2024/06/11 09:50

输入一个字符串,内有数字和非数字字符,将其中连续的数字作为一个整数,依次存放到一个数组中。统计共有多少个整数,并输出这些数。

代码

#include<stdio.h>int main(){    char str[50],*pstr;    int i=0,j=0,k,m,e10,digit,ndigit=0,a[10],*pa;    printf("Please enter a string: ");    gets(str);    pstr=&str[0];/*字符串指针指向字符串首地址*/    pa=&a[0];/*数字指针指向数组首地址*/    while(*(pstr+i)!='\0')    {        if((*(pstr+i)>='0')&&(*(pstr+i)<='9'))/*如果是数字,则开始计数*/            j++;        else        {            if(j>0)/*当上一个字符是数字,当前字符是非数字时*/            {                digit=*(pstr+i-1)-48;/*先计算出最后一个数字*/                k=1;                while(k<j)/*依次计算其他位上的数字*/                {                    e10=1;                    for(m=1;m<=k;m++)/*按照数字应有的位置乘以相应的幂次方*/                        e10*=10;                    digit+=(*(pstr+i-1-k)-48)*e10;                    k++;                }                *pa=digit;/*将本次计算出来的数字存入数组*/                ndigit++;/*数字个数增1*/                pa++;                j=0;            }        }        i++;/*字符串指针往后移动一位*/    }    if(j>0)/*如果字符串是以数字结束的*/    {        digit=*(pstr+i-1)-48;        k=1;        while(k<j)        {            e10=1;            for(m=1;m<=k;m++)                e10*=10;            digit+=(*(pstr+i-1-k)-48)*e10;            k++;        }        *pa=digit;        ndigit++;        j=0;    }    printf("There are %d numbers in this line,they are:\n",ndigit);    j=0;    pa=&a[0];    for(j=0;j<ndigit;j++)/*输出数字*/        printf("%d ",*(pa+j));    printf("\n");    return 0;}


1 0
原创粉丝点击