问题:
判断IP地址是否合法,格式为a.b.c.d,每个数均为整数,且在[0.255]之间,若合法输出YES,否则输出no;
例如,输入:
2
1.2.3.4
2222.3.4.5
输出:
yes
no
分析:
循环解决。
刚开始没看清题意,以为很容易解决,谁知各个数据之间有小数点隔开。字符和字符串掌握较差,还没想通具体该怎么办。
这篇博客已解决这道题
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<math.h>
#include<cstring>
using namespace std;
void judge(int *a)
{ int k=1;
for(int i=0;i<4;i++)
{
if(255<a[i]||a[i]<0)
k=0;
}
if(k==1) cout<<"yes"<<endl;
else if(k==0) cout<<"NO"<<endl;
}
int main()
{
char s[100];
int i=0,n;
cin>>n;
while(i<n)
{
cin>>s;
int a[4]={0},j=0,num=0,l=strlen(s)-1;
while(l>=0)
{
if(s[l]!='.'&&l>=0)
{
a[j]+=(s[l]-'0')*pow(10,num);
num++;
}
if(s[l]=='.')
{
j++;
num=0;
}
l--;
}
i++;
int *p=a;
judge(p);
}
return 0;
}