程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> HDU2206:IP的計算

HDU2206:IP的計算

編輯:C++入門知識

Problem Description 在網絡課程上,我學到了很多有關IP的知識。IP全稱叫網際協議,有時我們又用IP來指代我們的IP網絡地址,現在IPV4下用一個32位無符號整數來表示,一般用點分方式來顯示,點將IP地址分成4個部分,每個部分為8位,表示成一個無符號整數(因此不需要用正號出現),如192.168.100.16,是我們非常熟悉的IP地址,一個IP地址串中沒有空格出現(因為要表示成一個32數字)。www.2cto.com 但是粗心的我,常常將IP地址寫錯,現在需要你用程序來判斷。     Input 輸入有多個case,每個case有一行,不超過100個字符。     Output 對於每個case,判斷輸入的IP是否正確,如果正確輸入YES,否則NO。     Sample Input 192.168.100.16     Sample Output YES         [cpp]   /*  這道題之前就看到過了,只是一直不知道怎麼去判斷什麼才是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;   }      

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved