题解 | #合法IP#

合法IP

https://www.nowcoder.com/practice/995b8a548827494699dc38c3e2a54ee9

//1.没有其他字符 2.有且仅有仨点,且不相连,且不出现在两头 3.两位及以上数字不以0开头
#include <math.h>
#include <stdio.h>
#include <string.h>

int main() {

    char ip[20] = {0};
    scanf("%s", ip);
    int flag = 0;
    int l = 0,x = -1;
    int len = strlen(ip);
    for (int i = 0; i < len; i++) {
        if (ip[i] == '.' || (ip[i] >= '0' && ip[i] <= '9') ) {
            if (ip[i] == '.') {
                l++;
            }
            if (ip[0] == '0' && ip[1] != '.') {
                x = 0;
                flag = 1;
                break;
            }
            if (ip[i] == '.' && ip[i + 1] == '0' && ip[i + 2] >= '0' && ip[i + 2] <= '9') {
                x = 0;
                flag = 1;
                break;
            }
        } else {
            x = 0;
            flag = 1;
            break;
        }
    }

    if (flag == 0 && l == 3) {
        int a, b, c, d;
        a = b = c = d = -1;
        sscanf(ip, "%d.%d.%d.%d", &a, &b, &c, &d);
        //printf("%d\n", a);
        //printf("%d\n", b);
        //printf("%d\n", c);
        //printf("%d\n", d);
        if (a != EOF && b != EOF && c != EOF && d != EOF) {
            int m = pow(2, 8);
            if (a < m && b < m && c < m && d < m) {
                x = 1;
            } else {
                x = 0;
            }
        } else {
            x = 0;
        }
    }else {
            x = 0;
        }

        //printf("%d",x);

        if (x == 0) {
            printf("NO");
        }else   {
            printf("YES");
        }


    return 0;
}

全部评论

相关推荐

04-25 19:29
已编辑
宁波大学 运营
被普调的六边形战士很高大:你我美牛孩
点赞 评论 收藏
分享
04-06 16:59
已编辑
河南工业大学 Java
牛牛牛的牛子:最好扔了,实在没有选择的选择
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务