目录
- 一、选择题
- 二、编程题
- 2.1 Emacs计算器
- 2.1.1 题目
- 2.1.1 题解
一、选择题
(1)某主机的IP地址为180.80.77.55,子网掩码为255.255.252.0.若该主机向其所在子网发送广播分组,则目的地址可以是(D)
A.180.80.76.0
B.180.80.76.255
C.180.80.77.255
D.180.80.79.255
广播地址的主机号全为1,根据子网掩码得到前22位为网络号,后10位为主机号,因此将180.80.77.55的后10位全部改为1则得到广播地址
(2)下列关于路由器功能的描述中,正确的是(C)
- 运行路由协议,设置路由表
- 监测到拥塞时,合理丢弃IP分组
- 对收到的IP分组头进行差错控制,确保传输的IP分组不丢失
- 根据收到的IP分组的目的IP地址,将其转发到合适的输出路线上
A.3.4
B.1.2.3
C.1.2.4
D.1.2.3.4
差错检测已经由数据链路层实现,IP层没必要再进行一次校验
(3)主机甲和主机乙之间建立一个TCP连接,TCP最大报文段的长度是1000字节,当主机甲的当前拥塞窗口为4000字节,在主机甲和主机乙连续发送两个最大的报文段后,成功接收到主机乙发送的第一个段的确认段,确认段中通告的接收窗口的大小为2000字节,则此时主机甲还可以向主机乙发送的最大字节数是(A)
A.1000
B.2000
C.3000
D.4000
发送窗口=min{拥塞窗口,接收窗口},也就是min{4000,2000},为2000B,由于还未收到第二个最大段的确认,也就是主机乙还要为第二个报文段预留1000B的空间,所以此时主机甲还可以主机乙发送的最大字节数为2000-1000=1000
(5)某网络的IP地址空间为192.168.5.0,采用定长子网划分,子网掩码为255.255.255.248,则该网络的最大子网数、每个子网内的最大可分配地址个数为(B)
A.32,8
B.32,6
C.8,32
D.8,30
IP地址由网络号+子网号+主机号
由192.168.5.0可知为C类地址,由255.255.255.248可知将C类地址的主机号的前5位作为了子网号,所以子网的个数为32,每个子网内最大可分配地址个数为8-2=6
二、编程题
2.1 Emacs计算器
2.1.1 题目
2.1.1 题解
思路:借助栈辅助计算
- 遍历所给的字符串,遇到数字字符串,将该数字转成整数后入栈
- 遇到操作符时,从栈顶取两个数字,进行该操作符所对应的运算,将运算后的结果入栈
- 最后栈顶元素即为表达式结果
代码:
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner scanner=new Scanner(System.in);
while(scanner.hasNextInt()){
int n=scanner.nextInt();
Stack<Integer> stack=new Stack<>();
for(int i=0;i<n;i++){
String str=scanner.next();
if(!(str.equals("+") ||str.equals("-") ||str.equals("*") ||str.equals("/") )){
stack.push(Integer.parseInt(str));
}else {
int right=stack.pop();
int left=stack.pop();
switch(str.charAt(0)){
case '+':
stack.push(left+right);
break;
case '-':
stack.push(left-right);
break;
case '*':
stack.push(left*right);
break;
case '/':
stack.push(left/right);
break;
}
}
}
System.out.println(stack.peek());
}
}
}