ccccorgi304 2023-05-24 17:15 采纳率: 88.2%
浏览 110
已结题

请设计一个IP地址类,该类存储一个IP地址及对应的子网掩码信息。通过下面写好的main函数来使用IP地址类。

int main(){   
  int n,m;   
   cin>>n>>m;  
  IPAddr myip(n,m);  
    myip.showIPInfo();    
  return 0;   }

输入描述 输入一个整数n和一个4~30之间的正整数m,使用n来初始化IP地址(IP地址的二进制表示和n一摸一样),使用m来初始化子网掩码,m代表子网掩码中1的个数输出描述 分三行分别输出IP地址、子网掩码和网络地址的点分十进制形式提示 你需要提交除了main函数之外的其他代码。注意输入的n可能是一个负数样例输入 复制 更多-1455049865 24样例输出169.69.179.119255.255.255.0169.69.179.0
下面是我尝试写的一部分但还是不完整

class IPAddr{
    int n,m;
    public:
        IPAddr(int a,int b):n(a),m(b){
        }
        void showIPInfo(){
            int x1=(x&0xff000000)>>24;
    cout<<x1;
    cout<<".";
    int x2=(x&0x00ff0000)>>16;
     cout<<x2;
     cout<<".";
     int x3=(x&0x0000ff00)>>8;
     cout<<x3;
     cout<<".";
     int x4=(x&0x000000ff);
     cout<<x4;
};


  • 写回答

3条回答 默认 最新

  • 红色荷包蛋 2023-05-24 17:28
    关注

    答案参考ChatGPT Plus版,整理汇总。希望能帮助你解决问题

    以下是完整的IP地址类的设计,包括成员变量和成员函数的定义:

    #include <iostream>
    
    class IPAddr {
    private:
        int n; // IP地址对应的整数
        int m; // 子网掩码中1的个数
    
    public:
        IPAddr(int a, int b) : n(a), m(b) {}
    
        void showIPInfo() {
            int x1 = (n & 0xff000000) >> 24;
            std::cout << x1;
            std::cout << ".";
    
            int x2 = (n & 0x00ff0000) >> 16;
            std::cout << x2;
            std::cout << ".";
    
            int x3 = (n & 0x0000ff00) >> 8;
            std::cout << x3;
            std::cout << ".";
    
            int x4 = (n & 0x000000ff);
            std::cout << x4;
        }
    
        void showSubnetMask() {
            int mask = 0xffffffff << (32 - m);
    
            int x1 = (mask & 0xff000000) >> 24;
            std::cout << x1;
            std::cout << ".";
    
            int x2 = (mask & 0x00ff0000) >> 16;
            std::cout << x2;
            std::cout << ".";
    
            int x3 = (mask & 0x0000ff00) >> 8;
            std::cout << x3;
            std::cout << ".";
    
            int x4 = (mask & 0x000000ff);
            std::cout << x4;
        }
    
        void showNetworkAddress() {
            int network = n & (0xffffffff << (32 - m));
    
            int x1 = (network & 0xff000000) >> 24;
            std::cout << x1;
            std::cout << ".";
    
            int x2 = (network & 0x00ff0000) >> 16;
            std::cout << x2;
            std::cout << ".";
    
            int x3 = (network & 0x0000ff00) >> 8;
            std::cout << x3;
            std::cout << ".";
    
            int x4 = (network & 0x000000ff);
            std::cout << x4;
        }
    };
    

    可以使用上述IPAddr类来实现给定的main函数。根据输入的n和m创建IPAddr对象,并调用相应的成员函数来输出IP地址、子网掩码和网络地址的点分十进制形式。

    #include <iostream>
    
    int main() {
        int n, m;
        std::cin >> n >> m;
        IPAddr myip(n, m);
        myip.showIPInfo();
        std::cout << std::endl;
        myip.showSubnetMask();
        std::cout << std::endl;
        myip.showNetworkAddress();
        std::cout << std::endl;
        return 0;
    }
    

    请注意,以上代码只是给出了IP地址类的定义和main函数的示例,还需要添加必要的头文件和命名空间声明,以使代码能够正确编译和运行。此外,可能还需要进行输入的合法性检查和错误处理,以确保输入的值在有效范围内。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月1日
  • 已采纳回答 5月24日
  • 创建了问题 5月24日

悬赏问题

  • ¥15 我想在WPF的Model Code中获取ViewModel Code中的一个参数
  • ¥15 arcgis处理土地利用道路 建筑 林地分类
  • ¥30 java 项目中同包中,无法在子文件中引用
  • ¥20 使用visual studio 工具用C++语音,调用openslsx库读取excel文件的sheet问题
  • ¥100 寻会做云闪付tn转h5支付链接的技术
  • ¥15 DockerSwarm跨节点无法访问问题
  • ¥15 使用dify通过OpenAI 的API keys添加OpenAI模型时报了“Connection Error”错误
  • ¥40 想找个软件,但我不知道怎么找到它,我甚至不知道有没有
  • ¥15 怎么把60秒的视频时长改成显示0秒?且视频内容没有任何变化的正常播放?目的是为了解决一些平台对视频时长的要求,最好有自动处理的工具!
  • ¥15 累加器设初值为00H