|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
题目描述
在基于Internet的程序中,我们常常需要判断一个IP字符串的合法性。
合法的IP是这样的形式:
A.B.C.D
其中A、B、C、D均为位于[0, 255]中的整数。为了简单起见,我们规定这四个整数中不允许有前导零存在,如001这种情况。
现在,请你来完成这个判断程序吧^_^
输入
输入由多行组成,每行是一个字符串,输入由“End of file”结束。
字符串长度最大为30,且不含空格和不可见字符
输出
对于每一个输入,单独输出一行
如果该字符串是合法的IP,输出Y,否则,输出N
我的代码:
- #include<iostream>
- using namespace std;
- #include<cstdio>
- #include<cstring>
- #include<cstdlib>
- int main()
- {
- char a[32],b[31] = "End of file",c[30];
- unsigned int num = 0,i = 0,k = 0,j,n;
- //bool t = false;
- while(strcmp(gets(a),b)!= 0)
- {
- i = 0;k = 0;
- n = strlen(a);
- if(n > 15)
- {printf("N\n");continue ;}
- while(i < n)
- {
- if(a[i] < '0' || a[i] > '9')
- {
- cout << "N" << endl;
- //t = true;
- break;
- }
- c[k++] = a[i++];
- if(a[i] == '.')
- {
- num = atoi(c);
- if(num < 0 || num > 255)
- {
- cout << "N" << endl;
- //t = true;
- break;
- }
- for(j = 0;j < k;j++)
- {
- c[j] = '\0';
- }
- i++;
- k = 0;
- }
-
- }
- if(a[i] == '\0')
- cout << "Y" << endl;
- }
-
-
- return 0;
- }
复制代码 |
|