参考代码:

/*问题 1116: IP判断

时间限制: 1Sec 内存限制: 128MB 提交: 449 解决: 194


题目描述

在基于Internet的程序中,我们常常需要判断一个IP字符串的合法性。 

合法的IP是这样的形式: 

A.B.C.D 

其中A、B、C、D均为位于[0, 255]中的整数。为了简单起见,我们规定这四个整数中不允许有前导零存在,如001这种情况。 

现在,请你来完成这个判断程序吧^_^


输入

输入由多行组成,每行是一个字符串,输入由“End of file”结束。 

字符串长度最大为30,且不含空格和不可见字符


输出

对于每一个输入,单独输出一行 

如果该字符串是合法的IP,输出Y,否则,输出N


样例输入

1.2.3.4

a.b.c.d

267.43.64.12

12.34.56.bb

210.43.64.129

-123.4.5.6

样例输出

Y

N

N

N

Y

N*/

#include<iostream>

#include<cstdlib>

using namespace std;

bool judge(int n)

{

if(n>=0&&n<=255)

return true;

return false;

}

int main()

{

char s[100];


while(cin>>s)

{

int flag=0;

int i=0,j=0,k=3;

char a[10],b[10],c[10],d[10];

for(i=0;s[i]!='\0';i++)

{

if(s[i]!='.'&&(s[i]<48||s[i]>57))

{

cout<<"N"<<endl;

flag=1;

break;

}

}

if(flag)

continue;

i=j=0;

while(s[i]!='.')

{

a[j++]=s[i++];

a[j]='\0';

}

i++;

int a1=atoi(a);

j=0;

while(s[i]!='.')

{

b[j++]=s[i++];

b[j]='\0';

}

i++;

int b1=atoi(b);

j=0;

while(s[i]!='.')

{

c[j++]=s[i++];

c[j]='\0';

}

i++;

int c1=atoi(c);

j=0;

while(s[i]!='\0')

{

d[j++]=s[i++];

d[j]='\0';

}

int d1=atoi(d);

if(judge(a1)&&judge(b1)&&judge(c1)&&judge(d1))

cout<<"Y"<<endl;

else

cout<<"N"<<endl;

}


点赞(1)
 

0.0分

2 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论