当前位置: 首页 > news >正文

网站建设专业的公司哪家好丰都网站建设案例

网站建设专业的公司哪家好,丰都网站建设案例,wordpress 留言信息在哪,国外优秀企业网站首先看一下题 描述 请解析IP地址和对应的掩码#xff0c;进行分类识别。要求按照A/B/C/D/E类地址归类#xff0c;不合法的地址和掩码单独归类。 所有的IP地址划分为 A,B,C,D,E五类 A类地址从1.0.0.0到126.255.255.255; B类地址从128.0.0.0到191.255.255.255; C类地址从192.0.…首先看一下题 描述 请解析IP地址和对应的掩码进行分类识别。要求按照A/B/C/D/E类地址归类不合法的地址和掩码单独归类。 所有的IP地址划分为 A,B,C,D,E五类 A类地址从1.0.0.0到126.255.255.255; B类地址从128.0.0.0到191.255.255.255; C类地址从192.0.0.0到223.255.255.255; D类地址从224.0.0.0到239.255.255.255 E类地址从240.0.0.0到255.255.255.255 私网IP范围是 从10.0.0.0到10.255.255.255 从172.16.0.0到172.31.255.255 从192.168.0.0到192.168.255.255 子网掩码为二进制下前面是连续的1然后全是0。例如255.255.255.32就是一个非法的掩码 注意二进制下全是1或者全是0均为非法子网掩码 注意 1. 类似于【0.*.*.*】和【127.*.*.*】的IP地址不属于上述输入的任意一类也不属于不合法ip地址计数时请忽略 2. 私有IP地址和A,B,C,D,E类地址是不冲突的 输入描述 多行字符串。每行一个IP地址和掩码用~隔开。 请参考帖子https://www.nowcoder.com/discuss/276处理循环输入的问题。 输出描述 统计A、B、C、D、E、错误IP地址或错误掩码、私有IP的个数之间以空格隔开。 示例1 输入 10.70.44.68~255.254.255.0 1.0.0.1~255.0.0.0 192.168.0.2~255.255.255.0 19..0.~255.255.255.0输出 1 0 1 0 0 2 1说明 10.70.44.68~255.254.255.0的子网掩码非法19..0.~255.255.255.0的IP地址非法所以错误IP地址或错误掩码的计数为2 1.0.0.1~255.0.0.0是无误的A类地址 192.168.0.2~255.255.255.0是无误的C类地址且是私有IP 所以最终的结果为1 0 1 0 0 2 1 示例2 输入 0.201.56.50~255.255.111.255 127.201.56.50~255.255.111.255输出 0 0 0 0 0 0 0 说明 类似于【0.*.*.*】和【127.*.*.*】的IP地址不属于上述输入的任意一类也不属于不合法ip地址计数时请忽略 一、问题分析 1.解析IP地址和对应的掩码进行分类识别。 2.按照A/B/C/D/E类地址归类不合法的地址和掩码单独归类。 3.一共有五类IP地址 A类地址从1.0.0.0到126.255.255.255 B类地址从128.0.0.0到191.255.255.255 C类地址从192.0.0.0到223.255.255.255 D类地址从224.0.0.0到239.255.255.255 E类地址从240.0.0.0到255.255.255.255 私网IP的范围 从10.0.0.0到10.255.255.255 从172.16.0.0到172.31.255.255 从192.168.0.0到192.168.255.255 4.子网掩码为二进制下前面是连续的1然后全是0。 举例说明255.255.255.32是一个非法的掩码 因为它的二进制是11111111.11111111.1111111.00100000 不是全都连续 5.题目还提及了二进制下全是1或者全是0均为非法子网掩码 也就是说255.255.255.255和0.0.0.0是非法子网掩码 6.提及了两个注意的点 ①类似于0.*.*.*和127.*.*.*的IP地址不属于上述输入的任何一类也不属于不合法ip地址计数时忽略 ②私有IP地址和ABCDE类地址是不冲突的也就是说一个地址他可以是A类私有也可是是A类公有 7.输入描述多行字符串每行一个IP地址和掩码用~隔开。 还提及了请参考帖子https://www.nowcoder.com/discuss/276处理循环输入的问题。 8.输出描述统计A、B、C、D、E、错误IP地址或错误掩码、私有的IP的个数之间以空格隔开。 9.通过读题我们的到题目大概的意思是输入一些IP和掩码让我们来统计这些 IP和掩码的组合中A类地址B类地址C类地址D类地址E类地址 错误的IP地址或错误掩码 以及私有的IP的个数 这些数字之间以空格隔开 10.我们来看一下示例1 10.70.44.68~255.254.255.0 1.0.0.1~255.0.0.0 192.168.0.2~255.255.255.0 19..0.~255.255.255.0 这个输入输入了四条IP和掩码组合 第一条是A类地址但是掩码前面的部分不是连续的1所以这是一个不合法的掩码单独归类 第二条是一个A类地址且掩码前面8位都是1所以是一个合法的A类地址但他不是一个A类私有地址 第三条是一个C类地址他的前24位掩码都是1所以是一个合法的C类地址而且他还是一个C类私有地址 第四条IP地址是错误的所以计入错误IP地址或错误掩码 所以我们有1个A类地址0个B类地址1个C类地址0个D类地址0个E类地址2个错误IP地址或错误掩码1个私有IP 所以我们输出1 0 1 0 0 2 1 再来看一下示例2 0.201.56.50~255.255.111.255 127.201.56.50~255.255.111.255 第一条符合0.*.*.*它不属于任何一类也不属于不合法ip地址所以清零 第二条符合127.*.*.*也不属于任何一类所以清零 所以我们输出0 0 0 0 0 0 0 二、解题思路 1.首先我们需要定义一个s用来读取每一行的数据 每行的数据应该不超过 (3个数字*4组4个点)*2 1个“~”符号 33个字符 2. 我们定义a,b,c,d,e用来存放这五类地址的个数,然后我们定义一个error来存放错误IP地址或错误掩码的个数,然后我们定义一个private存放私有IP的个数 3.我们逐行读取数据,并用strtok分割字符串,“~”左边的是IP,“~”右边的是子网掩码 4.我们将~左边的IP储存为char *ip,将~右边的子网掩码储存为char *subnetmask 5.首先我们对子网掩码进行判断 使用sscanf将子网掩码分成四个部分,sscan(subnetmask,“%d.%d.%d.%d, s1, s2, s3, s4)读取到四个整数变量中s1,s2,s3,s4 sscanf它的作用类似于scanf函数但是sscanf是从给定的字符串str中读取数据而scanf是从标准输入通常是键盘读取数据。 如果s1、s2、s3、s4全都是0或者全都是255那么证明这个子网掩码是错误的,我们不需要再检查ip地址了直接error 如果s1、s2、s3、s4大于等于0小于等于255,那么我们开始检查他的前面是否全都是1,后面是否全都是0 (如果s1-4中任何一个部分小于0或者大于255那么也是错误掩码error) 6.如果我们判断好子网掩码是正确的了,那么我们判断IP地址(否则直接error不用判断IP) 同样用sscan,将ip地址分成四个部分,sscan(s,“%d.%d.%d.%d, ip1, ip2, ip3, ip4)读取到四个整数变量中ip1,ip2,ip3,ip4 首先我们判断ip1是否是0或者127,如果ip1等于0或者127那么我们直接continue,进入下一次循环(读取下一行数据) 然后我们判断ip1、ip2、ip3、ip4是否全都是大于0小于256,如果是的话我们接着判断(如果不是的话我们error) 先判断ip地址属于五类ip中的哪一类,判断ip1是属于1-126,128-191,192-223,224-239,240-255哪一个部分,然后分别对应部分的字母 比如ip11 ip1 126的情况下我们a 然后我们在a类的情况中还需要判断ip1是否等于10,如果是我们private 在b类的情况中我们判断ip1是否等于172,如果是我们再判断ip2是否大于等于16小于等于31如果是,我们private 在c类的情况中我们判断ip1是否是192,如果是我们再判断ip2是否是168,如果是我们private 7.然后打印我们的a,b,c,d,e,error,private.(以空格隔开) 三、具体步骤 使用的语言是C 1.我们#include stdio.h引入输入输出库可以调用scanf、sscanf和printf函数 2.我们#include string.h库可以使用strtok函数,分割我们的字符串 3.我们进入主程序int main() 4.我们char s[33]; 5.我们将计数器初始化 int a 0; int b 0; int c 0; int d 0; int e 0; int error 0; int private 0; 6.逐行扫描进来输入直到没有数据 while(scanf(%32s, s) ! EOF) 7.读入ip和subnetmask char *ip strtok(s, ~); char *subnetmask strtok(NULL, ~); 然后我们对子网掩码进行判断,先将其四个部分分别取出 unsigned int s1, s2, s3, s4; sscan(subnetmask,“%d.%d.%d.%d, s1, s2, s3, s4); 我们定义一个notValid 0;用来记录如果子网掩码不合法的话就跳过ip地址检查 如果是全0或者全1的情况我们记录非法 if((s1 0 s2 0 s3 0 s4 0) || (s1 255 s2 255 s3 255 s4 255)) error; notValid 1; 检查合法性 else if(s1 0 s1 255 s2 0 s2 255 s3 0 s3 255 s4 0 s4 255)  如果合法,从第一位二进制开始检查是否是1,直到检查到0,如果之后全是0那么证明合法,如果之后又碰到了1那么这个子网掩码错误 我们先将这四个部分都放到一个整数mask中 unsigned int mask (s1 24) | (s2 16) | (s3 8) | s4; 然后对mask进行检查,如果 位了方便我们检查我们定义一个int find0 0;表示我们是否在子网掩码中从做往右检查的过程中,找到了0 for(int front1 31; front1 0; front1--) if(!(mask (1 front1))) 如果我们发现了0,那么我们find0 1; if(find0 1 (mask (1 front1))) 如果我们发现了0之后,又发现了1那么我们这个子网掩码不合法 我们error,并且break;跳出for循环 我们用同样的方法将ip地址的四个部分取出来 并进行ip地址分类 #include stdio.h #include string.hint main() {char s[33];int a 0;int b 0;int c 0;int d 0;int e 0;int error 0;int private 0;while (scanf(%s, s) ! EOF) {//printf(our input is: %s\n, s);char* ip strtok(s, ~);char* subnetmask strtok(NULL, ~);//printf(ip : %s\nsubnetmask : %s\n, ip, subnetmask);int s1, s2, s3, s4;if ((sscanf(subnetmask, %d.%d.%d.%d, s1, s2, s3, s4)) ! 4) {error;continue;}//printf(test s1: %d\n, s1);//现在我们开始对ip进行分类识别int ip1, ip2, ip3, ip4;if ((sscanf(ip, %d.%d.%d.%d, ip1, ip2, ip3, ip4)) ! 4) {//读取有问题//printf(error reason4: reading problem, ip is not correct.\n);//printf(%s\n, ip);error;continue;}//printf(after valid subnetmask the ip1 is%d\n, ip1);if (ip1 0 || ip1 127) continue;int notValid 0;if ((s1 0 s2 0 s3 0 s4 0) || (s1 255 s2 255 s3 255 s4 255)) {//printf(error reason1: subnetmask is all zero or one.\n);//printf(subnetmask is %d.%d.%d.%d\n, s1, s2, s3, s4);error;notValid 1;} else if (s1 0 s1 255 s2 0 s2 255 s3 0 s3 255 s4 0 s4 255)  {unsigned int mask (s1 24) | (s2 16) | (s3 8) | s4;//printf(mask : %u\n,mask);int find0 0;for (int front1 31; front1 0; front1--) {if (!(mask (1 front1))) { //如果碰到了0,我们记录一下find0 1;}if ((mask (1 front1)) (find0 1)) { //如果已经碰到过0之后又碰到1那证明这个子网掩码错误notValid 1;//printf(error reason2:subnet mask is not consecutive one and zero\n);//printf(%u\n, mask);error;//printf(the subnet mask in binary is:\n);// for (int i 31; i 0; i--) {// unsigned int bit (mask i) 1;// printf(%u, bit);// }//printf(\n);//printf(this subnetmask is not valid!\n);break;}}} else {//printf(error reason3: subnet mask not in ordinary range\n);//printf(%d.%d.%d.%d\n, s1, s2, s3, s4);error;}//这个时候我们可以通过notValid来判断子网掩码是否是错误的,只有子网掩码正确的情况下我们才判断ipif (notValid) continue;if (ip1 0 ip1 255 ip2 0 ip2 255 ip3 0 ip3 255 ip4 0 ip4 255) { // 如果我们的ip地址合法if (ip1 1 ip1 126) {a;//printf(a the ip1 is %d, ip2 is %d\n, ip1, ip2);if (ip1 10) {private;}} else if (ip1 128 ip1 191) {b;if (ip1 172) {if (ip2 16 ip2 31) {private;}}} else if (ip1 192 ip1 223) {c;if ((ip1 192) (ip2 168)) {private;}} else if (ip1 224 ip1 239) {d;} else if (ip1 240 ip1 255) {e;}} else {//printf(error reason5: ip is not in ordinary range.\n);//printf(%s\n, ip);error;}//printf(\n);}printf(%d %d %d %d %d %d %d, a, b, c, d, e, error, private); } 又写了一个放在function里的 #include stdio.h #include string.h #define VALIDIP(a, b, c, d) (a 0 a 255 b 0 b 255 c 0 c 255 d 0 d 255 )int isMaskValid(char* subnetmask) {int s1, s2, s3, s4;unsigned int mask;unsigned int max -1;if ((sscanf(subnetmask, %d.%d.%d.%d, s1, s2, s3, s4)) ! 4) {return 0;} else if (VALIDIP(s1, s2, s3, s4)) {mask (s1 24) | (s2 16) | (s3 8) | s4;if (mask 0 || mask max) return 0;else {while (!(mask 1)) {mask 1;max 1;}}} else {return 0;}return mask max; }void classifyIP(char* s, int* a, int* b, int* c, int* d, int* e, int* error,int* private) {char *ip strtok(s, ~);char *subnetmask strtok(NULL, ~);int i[4];if ((sscanf(ip, %d.%d.%d.%d, i[0], i[1], i[2], i[3])) 4) {if (VALIDIP(i[0], i[1], i[2], i[3])){if(i[0] 0 || i[0] 127) return;else if (isMaskValid(subnetmask)){if(i[0] 127) {(*a);if(i[0] 10) (*private);} else if(i[0] 192){(*b);if(i[0] 172 i[1] 31) (*private);} else if(i[0] 224){(*c);if(i[0] 192 i[1] 168) (*private);} else if(i[0] 240) (*d);else (*e);} else {(*error);}} else {(*error);}} else {(*error);} }int main() {char s[33];int a 0, b 0, c 0, d 0, e 0, error 0, private 0;while(scanf(%s, s) ! EOF){classifyIP(s, a, b, c, d, e, error, private);}printf(%d %d %d %d %d %d %d,a, b, c, d, e, error, private); } 2024/10/29-21:34-2024/10/30-15:08
http://www.w-s-a.com/news/848524/

相关文章:

  • 桥东区住房和建设局网站怎么做网上问卷
  • 做期货要看哪些网站伪装的福祉 wordpress
  • 做网站需要多少费用网站建设需要懂什么语言
  • 网站手机端做app开发商城设计方案
  • 在建设厅网站上查询注销建造师查域名是否注册
  • 企业网站推广方案策划公司网站在国外打开很慢使用cdn好还是国外租用服务器好
  • 龙华o2o网站建设百度不收录什么网站吗
  • 模板搭建网站百度信息流推广
  • 移动端网站制作模板自己做的网站点击赚钱
  • 网站站长如何赚钱wordpress抓取别人网站
  • 做网站媒体专门做产品定制的网站
  • 公司企业网站建设步骤免费asp网站模板
  • 台州企业网站搭建价格做留言的网站
  • 西安网站建设q.479185700強高端网站设计定制公司
  • 网站设计是平面设计吗音频文件放到网站空间里生成链接怎么做
  • seo是对网站进行什么优化可以在哪些网站做翻译兼职
  • 南宁seo网站推广服务网站建设客户分析
  • 网站属于什么公司甜品售卖网站网页设计
  • 如何在宝塔中安装wordpressseo1888网站建设
  • 网站系统cms湖南平台网站建设制作
  • 美团网站怎么做未备案网站加速
  • 通用cms网站wordpress可以商用
  • 阳江网络问政平台 周报济南seo公司案例
  • 重庆聚百思网站开发网络市场调研
  • seo工具共享网站敬请期待的英语
  • 最好看免费观看高清大全中国移动网络优化做什么的
  • 网站开发的步骤医院网站建设细节
  • 阿雷网站建设wordpress lucene
  • seo做多个网站建筑公司企业标语
  • 各大网站收录查询汕尾手机网站设计