【HJ90】合法IP(输入输出格式)

举报
野猪佩奇996 发表于 2022/01/23 01:18:30 2022/01/23
【摘要】 1.题目 2.法一 首先想到的可能是将给定的IP地址根据三个点进行分割成4段,再进行判断合法性,但其实可以直接利用scanf的输入格式判断每个ip[i]即可。 #include<iost...

1.题目

在这里插入图片描述
在这里插入图片描述

2.法一

首先想到的可能是将给定的IP地址根据三个点进行分割成4段,再进行判断合法性,但其实可以直接利用scanf的输入格式判断每个ip[i]即可。

#include<iostream>
#include<string>
int ip[4];
using namespace std;
int main(){
    while(scanf("%d.%d.%d.%d",&ip[0],&ip[1],&ip[2],&ip[3])!=EOF){
        int i=0;
        for(i=0;i<4;i++){
            if(255<ip[i] || ip[i]<0){//ip地址是不合法的
                cout<<"NO"<<endl;
                break;
            }
        }
        if(i==4){
            cout<<"YES"<<endl;   
        }
    }
    return 0;
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

3.法二:

就是按照一开始说的对字符串进行分割,逐个判断:

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
    string s;
    while(cin >> s){
        int n=s.size();vector<int> v;bool isValid=true;
        int num_i=count(s.begin(),s.end(),'.');
        if(num_i!=3)
            cout << "NO" <<endl;
        for(int i=0;i<4;i++){
            int index=s.find('.');
            v.push_back(stoi(s.substr(0,index)));
            s=s.substr(index+1);
        }
        for(int i=0;i<v.size();i++){
            if(v[i]<0 || v[i]>255)
                isValid=false;
        }
        if(isValid)
            cout << "YES" <<endl;
        else
            cout << "NO" <<endl;
    }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

文章来源: andyguo.blog.csdn.net,作者:山顶夕景,版权归原作者所有,如需转载,请联系作者。

原文链接:andyguo.blog.csdn.net/article/details/113875949

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。