/*第三題是 輸入一個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地址串,判斷是否合法)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.