IP地址类


  1. /*      
    2.2.  
    3.3. 2.  
    4.4.  
    5.5.  3. *Copyright   (c)  2016,烟台大学计算机学院    
    6.6.  
    7.7.   4.    
    8.8.  
    9.9.   5. *All rights reserved.     
    10.10.  
    11.11.  6.    
    12.12.  
    13.13.   7. *文件名称:test.cpp       
    14.14.  
    15.15.8.      
    16.16.  
    17.17. 9. *作者: 武聪      
    18.18.  
    19.19. 10.      
    20.20.  
    21.21. 11. *完成日期:2016年5月9 日       
    22.22.  
    23.23.12.    
    24.24.  
    25.25.   13. *版本号:v1.0     
    26.26.  
    27.27.  14. *问题描述:设计一个IP地址类,用于保存IP地址,并实施在IP地址上的一些操作
    28.28.  
    29.29.15. *输入描述:  
    30.30.  
    31.31.16. *程序描述:
    32.32.  
    33.33. 17. */   
    34.#include <iostream>
    using namespace std;
    class IP
    {
    private:
        union
        {
            struct
            {
                unsigned char seg0;
                unsigned char seg1;
                unsigned char seg2;
                unsigned char seg3;
            };  
            unsigned int address; 
        };
    public:
        IP(int=0,int=0,int=0,int=0);  
        void showIP();  
        bool sameSubnet(const IP &ip, const IP &mark);  
        char whatKind();  
    };
    35.IP::IP(int s0,int s1,int s2,int s3)
    {
        seg3=s0;
        seg2=s1;
        seg1=s2;
        seg0=s3;
    }
    36.void IP::showIP()
    {
        cout<<int(seg3)<<"."<<int(seg2)<<"."<<int(seg1)<<"."<<int(seg0)<<endl;
        return;
    }
    37.bool IP::sameSubnet(const IP &ip, const IP &mark)
    {
        unsigned int i1, i2;
        i1=address&mark.address; 
        i2=ip.address&mark.address; 
        return (i1==i2); 
    }
    38.char IP::whatKind()
    {
        if(seg3<128)
            return 'A';
        else if(seg3<192)
            return 'B';
        else if(seg3<224)
            return 'C';
        else if(seg3<240)
            return 'D';
        else
            return 'E';
    }
    39.int main()
    {
        IP ip1(202,194,116,97), ip2(202,194,119,102), mark(255,255,248,0);
        cout<<"ip1: ";
        ip1.showIP();
        cout<<"ip2: ";
        ip2.showIP();
        if(ip1.sameSubnet(ip2,mark))
            cout<<"两个IP在同一子网"<<endl;
        else
            cout<<"两个IP不在同一子网"<<endl;
        cout<<"ip1属于"<<ip1.whatKind()<<"类网络"<<endl;
        return 0;
    }
     
    

    运行结果:

    知识点总结:

    布尔型的使用

    学习心得;

    感觉很难

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值