06年华中科大机试第三题(输入一个ip地址串,判断是否合法)

来源:互联网 发布:淘宝怎么分期买手机吗 编辑:程序博客网 时间:2024/06/04 18:47
/*第三题是 输入一个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");elseprintf("此IP合法!\n\n");return 0;}

 
原创粉丝点击