解题思路:
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;
}

看看大家还有什么不懂得,请在下方评论区留言

点赞(22)
 

0.0分

3 人评分

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

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

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

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

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

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

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

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

评论列表 共有 4 条评论

暂无评论