题解 | #IP地址#

IP地址

https://www.nowcoder.com/practice/2359e23180194f99828f5cd9c764236a

#include <stdio.h>
int isIplegal(int ipNum,int ipBits);
int main() {
    char ipAd[16]="";
    int ipNum,ipBits,dotCount,isLegal;
  while(scanf("%s",ipAd)!=EOF){
    ipNum=0,ipBits=0,dotCount=0,isLegal=1;
    if(ipAd[15]!='\0'||ipAd[8]=='\0')//ip长度不合法
    {
        printf("No!\n");
        continue;
    }
    for(int i=0;ipAd[i]!='\0';i++)
    {
        if(ipAd[i]<'0'||ipAd[i]>'9')
        {
            if(ipAd[i]=='.')
            {
                dotCount++;
                if(isIplegal(ipNum,ipBits)==0)
                {
                    isLegal=0;
                    break;
                }
                ipNum=ipBits=0;
            }
            else {
                isLegal=0;
                break;
            }
        }

        else if(ipAd[i]=='0')
        {
            ipBits++;
            if(ipAd[i+1]!='\0'&&ipAd[i+1]!='.'&&ipBits==1)
            {
                isLegal=0;
                break;
            }
        }
        else{
            ipBits++;
            ipNum=ipNum*10+(ipAd[i]-'0'); 
        }
    }
    if(dotCount!=3)
        isLegal=0;
    if(isIplegal(ipNum,ipBits)==0)
        isLegal=0;
    if(isLegal==0)
        printf("No!\n");
    else
        printf("Yes!\n");
  }
    return 0;
   
}

int isIplegal(int ipNum,int ipBits)
{
    if(ipNum<0||ipNum>255||ipBits<0||ipBits>3)
        return 0;
    else
        return 1;
}

全部评论

相关推荐

面了这么多场试,总有公司总喜欢压力面一个小时面试+手撕,哪里不会就点哪里,说了不会不会还继续追着问不尊重求职者,稍微有些细节记不清了,就开始怀疑项目真实性以及人格让求职者开摄像头但是自己不开,说话声音还贼小,pardon几次就开始不耐烦的不知道这个算不算,手撕的时候,面试官人跑了。。。最后快结束才来
一纸丿繁华丶:你换位思考一下,自己在职场被领导push麻了,身心俱疲,现在有个机会让你放松一下,体验一把上位者的感觉,还能看着那些高学历人才、未来自己的竞争者,抓耳挠腮、手足无措的样子,没给你当场笑出来就不错了,理解一下面试官吧。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务