HDU-2206

来源:互联网 发布:wpf编程宝典 pdf 编辑:程序博客网 时间:2024/06/05 03:05


 本题主考的是出数据的能力,要考虑各种特殊的情况,所以平时还是有必要加大对 出数据能力的训练


错误的特殊数据

145.124.4

192.168.18 

12.145.154.63.45
123.123.123
123..123.45
.124.45.6
45.134.4.
.124.124.3.

192.168.0123.41

#include <iostream>#include <cstdio>using namespace std;bool qu1(int num) //判断数字是否是8位无符号整数{    if(num>=0&&num<=255) return true;    else return false;}bool qu2(char s[]){    int ans=0,a=0;    for(int i=0; s[i]!='\0'; i++)    {        if(s[i]=='.') ans++,a=0;        if(a>=4) return false;          //两点之间的数字不超过4个        if(s[i]!='.'&&(s[i]<'0'||s[i]>'9')) return false; // 没有除数字和.之外的字符        if(s[i]=='.'&&(i==0||s[i+1]=='.'||s[i+1]=='\0')) return false; // .不能连续出现,且不能在第一位和最后一位        a++;    }    if(ans==3) return true;  //点的个数为3    else return false;}int main(){    char s[100];    while(gets(s)!=NULL)    {        if(qu2(s))        {            bool flag=true;            int a=0;            for(int i=0; s[i]!='\0'; i++)            {                if(s[i]!='.') a=a*10+s[i]-'0';                else                {                    if(qu1(a)) a=0;                    else                    {                        flag=false;                        break;                    }                }            }            if(!qu1(a)) flag=false;            if(flag) printf("YES\n");            else printf("NO\n");        }        else printf("NO\n");    }    return 0;}