题目描述
在网络课程上,我学到了很多有关IP的知识。IP全称叫网际协议,有时我们又用IP来指代我们的IP网络地址,现在IPV4下用一个32位无符号整数来表示,一般用点分方式来显示,点将IP地址分成4个部分,每个部分为8位,表示成一个无符号整数(因此不需要用正号出现),如192.168.100.16,是我们非常熟悉的IP地址,一个IP地址串中没有空格出现(因为要表示成一个32数字)。 但是粗心的我,常常将IP地址写错,现在需要你用程序来判断。
输入
输入有多个case,每个case有一行,不超过100个字符。
输出
对于每个case,判断输入的IP是否正确,如果正确输入YES,否则NO。
样例
输入 192.168.100.16
输出 YES
题解
以下是一个简单的C语言程序,用于判断输入的IP地址是否正确:
#include <stdio.h> #include <string.h> int isValidIP(char* ip) { int len = strlen(ip); int dotCount = 0; int num = 0; for (int i = 0; i < len; i++) { if (ip[i] == '.') { dotCount++; if (num > 255) { return 0; } num = 0; } else if (ip[i] >= '0' && ip[i] <= '9') { num = num * 10 + (ip[i] - '0'); } else { return 0; } } if (dotCount != 3 || num > 255) { return 0; } return 1; } int main() { char ip[101]; while (scanf("%s", ip) != EOF) { if (isValidIP(ip)) { printf("YES\n"); } else { printf("NO\n"); } } return 0; }
该程序使用了一个名为 isValidIP
的函数,该函数接受一个字符串参数 ip
,并返回一个整数值,表示该IP地址是否合法。在主函数中,程序从标准输入读取每个输入的IP地址,并打印出相应的判断结果。
函数 isValidIP
中,程序使用循环遍历IP地址中的每个字符,统计其中的点的数量和每个数字的大小,以便进行检查。如果IP地址格式不正确,则函数返回0;否则返回1,表示IP地址格式正确。