首页 > 编程知识 正文

一下哪个ip为正确的ip地址,正确的ip地址是多少

时间:2023-05-04 03:28:45 阅读:255317 作者:4194

IP

简介
IP地址(英语:Internet Protocol Address)是一种在Internet上的给主机编址的方式,也称为网际协议地址。IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。常见的IP地址,分为IPv4与IPv6两大类。目前还有些ip代理软件,但大部分都收费。(在高中的备战oi时学过的都忘记了这次又遇到一道题正好回顾一下知识)
题目来源(为IPv4):https://vjudge.net/contest/271643#problem/C
ip计算
在网络课程上,我学到了很多有关IP的知识。IP全称叫网际协议,有时我们又用IP来指代我们的IP网络地址,现在IPV4下用一个32位无符号整数来表示,一般用点分方式来显示,点将IP地址分成4个部分,每个部分为8位,表示成一个无符号整数(因此不需要用正号出现),如192.168.100.16,是我们非常熟悉的IP地址,一个IP地址串中没有空格出现(因为要表示成一个32数字)。
但是粗心的我,常常将IP地址写错,现在需要你用程序来判断。
Input
输入有多个case,每个case有一行,不超过100个字符。
Output
对于每个case,判断输入的IP是否正确,如果正确输入YES,否则NO。
Sample Input
192.168.100.16
Sample Output
YES
正确的ip:IP地址每个字节范围是0到255,IPv4中规定IP地址长度为32(按TCP/IP参考模型划分) ,即有2^32-1个地址。一般的书写法为4个用小数点分开的十进制数。也有人把4位数字化成一个十进制长整数,但这种标示法并不常见。另一方面,IPv6使用的128位地址所采用的位址记数法,在IPv4也有人用,但使用范围更少。
代码:

#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>using namespace std;int i, j, k, m, n, l, s, t, x, y;int main(){ int flag; int b[101]; char a[200]; while (scanf(" "), gets(a)) { for (i = strlen(a) - 1; a[i] == ' '; i--)//去掉后面的空格 a[i] = 0; flag = 1; n = strlen(a); j = 1; for (i = 0; i <= n - 1; i++) { if (a[i] == '.') b[j++] = i; if (!(a[i] == '.' || a[i] >= '0'&&a[i] <= '9')) { flag = 0; break; } } if (j != 4) { cout << "NOn"; continue; } if (flag == 0) { cout << "NOn"; continue; } //3个点,并且不能有其他字符 b[0] = -1; b[4] = n; for (i = 0; i <= 3; i++) if (b[i + 1] - b[i] == 1 || b[i + 1] - b[i] > 4) { flag = 0; break; } if (flag == 0) { cout << "NOn"; //检查点间距 continue; } for (j = 0; j <= 3; j++) { x = 0; for (k = b[j] + 1; k <= b[j + 1] - 1; k++) { x *= 10; x += a[k] - '0'; } if (x >= 256) { flag = 0; //检查数字 break; } } if (flag == 0) { cout << "NOn"; continue; } cout << "YESn"; }}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。