读入一个字符串str,输出字符串str中的连续最长的数字串

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

int main(int argc,char *argv[])

{

//思路:判断当前位置是数字还是非数字,如果是数字,再判断当前位置的前一位是数字还是非数字,如果是非数字,则将当前位置存入beg并开始计算长度len。最后判断哪个位置的数字的长度最大

//str:输入的字符串

//beg:数字串的其实位置 len:数字串的长度

//maxbeg:最长的数字串的起始位置 maxlen:最长数字串的长度

    char *str;

    str=(char *)malloc(256);

    int cout=scanf("%s",str);

    int i,beg=500,len=0;

    int maxbeg=0,maxlen=0;

    for(i=0;i<strlen(str);i++)

    {

        if((*(str+i)>='0')&&(*(str+i)<='9'))

        {

            if(i==0)

            {

                beg=i;len=1;

            }else{

                if((*(str+i-1)<'0')||(*(str+i-1)>'9'))

                {

                    if(maxlen<len)

                    {

                        maxlen=len;

                        maxbeg=beg;

                    }

                    beg=i;

                    len=1;

                }else{

                    len++;

                }

            }

        }

 

    }

    if(maxlen<len)

    {

        maxlen=len;maxbeg=beg;

    }

    int j=0;

    while(j<maxlen){

        printf("%c",*(str+maxbeg+j));

        j++;

    }

 

    return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值