首页 > 试题广场 >

IP地址

[编程题]IP地址
  • 热度指数:17781 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
输入一个ip地址串,判断是否合法。

输入描述:
每行有一个IP地址,IP地址的形式为a.b.c.d,其中a、b、c、d都是整数。


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

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

输入

255.255.255.255
512.12.2.3

输出

Yes!
No!
秒杀
#include <stdio.h>

int main() {
    int a, b, c, d;
    while( scanf("%d.%d.%d.%d", &a, &b, &c, &d)!=EOF){
    if (a >= 0 && a <= 255 && b >= 0 && b <= 255 && c >= 0 && c <= 255 && d >= 0 &&
            d <= 255)
        printf("Yes!\n");
    else
        printf("No!\n");
    }

    return 0;

}
发表于 2023-03-19 20:29:44 回复(0)
//借鉴的“无敌的白金之星”同学的思路
#include <stdio.h>

int main() {
    int ip[4], yesi;
    //学会灵活运用输入的数据格式来简化数据处理
    while (scanf("%d.%d.%d.%d", &ip[0], &ip[1], &ip[2], &ip[3]) != EOF) {
        yes = 1;
        for (i = 0i < 4i++) {
            if (ip[i] < 0 || ip[i] > 255)
                yes = 0;
        }
        if (yes)
            printf("Yes!\n");
        else
            printf("No!\n");
    }
    return 0;
}
发表于 2023-01-17 21:58:15 回复(0)
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<malloc.h>
#include<limits.h>


int main()
{
    
    char str[10001];
    while(scanf("%s",str)!=EOF)
    {
        int a[8];
        for(int i=0;i<8;i++)
        {
            a[i]=0;
        }
        int flag=0;
        int k=0;
        int len = strlen(str);
        int start=0,end;
        for(int i=0;i<len;i++)
        {
            if(i+1==len)
            {
                end=i+1;
                for(int j=end-1;j>=start;j--)
                {
                    a[k]=a[k]+(str[j]-'0')*pow(10,end-j-1);
                }
                if(a[k]<0 || a[k]>255)
                {
                    flag=1;
                    break;
                }
                k++;
                start=i+1;
            }
            if(str[i]=='.')
            {
                end=i;
                for(int j=end-1;j>=start;j--)
                {
                    a[k]=a[k]+(str[j]-'0')*pow(10,end-j-1);
                }
                if(a[k]<0 || a[k]>255)
                {
                    flag=1;
                    break;
                }
                k++;
                start=i+1;
            }
        }
        for(int i=0;i<k;i++)
        {
            //printf("%d ",a[i]);
        }
        if(flag==0 && k==4)
            printf("Yes!\n");
        else
            printf("No!\n");
    }
}


发表于 2022-03-24 11:35:38 回复(0)