解题思路:

    以'.'为循环判断条件,循环三次,将前三个准换成相应的数字,判断是否合法,如果是字母则退出循环;再根据标志Y判断是否进入循环判断最后一个数合法.



注意事项:



参考代码:

#include<stdio.h>

int main()

{

    int i,j,temp,num,Y,count;

    char s[31];

    while(scanf("%s",s)!=EOF)

    {

        Y=0;

        for(j=1;j<=3;j++)

        {

            num=0;

            for(i=0;s[i]!='.';i++)

            {

                if((s[i]>='a' && s[i]<='z')|| (s[i]>='A' && s[i]<='Z')) { Y=0;break; }

                else

                {

                    temp=s[i]-48;

                    num=num*10+temp;

                }

            }

            if((s[i]>='a' && s[i]<='z')|| (s[i]>='A' && s[i]<='Z')) { Y=0;break; }

            if(num>=0 && num<=255) Y=1;

            else

            {

                Y=0;break;

            }

        }

        if(Y==1)

        {

            count=0;

            for(i=0;s[i]!='\0';i++)

            {

                if(count==3)

                {

                    num=0;

                    for(j=i;s[j]!='\0';j++)

                    {

                        if((s[i]>='a' && s[i]<='z')|| (s[i]>='A' && s[i]<='Z')) 

                        { Y=0;break; }

                        else

                        {

                            temp=s[i]-48;

                            num=num*10+temp;

                        }

                    }

                    if((s[i]>='a' && s[i]<='z')|| (s[i]>='A' && s[i]<='Z')) { Y=0;break; }

                    if(num>=0 && num<=255) Y=1;

                    else 

                    {

                     Y=0;break;

                     }

                }

                if(s[i]=='.') count++;

            }

        }

        if(Y==1) printf("Y\n");

        else printf("N\n");

    }

return 0;

}


点赞(0)
 

0.0分

0 人评分

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

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

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

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

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

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

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

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

评论列表 共有 0 条评论

暂无评论