解题思路:

这个题目我采用逆向思维,直接把字符串中的数字求出来,然后用.连接。看它和原来的串相不相等。

相等后,判断数字个数必须为4个,且数字不能越域。

注意事项:


参考代码:

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <cmath>
#include <string>
using namespace std;

char str[110],len;
int a[110],cnt;

bool judge() {
    string s="",ip="";
    int num = 0,cnt = 0;
    for(int i = 0; i < len; i++) {
        ip += str[i];
        if(str[i]>='0' && str[i]<='9') {
            num = num*10 + str[i]-'0';
        }
        else {
           a[cnt++] = num;
           num = 0;
        }
    }
    a[cnt] = num;
    cnt = min(cnt,3);
    for(int i = 0; i <= cnt; i++) {
        if(a[i] == 0) {
            s += '0';
        }
        else {
            string temp = "";
            while(a[i]) {
                char ch = a[i]%10 + '0';
                temp += ch;
                a[i] = a[i]/10;
            }
            for(int i = temp.length()-1; i >= 0; i--) {
                s += temp[i];
            }
        }
        s += '.';
    }
    ip += '\0';
    int sLen = s.length();
    s[sLen-1] = '\0';
    //cout<<s<<endl;
    if(s == ip) {
        num = 0;
        for(int i = 0; i < (int)s.length(); i++) {
            if(s[i]>='0' && s[i]<='9') {
                num = num*10 + s[i]-'0';
            }
            else {
                if(num>=0 && num<=255) {
                    num = 0;
                }
                else {
                    return false;
                }
            }
        }
        if(num >= 0 && num <= 255) {}
        else return false;
    }
    else {
        return false;
    }
    if(cnt < 3) return false;
    return true;
}
int main() {
    while(gets(str)) {
        len = strlen(str);
        bool flag = judge();
        if(flag) {
            printf("Y\n");
        }
        else {
            printf("N\n");
        }
    }
    return 0;
}


点赞(1)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论