题目描述
现在IPV4下用一个32位无符号整数来表示,一般用点分方式来显示,点将IP地址分成4个部分,每个部分为8位,表示成一个无符号整数(因此不需要用正号出现),如10.137.17.1,是我们非常熟悉的IP地址,一个IP地址串中没有空格出现(因为要表示成一个32数字)。
现在需要你用程序来判断IP是否合法。
输入描述:
输入一个ip地址
输出描述:
返回判断的结果YES or NO
示例1
输入
10.138.15.1
输出
YES
c++:
用flag记录状态
扫描二维码关注公众号,回复:
2989320 查看本文章
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
string s;
while(cin >> s)
{
string a;
int flag = 0;
s = s + '.';
for(int i = 0; i < 4; i++)
{
int index = s.find('.');
a = s.substr(0, index);
int sum = 0;
for(int j = 0; j < a.size(); j++)
{
if (a[j] >= '0' && a[j] <= '9')
{
sum += (a[j] - '0') * pow(10, a.size() - j - 1);
}
else
{
flag = 0;
break;
}
}
if (sum < 256)
{
flag++;
}
s = s.substr(index + 1);
}
if(flag == 4)
{
cout << "YES" << endl;
}
else
{
cout << "NO" << endl;
}
}
return 0;
}
python:
while True:
try:
flag = 0
a = input().split('.')
for i in a:
if i.isdigit():
if 256 > int(i) >= 0:
pass
else:
print('NO')
flag = 1
break
else:
print('NO')
flag = 1
break
if flag == 0:
print('YES')
except:
break