1006;IP判断

1006:IP判断


Description


在基于Internet的程序中,我们常常需要判断一个IP字符串的合法性。

合法的IP是这样的形式:

A.B.C.D

其中A,B,C,D均位于【0,255】中的整数。为了简单起见,我们规定这四个整数中不允许有 前导0存在,如001这种情况。

现在,请你来完成这个判断程序吧。


Input


输入由多行组成,每行是一个字符串,输入由“end of file”结束。

字符串长度最大为30,且不含空格和不可见字符。


Output


对于每一个输入,单独输出=一行。

如果该字符串合法的IP,输出Y,否则,输出N。


Sample Input


 1.2.3.4

a.b.c.d

267.43.64.12

12.34.56.bb

210.43.64.129

-123.4.5.6


Sample Output


Y

N

N

N

Y

N


#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int main()
{
    char ip[1000];
    int a,b,c,i,j,k,num[5];
    while(scanf("%s",ip)!=EOF)
    {
        a=strlen(ip);
        b=1;
        c=0;
        memset(num,0,sizeof(num));
        for(i=0,j=1,k=1;i<a;i++)
        {
            if(ip[i]=='.')
            {
                c++;
                k=1;
                j++;
            }
        else
        {
            if(k==1&&ip[i]=='0')
            {
                b=0;
                break;
            }
        if(ip[i]>='0'&&ip[i]<='9')
        {
            num[j]=num[j]*10+ip[i]-'0';
            k++;
        }
        else
        {
            b=0;
            break;
        }
        }
        }
    if(c!=3)
        b=0;
    for(i=1;i<=4;i++)
    if(num[i]<0||num[i]>255)
    {
        b=0;
        break;
    }
   if(b==0)
        cout<<"N";
   else
    cout<<"Y";
    cout<<endl;
    }
return 0;
}

经典    分支结构


.section ".mcal_text","ax" .align 2 ..bof.D.3A.5CGitRepos.5Cwuling.5CBL05.5Ccode.5CD1201C6000.5C_gen.5CStm_Ip...44.3A.5CGitRepos.5Cwuling.5CBL05.5Ccode.5CD1201C6000..6899589A..0:: ..gh.f.a.1.e.0: .endo ..gh.f.a.1.e.0 .thumb2 .global Stm_Ip_ProcessCommonInterrupt..D.3A.5CGitRepos.5Cwuling.5CBL05.5Ccode.5CD1201C6000.5C_gen.5CStm_Ip. Stm_Ip_ProcessCommonInterrupt..D.3A.5CGitRepos.5Cwuling.5CBL05.5Ccode.5CD1201C6000.5C_gen.5CStm_Ip.: Stm_Ip_ProcessCommonInterrupt: .LDW01: push {r4-r7,lr} sub sp,sp,4 cpy r5,r1 .LDW11: cbnz r0,.L197 cmp r1,4 bhs .L197 .L467: ;line971 ..lin.f297227c..45a5b7c5.0_1:: .LDWlin1: bl SchM_Enter_Gpt_GPT_EXCLUSIVE_AREA_11 ldr r1,.L464 adds r4,r1,r5 lsl 4 ldr r0,[r4] and r6,r0,1 ldr r0,[r4,4] and r7,r0,1 cbz r6,.L210 cbz r7,.L210 ;line982 ..lin.f297227c..45a5b7c5.0_2:: .LDWlin2: movs r0,1 str r0,[r4,4] .L210: .L469: bl SchM_Exit_Gpt_GPT_EXCLUSIVE_AREA_11 cbz r6,.L197 cbz r7,.L197 ;line991 ..lin.f297227c..45a5b7c5.0_3:: .LDWlin3: ldr r1,.L465 lsls r0,r5,4 ldrb r2,[r0,r1] adds r0,r0,r1 ldr r6,[r0,4] ldrb r7,[r0,8] ldr r0,[r0,12] str r2,[sp] cmp r0,1 bne .L225 ;line1006 ..lin.f297227c..45a5b7c5.0_4:: .LDWlin4: cpy r1,r5 movs r0,0 .L471: bl Stm_Ip_DisableChannel b .L222 .L225: ;line1015 ..lin.f297227c..45a5b7c5.0_5:: .LDWlin5: ldr r0,.L466 ldr r1,[r4,8] ldr.w r0,[r0,r5 lsl 2] adds r0,r0,r1 str r0,[r4,8] .L222: ldr r0,[sp] cbz r0,.L197 cbz r6,.L197 ;line1021 ..lin.f297227c..45a5b7c5.0_6:: .LDWlin6: cpy r0,r7 .L473: blx r6 .L197: .LDW21: add sp,sp,4 .L475: pop {r4-r7,pc} __ghs_eofn_Stm_Ip_ProcessCommonInterrupt: .endf Stm_Ip_ProcessCommonInterrupt .endf Stm_Ip_ProcessCommonInterrupt..D.3A.5CGitRepos.5Cwuling.5CBL05.5Ccode.5CD1201C6000.5C_gen.5CStm_Ip. 详细解析这段代码
最新发布
08-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值