一丁_ 2019-05-25 21:20 采纳率: 0%
浏览 1889

给定两个 IP 地址和子网掩码判断 IP 是否属于同一网段

1.问题:程序可以运行,但运行结果测试用例通过率只有 75% ,问哪里出现了漏洞?

2.题目描述:给定两个 IP 地址和子网掩码判断 IP 是否属于同一网段

输入描述:IP地址 1,IP地址 2,子网掩码,三个字段之间用空格分隔。能够确保输入的 IP 和子网掩码是合法的。

输出描述:先输出 0 或者 1,0 表示不属于同一网段,1 表示属于同一网段。紧接着输出空格,然后在输出第一个 IP 地址与子网掩码二进制按位与之后的 IP。

参考输入1:192.168.1.1 192.168.1.2 255.255.255.0

参考输出1:1 192.168.1.0

参考输入 2:192.168.1.5 192.168.2.1 255.255.255.0

参考输出 2:0 192.168.1.0

#include <iostream>
#include <string>
#include <sstream>
using namespace std;

int main()
{
    int da1 = 0, db1 = 0, dc1 = 0, dd1 = 0;  //地址一字段
    int da2 = 0, db2 = 0, dc2 = 0, dd2 = 0;  //地址二字段
    int ma = 0, mb = 0, mc = 0, md = 0;      //子网字段
    char ch;
    string str;
    while(cin >> str)
    {
        stringstream ss;
        ss << str;
        ss >> da1 >> ch >> db1 >> ch >> dc1 >> ch >> dd1; //地址 1 输入
        ss.clear();
        cin >> str;
        ss << str;
        ss >> da2 >> ch >> db2 >> ch >> dc2 >> ch >> dd2; //地址 2 输入
        ss.clear();
        cin >> str;
        ss << str;
        ss >> ma >>ch >> mb >> ch >> mc >> md;            //地址 3 输入
        ss.clear();

        if((da1 & ma) == (da2 & ma) && (db1 & mb) == (db2 & mb) &&
            (dc1 & mc) == (dc2 & mc) && (dd1 & md) == (dd2 & md)) //判断是否属于同一网络
        {
            cout << 1 << ' ' << int(da1 & ma) << '.' << int(db1 & mb) << '.' << int(dc1 & mc) << '.' << int(dd1 &md);
        }
        else
        {
            cout << 0 << ' ' << int(da1 & ma) << '.' << int(db1 & mb) << '.' << int(dc1 & mc) << '.' << int(dd1 &md);
        }
        cout << endl;
        da1 = 0, db1 = 0, dc1 = 0, dd1 = 0;
        da2 = 0, db2 = 0, dc2 = 0, dd2 =  0;
        ma = 0, mb = 0, mc = 0, md = 0;
    }
    return 0;
}

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-20 21:44
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥100 求数学坐标画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站