题目描述

我们都学习过计算机网络,知道网络层IP协议数据包的头部格式如下:


其中IHL表示IP头的长度,单位是4字节;总长表示整个数据包的长度,单位是1字节。
传输层的TCP协议数据段的头部格式如下:
 
头部长度单位为4字节。
你的任务是,简要分析输入数据中的若干个TCP数据段的头部。 详细要求请见输入输出部分的说明。

输入

第一行为一个整数T,代表测试数据的组数。
以下有T行,每行都是一个TCP数据包的头部分,字节用16进制表示,以空格隔开。数据保证字节之间仅有一个空格,且行首行尾没有多余的空白字符。
保证输入数据都是合法的。

输出

对于每个TCP数据包,输出如下信息:
Case #x,x是当前测试数据的序号,从1开始。
Total length = L bytes,L是整个IP数据包的长度,单位是1字节。
Source = xxx.xxx.xxx.xxx,用点分十进制输出源IP地址。输入数据中不存在IPV6数据分组。
Destination = xxx.xxx.xxx.xxx,用点分十进制输出源IP地址。输入数据中不存在IPV6数据分组。
Source Port = sp,sp是源端口号。
Destination Port = dp,dp是目标端口号。
对于每个TCP数据包,最后输出一个多余的空白行。
具体格式参见样例。
请注意,输出的信息中,所有的空格、大小写、点符号、换行均要与样例格式保持一致,并且不要在任何数字前输出多余的前导0,也不要输出任何不必要的空白字符。

样例输入

2
45 00 00 34 7a 67 40 00 40 06 63 5a 0a cd 0a f4 7d 38 ca 09 cd f6 00 50 b4 d7 ae 1c 9b cf f2 40 80 10 ff 3d fd d0 00 00 01 01 08 0a 32 53 7d fb 5e 49 4e c8
45 00 00 c6 56 5a 40 00 34 06 e0 45 cb d0 2e 01 0a cd 0a f4 00 50 ce 61 e1 e9 b9 ee 47 c7 37 34 80 18 00 b5 81 8f 00 00 01 01 08 0a 88 24 fa c6 32 63 cd 8d

样例输出

Case #1
Total length = 52 bytes
Source = 10.205.10.244
Destination = 125.56.202.9
Source Port = 52726
Destination Port = 80 Case #2
Total length = 198 bytes
Source = 203.208.46.1
Destination = 10.205.10.244
Source Port = 80
Destination Port = 52833

来源

2012机考D题

#include <bits/stdc++.h>
using namespace std;
char able[];
int bit(char temp)
{
int num=;
if(temp>=''&&temp<='')
num=temp-'';
else if(temp>='a'&&temp<='f')
num=temp-'a'+;
return num;
}
int change(int num)
{
int result=;
if(num==)
result=bit(able[]);
else if(num==)
result=bit(able[]);
int g=;
while(--num)
{
result+=bit(able[num])*g;
g*=;
}
return result;
}
int main()
{
int T=,rank=;
scanf("%d",&T);
getchar();
while(T--)
{
int i=,head_lenth=;
char donser[];
memset(donser,,sizeof(donser));
gets(donser);
head_lenth=bit(donser[])**;
able[]=donser[];able[]=donser[];able[]=donser[];able[]=donser[];
cout<<"Case #"<<rank<<endl<<"Total length = "<<change()<<" bytes"<<endl;
able[]=donser[];able[]=donser[];cout<<"Source = "<<change()<<".";
able[]=donser[];able[]=donser[];cout<<change()<<".";
able[]=donser[];able[]=donser[];cout<<change()<<".";
able[]=donser[];able[]=donser[];cout<<change()<<endl;
able[]=donser[];able[]=donser[];cout<<"Destination = "<<change()<<".";
able[]=donser[];able[]=donser[];cout<<change()<<".";
able[]=donser[];able[]=donser[];cout<<change()<<".";
able[]=donser[];able[]=donser[];cout<<change()<<endl;
able[]=donser[head_lenth];able[]=donser[head_lenth+];
able[]=donser[head_lenth+];able[]=donser[head_lenth+];
cout<<"Source Port = "<<change()<<endl;
able[]=donser[head_lenth+];able[]=donser[head_lenth+];
able[]=donser[head_lenth+];able[]=donser[head_lenth+];
cout<<"Destination Port = "<<change()<<endl<<endl;
rank++;
}
return ;
}

BUPT 2012复试机考 4T的更多相关文章

  1. BUPT 2012复试机考 3T

    97. 二叉排序树 时间限制 1000 ms 内存限制 65536 KB 题目描述 二叉排序树,也称为二叉查找树.可以是一颗空树,也可以是一颗具有如下特性的非空二叉树: 若左子树非空,则左子树上所有节 ...

  2. BUPT 2012复试机考 2T

    题目描述 ​给你一个n*n的矩阵, , 求其矩阵的k次幂,即Pk 输入格式 第一行,一个整数T(0<T<=10),表示要求矩阵的个数. 接下来有T组数据,每组数据格式如下: 第一行:两个数 ...

  3. BUPT 2012复试机考 1T

    题目描述 大家都知道,数据在计算机里中存储是以二进制的形式存储的. 有一天,小明学了C语言之后,他想知道一个类型为unsigned int 类型的数字,存储在计算机中的二进制串是什么样子的. 你能帮帮 ...

  4. 【Java】机考常用知识

    基本操作 数组 声明数组 方法一: int a[] = null; //声明一维数组 //int[] a = null; 也行,个人习惯 a = new int[10];//分配内存给一维数组 方法二 ...

  5. 华科机考:a+b

    时间限制:1秒空间限制:32768K 题目描述 计算a+b的和 每行包行两个整数a和b 对于每行输入对应输出一行a和b的和 输入 1 5 输出 6 吐槽:这尼玛是机考题? 代码: #include & ...

  6. 20150912华为机考2之"输入一段字符串(英文),将每个单词首字母大写后输出"

    还有其他一些(隐性)要求(要不然无法通过测试): .如果首字母已经大写,则不用变 .不是英文字母的不变 e.g. Input: hello world! this is _Ljj speaking! ...

  7. 20150912华为机考1之"输入一个字符串,将其中出现次数最多的字符输出"

    不吐槽华为的服务器了,直接上正文 输入:字符串(英文字母),长度不超过128 输出:出现频率最高的字母 思路写在注释文档 /* Input a string * Output the most fre ...

  8. 华科机考:a+b

    时间限制:1秒     空间限制:32768K 题目描述 实现一个加法器,使其能够输出a+b的值. 输入描述: 输入包括两个数a和b,其中a和b的位数不超过1000位. 输出描述: 可能有多组测试数据 ...

  9. 华科机考:IP地址

    时间限制:1秒  空间限制:32768K 题目描述 输入一个ip地址串,判断是否合法. 输入描述: 输入的第一行包括一个整数n(1<=n<=500),代表下面会出现的IP地址的个数. 接下 ...

随机推荐

  1. (38)zabbix中配置snmp监控

    1.首先按照“snmp监控快速配置”文本文档在被监控的主机上安装.配置及启动snmp服务, 具体内容如下: 1).安装snmp yum install net-snmp* -y cp -a /etc/ ...

  2. 如何用纯 CSS 创作牛奶文字变换效果

    效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/MGNWOm 可交互视频教 ...

  3. perl:_DATA_ _LINE_ _FILE_

    这三个应该是句柄: _DATA_ _FILE_ _LINE_ 没有找到具体介绍...记录于此,已被后续补充.

  4. 【css】【动画】【转发】旋转动画

    <!DOCTYPE HTML> <html> <head>     <meta charset="utf-8">     <s ...

  5. PAT Basic 1024

    1024 科学计数法 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+,即数字的整数部分只有1 ...

  6. java读写串口数据

    本博文参考自https://www.cnblogs.com/Dreamer-1/p/5523046.html 最近接触到了串口及其读写,在此记录java进行串口读写的过程. 1.导入串口支持包 需要下 ...

  7. Java-改变Class

    改变一个Class对象的类型 package com.tj; public class MyClass2 { public static void main(String[] args) { Obje ...

  8. idea 无法创建Scala class 选项解决办法汇总

    原因一:没有添加scala sdk 解决:file=>project structure =>Global Libraries,添加scala-sdk: 没有scala sdk的可以去网上 ...

  9. Palindromic Paths(DP)

    描述 Given an N×N grid of fields (1≤N≤500), each labeled with a letter in the alphabet. For example: A ...

  10. 2017 Multi-University Training Contest - Team 2

    Regular polygon Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)T ...