HDU2206:IP的計算

來源:互聯網
上載者:User
Problem Description在網路課程上,我學到了很多有關IP的知識。IP全稱叫網際協議,有時我們又用IP來指代我們的IP網路地址,現在IPV4下用一個32位不帶正負號的整數來表示,一般用點分方式來顯示,點將IP地址分成4個部分,每個部分為8位,表示成一個不帶正負號的整數(因此不需要用正號出現),如192.168.100.16,是我們非常熟悉的IP地址,一個IP地址串中沒有空格出現(因為要表示成一個32數字)。
但是粗心的我,常常將IP地址寫錯,現在需要你用程式來判斷。 

Input輸入有多個case,每個case有一行,不超過100個字元。 

Output對於每個case,判斷輸入的IP是否正確,如果正確輸入YES,否則NO。 

Sample Input

192.168.100.16
 

Sample Output

YES
 

 

/*這道題之前就看到過了,只是一直不知道怎麼去判斷什麼才是IP地址,直到今天參考了別人的代碼才知道,IP地址應該滿足如下條件:1.  '.'有且只能有3個2.  4個放數位位置,長度應該在1~3之間(含邊界)3.  每個數字應該:1~255(含邊界)4.  不能有特殊字元*/#include"stdio.h"#include"string.h"int main(){int flag;char str[111];int temp;int i,l;int place[10],k;while(gets(str)!=0){//'.'有且只能有3個place[0]=-1;k=1;temp=0;for(i=0;str[i];i++)if(str[i]=='.'){temp++;place[k]=i;k++;}if(temp!=3){printf("NO\n");continue;}place[k]=i;k++;//不能有特殊字元flag=0;for(i=0;str[i];i++){if(!((str[i]=='.')||('0'<=str[i]&&str[i]<='9'))){printf("NO\n");flag=1;break;}}if(flag==1)continue;//4個放數位位置,長度應該在1~3之間(含邊界)flag=0;for(i=1;i<k;i++){if(place[i]-place[i-1]==1||place[i]-place[i-1]>4){printf("NO\n");flag=1;break;}}if(flag==1)continue;//每個數字應該:1~255(含邊界)flag=0;for(i=1;i<k;i++){temp=0;for(l=place[i-1]+1;l<place[i];l++){temp*=10;temp+=str[l]-'0';}if(temp>=256){printf("NO\n");flag=1;break;}}if(flag==1)continue;printf("YES\n");}return 0;}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.