/*第三题是 输入一个ip地址串,判断是否合法*/
/*算法思想,IP地址是点分十进制表示,当输入的有负数或者超过255的或者有前置0 如 001的,就非法*/
/*由于IP有两种版本 IPV4和 IPV6 ,这里仅讨论IPV4的情况,IPV6的情况实质是一样的*/
/*测试数据:100.200.12.30 输出结果: 此IP合法
测试数据:10 输出结果:此IP不合法
测试数据: -100.200.12.30 输出结果:此IP不合法
测试数据: 100.200.300.400 输出结果:此IP不合法
测试数据:255.255.255.255 输出结果:此IP合法*/
/*程序:*************************爱X的味道 *****************************/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int StringToInteger(char *str)
{
int sum=0,i=0;
while(str[i]!='\0')
{
sum=sum*10+(str[i]-'0');
i++;
}
return sum;
}
int JudgeIp(char * str)
{
int i=0,j=0,pre=0,num=0;
char tmp;
for(i=0;i<4;i++)
{
pre=j;
while( (str[j]!='.') && (str[j]!='\0'))
{
if(str[j]<'0' || str[j]>'9')
return 0;
j++;
}
tmp=str[j];
str[j]='\0';
if(strlen(str+pre)<=0)
return 0;
num=StringToInteger(str+pre);
if(num<0 || num> 255)
return 0;
str[j]=tmp;
j++;
}
return 1;
}
int main()
{
int ans;
char str[100]="\0";
printf("请输入待检查的IP地址:\n\n");
gets(str);
ans=JudgeIp(str);
if(!ans)
printf("此IP不合法!\n\n");
else
printf("此IP合法!\n\n");
return 0;
}
06年华中科大机试第三题(输入一个ip地址串,判断是否合法)
最新推荐文章于 2023-07-15 12:55:07 发布