问题描述:
给你一个IP地址,判断她是否合法;
也就是说判断ip地址的每一个数都在[0,255];
解题思路:
思路1;
从头开始扫描IP地址,将每一段都转换成数字,当遇到'.' 或者‘\n’的时候判断数字是否合法;
代码如下:
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
int main()
{
int n;
cin >> n;
char str[20],sub[10];
while(n --)
{
cin >> str;
int length = strlen(str);
int flag = 1;
int j = 0;
for(int i = 0;i < length;i ++)
{
//进行字符串的分割;
if(str[i] != '.' && str[i] != '\n')
{
sub[j] = str[i];
j ++;
continue;
}
//如果遇到‘.’ 或者 '\n'就进行判断
if(str[i] == '.' || str[i] == '\n')
{
int num = atoi(sub);
//转化为数字之后就将该sub数组清空;
for(int k = 0;k <= 3;k ++)
{
sub[k] = ' ';
}
if(num >= 0 && num <= 255)
{
flag = 1;
j = 0;
continue;
}
else
{
flag = 0;
break;
}
}
}
if(flag == 0)
{
printf("No\n");
}
else
{
printf("Yes\n");
}
}
return 0;
}