ip地址

来源:互联网 发布:查看centos系统版本 编辑:程序博客网 时间:2024/06/01 08:48

时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:4041

解决:1997

题目描述:

    输入一个ip地址串,判断是否合法。

输入:

    输入的第一行包括一个整数n(1<=n<=500),代表下面会出现的IP地址的个数。
    接下来的n行每行有一个IP地址,IP地址的形式为a.b.c.d,其中a、b、c、d都是整数。

输出:

    可能有多组测试数据,对于每组数据,如果IP地址合法则输出"Yes!”,否则输出"No!”。

样例输入:
2255.255.255.255512.12.2.3
样例输出:
Yes!No!
提示:

合法的IP地址为:
a、b、c、d都是0-255的整数。

来源:
2006年华中科技大学计算机保研机试真题

#include<stdio.h>#include<string.h>#include<string>using namespace std;int islegal(char * s) //不合法的话返回1{    int len=strlen(s);    int sum[4]= {0};    int j=3;    int i;    int n=1;    for(i=len-1; i>=0; i--)    {        if(s[i]=='.')        {            j--;            n=1;            continue;        }        else        {            sum[j]=sum[j]+(s[i]-'0')*n;//千万记得这是字符            n=n*10;        }    }    for(i=0; i<4; i++)    {        if(sum[i]>255||sum[i]<0) return 1;    }    return 0 ;}int main(){    char s[50];    int n,i,j;    while(scanf("%d",&n)!=EOF)    {        for(i=0; i<n; i++)        {            scanf("%s",s);            j=islegal(s);            if(j==0) printf("Yes!\n");            else printf("No!\n");        }    }    return 0;}
//别人的  方法  抓住技巧
#include<stdio.h>#include<stdlib.h>#include<string.h>int main(){    int i,n;    int a,b,c,d;    //freopen("C:\\Users\\SJF\\Desktop\\acm.txt","r",stdin);    while(scanf("%d",&n) != EOF)    {        for(i = 0;i < n;i++){            scanf("%d.%d.%d.%d",&a,&b,&c,&d);            if((a < 0 || a > 255) || (b < 0 || b > 255) || (c < 0 || c > 255) || (d < 0 || d > 255)){                printf("No!\n");            }            else{                printf("Yes!\n");            }        }    }    return 0;}

}


原创粉丝点击