国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

華為2017校招機試題第一題同網CS

2019-11-10 23:06:41
字體:
來源:轉載
供稿:網友
描述:小明同學最近新購置了電腦,想和其他同學玩CS,但是建了局域網游戲之后,別人加不進來,自己也進不了別人的主機,非常苦惱。于是來請教同宿舍的“科技怪人”小犀,小犀說了句“你的ip和我們不在同一個子網”就閃了,小明百度了一下,搜到如下關于“子網掩碼”的信息:子網掩碼是用來判斷任意兩臺計算機的IP地址是否屬于同一子網絡的根據。最為簡單的理解就是兩臺計算機各自的IP地址與子網掩碼進行AND運算后,如果得出的結果是相同的,則說明這兩臺計算機是處于同一個子網里面,可以進行直接的通訊。運算演示之一:I P 地址  192.168.0.1子網掩碼  255.255.255.0轉化為二進制進行運算:I P 地址 11010000.10101000.00000000.00000001子網掩碼 11111111.11111111.11111111.00000000AND運算     11010000.10101000.00000000.00000000轉化為十進制后為:      192.168.0.0運算演示之二:I P 地址  192.168.0.254子網掩碼  255.255.255.0轉化為二進制進行運算:I P 地址 11010000.10101000.00000000.11111110子網掩碼 11111111.11111111.11111111.00000000AND運算     11010000.10101000.00000000.00000000轉化為十進制后為:      192.168.0.0運算演示之三:I P 地址  192.168.0.4子網掩碼  255.255.255.0轉化為二進制進行運算:I P 地址 11010000.10101000.00000000.00000100子網掩碼 11111111.11111111.11111111.00000000AND運算     11010000.10101000.00000000.00000000轉化為十進制后為:      192.168.0.0通過以上對三組計算機IP地址與子網掩碼的AND運算后,我們可以看到它運算結果是一樣的。均為192.168.0.0所以計算機就會把這三臺計算機視為是同一子網。小明靈機一動,打算做一個幫助大家解決局域網游戲問題的工具,設想如下:我知道我的電腦的IP和子網掩碼,又知道另外幾個同學的ip地址,通過這個工具就可以知道我可以和誰一起CS。IP尋址規則:A.網絡標識不能數值127開頭(在A類地址中127.0.0.1是loopback IP)B.網絡標識第一個字節不能是255和0C.IP每個字段不能大于255子網掩碼:A. 不能全部是255;B. 不能全部是0;C. 掩碼的高位(bit)必須是連續的1; 例如 : 255.255.252.0 --> 11111111.11111111.11111100.00000000 按照Bit來看1和0的位必須是連續的,而掩碼高位都是1,所以有時候會見到 錯誤 : 255.255.253.0 --> 11111111.11111111.11111101.00000000 這里就出現bit為1但沒有連續的情況,這種掩碼是不正確的 運行時間限制:無限制內存限制:無限制輸入:第一行是我的電腦的IP地址第二行是我的電腦的子網掩碼第三行整數N,表示后面N個同學的IP地址第1個同學的IP地址......第N個同學的IP地址輸出:計算并輸出N個IP地址是否與我的電腦在同一子網內。對于在同一子網的輸出:let's rock對于在不同子網的輸出:not you對于無效的聯網IP輸出:Invalid IP address.對于無效的子網掩碼:Invalid netmask address.樣例輸入:192.168.0.1255.255.255.03192.168.0.2192.168.0.200192.168.2.2樣例輸出:let's rocklet's rocknot you答案提示: 參考測試用例:測試用例1:輸入:10.123.12.7255.0.0.0310.121.234.1192.168.19.910.124.123.2輸出:let's rocknot youlet's rock測試用例2:輸入:192.168.29.1255.255.255.02127.0.0.1192.168.29.100輸出:Invalid IP address.let's rock測試用例3:輸入:10.144.240.73255.252.253.0輸出:Invalid netmask address.測試用例4:輸入:10.144.240.730.0.0.0輸出:Invalid netmask address.測試用例5:輸入:10.146.240.256輸出:Invalid IP address.測試用例6:輸入:255.148.240.1輸出:Invalid IP address.測試用例7:輸入:0.147.240.15輸出:

Invalid IP address.

程序:import java.util.Scanner;import java.util.regex.Pattern;public class First { //IP測試 public static String IPTest(String str){  String[] s=str.split("//.");//注意split中以.分割是加//  String s0=s[0];  if(s0.equals("127")||s0.equals("0")||s0.equals("255"))   return "Invalid IP Address";  for(int i=0;i<s.length;i++){   if(Integer.parseInt(s[i])>255)    return "Invalid IP Address";  }  return null; } //子網掩碼測試 public static String YanMaTest(String str){  if(str.equals("255.255.255.255")||str.equals("0.0.0.0"))   return "Invalid netmask address.";  String[] s=str.split("//.");  String regex="0?1+0+1+0?";  Pattern pattern=Pattern.compile(regex);  for(int i=0;i<3;i++){   s[i]=Integer.toBinaryString(Integer.parseInt(s[i]));   boolean flag=pattern.matcher(s[i]).find();   if(flag)    return "Invalid netmask address.";  }  return null; } //邏輯與 public static String AND(String str1,String str2){  String[] s1=str1.split("//.");  String[] s2=str2.split("//.");  String str="";  for(int i=0;i<s1.length;i++){   s1[i]=Integer.toBinaryString(Integer.parseInt(s1[i]));   s2[i]=Integer.toBinaryString(Integer.parseInt(s2[i]));   int count1=8-s1[i].length();   for(int j=0;j<count1;j++){    s1[i]="0"+s1[i];   }   int count2=8-s2[i].length();   for(int j=0;j<count2;j++){    s2[i]="0"+s2[i];   }   char[] ch1=s1[i].toCharArray();   char[] ch2=s2[i].toCharArray();   char[] ch=new char[8];   int count=0;   for(int j=0;j<8;j++){    if(ch1[j]=='1'&&ch2[j]=='1')     ch[j]='1';    else     ch[j]='0';   }   for(int j=0;j<8;j++){    count+=ch[j]*Math.pow(2, 7-j);   }   if(i==3)    str=str+String.valueOf(count);   else    str=str+String.valueOf(count)+".";  }  return str; }//主函數: public static void main(String[] args){  System.out.PRintln("輸入:");  Scanner sc=new Scanner(System.in);  String myIP="";  String netmask="";  String otherIP="";  String result="";  int count=0;  int num=0;  while(sc.hasNext()){   count+=1;   if(count==1){    myIP=sc.next();        String str=IPTest(myIP);    if(str!=null){     System.out.println(str);     return ;    }   }   if(count==2){    netmask=sc.next();    String str=YanMaTest(netmask);    if(str!=null){     System.out.println(str);     return;    }   }   if(count==3)    num=sc.nextInt();   if(count>3){    otherIP=sc.next();    String str=IPTest(otherIP);    if(str!=null){     result+="Invalid IP address"+System.getProperty("line.separator");    }    else{     String myAnd=AND(myIP,netmask);     String otherAnd=AND(otherIP,netmask);     if(myAnd.equals(otherAnd))      result+="let's rock"+System.getProperty("line.separator");     else      result+="not you"+System.getProperty("line.separator");    }   }   if(count==3+num){    System.out.println("輸出:");    break;   }  }  System.out.println(result); } }
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 漯河市| 三亚市| 涡阳县| 利津县| 平谷区| 固安县| 建阳市| 文成县| 闵行区| 宣威市| 茂名市| 彭水| 宜良县| 汤阴县| 平山县| 梓潼县| 喜德县| 娄烦县| 霍林郭勒市| 鹤壁市| 咸宁市| 南部县| 建水县| 沿河| 仲巴县| 岑巩县| 吉木萨尔县| 普陀区| 平塘县| 洪湖市| 长海县| 博客| 武穴市| 乌苏市| 锦屏县| 常熟市| 新余市| 禹城市| 安庆市| 迁安市| 友谊县|