C语言网蓝桥杯1116 IP判断

判断IP地址的合法性,

1.不能出现除数字和点字符以外的的其他字符

2.数字必须在0-255之间,要注意边界。

题目分析:

因为一个IP是又四个数字组成,且可能存在符号和其他字符,故不能用整型数组处理,应该用字符串的形式存储,

将字符串分为四个部分,逐一处理。

代码如下:

#include<stdio.h>
#include<string.h>
int main()
{
 char a[35];
 while(scanf("%s",a)!=EOF)//多组输入字符串,直至文件的末尾
 {
  char b[30];
  int i=0,j,n=4,flag=0;
  while(n--)//将字符串分为四组进行处理
  {
   int sum=0,number=1,j=0,l,str;
   str=strlen(a);//调用函数算出字符串的长度
   for(;i<=str-1;i++)
   {
    if(a[i]=='.')//用小数点作为每部分的分隔符
    break;
    if(a[i]>='0'&&a[i]<='9')//判断是否都为数字
    {
      b[j]=a[i];
      j++;
    }
    else
    {
     flag=1;
     break;
    }
   }
   i++;//注意i加一,跳过小数点的处理
   if(flag==1)//用标志位进行逐次跳出循环
   {
       break;
      }
   for(l=j-1;l>=0;l--)
    {
     sum= sum + (b[l]-'0') * number;//将字符形式的数字转化为整型数字。
     number = number * 10;
    }
    if(sum <=255 && sum>=0)//判断数字的大小是否符合
     flag=0;
    else
     flag=1;
            if(flag==1)
            {
   break;
      }
  }
  if(flag==0)
  printf("Y\n");
  if(flag==1)
  printf("N\n");
 }
 return 0;
}

posted @ 2019-03-16 20:08  月为暮  阅读(542)  评论(0编辑  收藏  举报