解题思路:
1.本题就是将整个ip地址当字符串看,这样用.去当结束判断一个数的标志。
2.比较数是否在范围内,其实比较相应的ascii就可以了。
参考代码:
#include<stdio.h> #include<stdlib.h> #include<string.h> int check(char x[]) { int i,j=0,k=0; char num[10][10]; for(i=0;x[i]!='\0';i++) { if(!(x[i]<='9'&&x[i]>='0'||x[i]=='.')) return 0; if(x[i]!='.') //还没到下个数 num[j][k++]=x[i]; else //说明马上就要到下个数了 { if(num[j][0]=='0'&&k!=1) //如果第一个数是0,直接结束,判断不符合要求 return 0; //如果就是0.其实也是满足的,就是k=1,且值为0的情况 k=0; //初始化 j++; //换到下一个数 } } for(j=0;j<4;j++) { if(!(atoi(num[j])>=0&&atoi(num[j])<=255)) //满足0到255 return 0; } return 1; } int main(){ char x[30]; while(scanf("%s",x)!=EOF) //接收 { printf("%c\n",check(x)?'Y':'N'); //调用函数判断 } return 0; }
看看大家还有什么不懂得,请在下方评论区留言
0.0分
3 人评分