题目描述:
现在IPV4下用一个32位无符号整数来表示,一般用点分方式来显示,点将IP地址分成4个部分,每个部分为8位,表示成一个无符号整数(因此不需要用正号出现),如10.137.17.1,是我们非常熟悉的IP地址,一个IP地址串中没有空格出现(因为要表示成一个32数字)。
现在需要你用程序来判断IP是否合法
输入:输入一个ip地址
输出:返回判断的结果YES or NO
样例:
10.138.15.1
YES
分析:
1. 分为4段,前三段以’.'结束,最后一个以’\0'结束
2. 每段里面字符应当都是数字
3.每段数字【0,255】,注意0.0.0.0这样也是合法的
#include <iostream> #include <stdio.h> #include <cstring> using namespace std; int cinverti(char s[]) { int len,t=0; len=strlen(s); for(int i=0;i<len;i++) { t=10*t+s[i]-'0'; } return t; } int IsIP(char str[]) { char *p=str,tmp[10]; int i=0,num; while(*p!='\0') { i=0; while(*p!='.'&&*p!='\0') { if(*p-'0'>9||*p-'0'<0) return 0; tmp[i]=*p; p++; i++; } tmp[i]='\0'; num=cinverti(tmp); if(num<0||num>255) return 0; p++; } return 1; } int main() { // freopen("in.txt","r",stdin); char ip[30]={'\0'}; cin>>ip; if(IsIP(ip)) printf("YES\n"); else printf("NO\n"); return 0; }
【ACM】华为oj--合法ip
最新推荐文章于 2021-09-05 17:27:28 发布