c语言初学者,请求各位帮助。

img


确实困扰,没有思路,请问各位有什么思路和想法,帮帮我,我也是困惑了,不知道咋办

无符号int类型保存ip和子网,前2个数分别和第3个数&运算,结果一样输出Y。

unsigned stoi(char *s)
{
    unsigned r = 0, t = 0;
    while (*s)
    {
        if (*s == '.')
        {
            r += t;
            r <<= 8;
            s++;
            t = 0;
            continue;
        }
        t = t * 10 + (*s - '0');
        s++;
    }
    r += t;

    return r;
}

int main()
{
    char a[20], b[20], c[30];
    unsigned na, nb, nc;
    while (~scanf("%s%s%s", a, b, c))
    {
        na = stoi(a);
        nb = stoi(b);
        nc = stoi(c);
        if ((na & nc) == (nb & nc))
            putchar('Y');
        else
            putchar('N');
    }

    return 0;
}

二进制 与 运算结果一样则在同一子网

img