修小染


私信TA

用户名:1459834870

访问量:1276

签 名:

咸鱼垂死挣扎

等  级
排  名 30576
经  验 456
参赛次数 0
文章发表 3
年  龄 0
在职情况 学生
学  校 还是不说了
专  业

  自我简介:

TA的其他文章

蓝桥-分苹果
浏览:441

思路:A.B.C.D将IP通过IP点的位置将ip分为四个部分,分别对每一部分进行检测

           检测时注意如果检测的这一部分中有字母后者‘’-‘’号,直接判断出错,后面的不用检测

           如果检测的这一部分的每一个字符都是‘’0‘’-‘’9‘’,那么再通过计算这一部分的和

           例如‘’123‘’字符串是‘’1‘’-‘’0‘’转数字再乘10的此方来模拟个,十,百位。最后判断结果是否在【0,255】之间。

           对每一部分进行判断即可



#include<iostream>
#include<string.h>
using namespace std;
 
//将点的位置设为1

//得到点的位置
int GetPoint(char *str,int flag[],int length)
{
 
 for(int i=0;i<length;i++)
{

 if(str[i]=='.'&&!flag[i])
 {
     flag[i]=1;
  return i;
 }
  
}
 
}
 
 
int main()
{
 char str[30];

 
 while(cin.getline(str,30))

    int flag[30]={0}; 
 int point[4];     //存储点的位置
 
    for(int k=0;k<3;k++)
 {
  point[k]=GetPoint(str,flag,strlen(str));
 }
 point[3]=strlen(str);//虚拟最后一个点是在字符串尾 

 int k,j;
 for( k=0,j=0;k<4;k++)
 {
  bool numflag=true;
     double sum[30]={0};
     int i;
  for( i=j;i<point[k];i++)
  { 
     
       if(str[i]>='0'&&str[i]<='9')
       {
        sum[i]=str[i]-'0';
             //字符转数字存sum
     continue;
    }
       else
       {
         numflag=false; 
      break;//如果字符是0-9则继续循环,否则直接跳出循环判断出错
    }
  
          
  }
  if(!numflag)  break;//直接跳出大循环判断出错
  else
  {
      int add=0;
      for(int n=i-1,t=1;n>=j;n--)
    {
     
     add+=sum[n]*t;
     t=t*10;
   
    }
      //cout<<add<<endl;
      if(add>255)
   break;
      else
   j=point[k]+1;//将j设为上一个标记的起点,继续大循环
  }
 }
 if(k==4)   cout<<"Y"<<endl;
 else   cout<<"N"<<endl;
}
 return 0;
 
}


 

0.0分

0 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区

大佬看看我这个http://www.dotcpp.com/blog/56370.html,感觉更简单
2018-12-09 23:14:46
  • «
  • 1
  • »