编程小练习
来源:互联网 发布:js让一个div显示 编辑:程序博客网 时间:2024/06/07 00:19
- /*
- *Copyright(c) 2016.烟台大学计算机与控制工程学院
- *ALL rights reserved.
- *文件名称:test.cpp
- *作者:李落才
- *完成日期:2016年4月11日
- *问题描述:IP地址
- */
- /*
- *国际规定:把所有的IP地址划分为 A,B,C,D,E
- * A类地址:范围从0-127
- * B类地址:范围从128-191
- * C类地址:范围从192-223
- * D类地址:范围从224-239
- * E类地址:范围从240-254
- *在日常网络环境中,基本是都在使用B,C两大类地址,而ADE这3类地址都不打可能被使用到。
- */
- #include <iostream>
- using namespace std;
- class IP
- {
- private:
- union
- {
- struct
- {
- unsigned char seg0;
- unsigned char seg1;
- unsigned char seg2;
- unsigned char seg3;
- }; //IP地址共4字节,或者看成结构体所指4部分
- unsigned int address; //或者看成一个整体
- };
- public:
- IP(int=0,int=0,int=0,int=0); //构造函数
- void showIP(); //用四段法显示IP地址
- bool sameSubnet(const IP &ip, const IP &mark); //判断是否处于同一子网
- char whatKind(); //返回属于哪一类网络
- };
- IP::IP(int s0,int s1,int s2,int s3)
- {
- seg3=s0;
- seg2=s1;
- seg1=s2;
- seg0=s3;
- }
- void IP::showIP()
- {
- cout<<int(seg3)<<"."<<int(seg2)<<"."<<int(seg1)<<"."<<int(seg0)<<endl;
- return;
- }
- 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); //与子网掩码的逻辑与运算结果相同,则属于同一子网
- }
- 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';
- }
- 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
- 编程练习小程序
- 编程小练习
- 编程小练习(1)
- 编程小练习(2)
- 编程小练习(3)
- 编程小练习(4)
- 编程小练习(5)
- 编程小练习(6)
- VB编程小练习
- 编程小练习
- 编程小练习2
- 编程小练习3
- 编程小练习4
- 编程小练习5
- 编程小练习6
- 编程小练习6
- 编程小练习7
- 编程小练习8
- iOS AFN 做缓存(如何简单的做缓存)
- Centos 7 密码破解
- ROC曲线-阈值评价标准
- Tomcat清除缓存
- 打破ImageNet中的线性分类器Breaking Linear Classifiers on ImageNet
- 编程小练习
- Android两种监听器设置
- LinqToSqlite
- Qt不规则界面及组件的实现
- SVN使用教程总结
- Android去除烦人的默认闪退Dialog
- python的使用环境总结
- 在iOS上使用AirPrint实现无线打印功能
- VIM mark功能