cout

计算机网络课程设计

五迷三道 提交于 2020-01-22 15:28:35
一、课程的目的和任务 本课程要求学生在"计算机网络原理"理论学习基础上,验证和加深对计算机网络概念的理解。通过本课程的实践,培养学生独立思考、综合分析和动手实践的能力。 通过本课程的学习,达到如下目标: 理解计算机网络体系结构和工作原理,掌握常用的网络命令,能够对命令的功能进行解释,分析命令执行结果,得到合理有效结论。 掌握Packet Tracer软件的操作方法,能够使用该软件模拟组网、配置交换机、路由器,能够按照实验方案实施仿真实验,采集和整理数据。 具备网络编程能力,能够设计抓包程序获取数据包,结合相关协议对数据包各个字段的含义进行分析、处理和解释,获取有效结论。 二、课程的基本内容和要求 2.1实验理论 常用网络命令的工作原理及协议 ARP的原理 ICMP协议及原理 telnet远程登录的原理 IP报文格式及路由转发 以太网CSMA/CD协议原理 透明网桥、以太网交换机 虚拟局域网VLAN 路由器的作用、静态路由、动态路由 IP报文格式及IP协议 Socket网络编程 2.2实验内容 1.常用网络命令 ①ipconfig命令 ipconfig命令显示当前所有的TCP/IP配置值、刷新动态主机配置协议(DHCP)和域名系统(DNS)设置。具体用法如下: ipconfig [/allcompartments] [/? | /all | /renew [adapter] |

关于TCP通信的实现(c++)

久未见 提交于 2020-01-21 15:58:46
  TCP通信机制,采用全双工(就是既可以发送数据,也可以接收数据)的形式进行客户端和服务器之间的链接,并且这是一种可靠数据传输(数据在进行收发的过程中并不会进行损失),并非UDP那样,详细细节,为什么可靠传输,可以参考《计算机网络——自顶向下》,以下代码均采用c++的模式进行实现   1.TCP------Server #pragma warning(disable:4996); #include <iostream> #include<winsock2.h> #include<windows.h> using namespace std; #pragma comment(lib,"ws2_32.lib") class TCP { public: void check_version(); void intintail(); void blind_listen(); void sent_recv(); private: WSADATA data; SOCKET sock_server; SOCKET sock_client; SOCKADDR_IN add_server; SOCKADDR_IN add_client; }; int main() { TCP a; a.check_version(); a.intintail(); a.blind_listen(); a.sent

C++输入输出流

て烟熏妆下的殇ゞ 提交于 2020-01-21 09:08:34
在学习算法与数据结构之前,希望大家打好这一方面的基础,标准类库对于之后的学习尤其重要。 流和缓冲区 为了防止歧义,这里将操作系统下运行的程序统称为文件,对于C++而言,只需要关心输入输出的字节流,而不必关心字节来自何处。为了更高效地处理这样地字节流,例如从硬盘提取字节,单次提取一个字节,重复提取费时费力,通常一次提出512个字节(可能更多),而输入C++程序则通过字节流的方式。那么,每次存放这512个字节的内存块称为缓冲区。 该图可以将输入部分左侧看作信息来源(硬盘等),较快速地进入缓冲区并将之填满,程序永远以单字节的流水形式从缓冲区处理字节流。输出时,而输出也是同理, 将缓冲区填满一并送给硬盘并清空缓冲区 。这就是flush the buffer的由来。 对于符合ANSI标准的C++,程序会在下一次输出到来之前或者换行符到来时刷新输出缓冲区。 关于iostream类 streambuf类:为缓冲区提供内存,并提供用于填充,访问,刷新和 管理内存块的类方法 。 ios_base类:表示 流的一般特征 ,例如是否可读可写,二进制流还是文本流。 ios类:基于base类,其中提供一个 指向streambuf对象 的指针。 os/istream类:从ios类派生,提供输入输出方法。 iostream类:基于os/istream类。 iostream类通常自动生成8个对象:

顺序表的基本操作

做~自己de王妃 提交于 2020-01-20 22:18:00
顺序表的基本操作 实现功能:顺序表的初始化,取值,查找,插入,删除的操作 # include <iostream> using namespace std ; # define MAXSIZE 500 typedef int ElemType ; typedef struct { ElemType * elem ; int length ; } SqList ; InitList ( SqList & L ) { //算法2.1顺序表的初始化 //构建一个空的顺序表L L . elem = new ElemType [ MAXSIZE ] ; L . length = 0 ; } int GetElem ( SqList L , int i ) { //算法2.2 顺序表的取值 ElemType e ; if ( i < 1 || i > L . length ) cout << "error" ; //判断i值是否合理,若不合理,返回ERROR e = L . elem [ i - 1 ] ; //elem[i-1]单元存储第i个数据元素 return e ; } int LocateElem_Sq ( SqList L , ElemType e ) { //算法2.3 顺序表的查找 //顺序表的查找 for ( int i = 0 ; i < L . length ; i ++

c++、c实现推箱子小游戏

限于喜欢 提交于 2020-01-20 13:15:39
   经过四次的修改和优化,终于将推箱子这个游戏完整的写出来了,今天就像大家分享一下这个游戏的编写。   这个游戏界面的编写总的来说不困难,主要是推动箱子的算法。    (1)利用数组和windows api 即可写出界面      1 #define N 15 2 #define M 15 3 int map[N][M] = { 4 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, 5 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, 6 { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, 7 { 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 },//0->空白 8 { 0, 0, 0, 0, 1, 0, 2, 1, 1, 1, 0, 0, 0, 0, 0 },//1->墙 9 { 0, 0, 0, 0, 1, 0, 3, 0, 0, 1, 0, 0, 0, 0, 0 },//2->人 10 { 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0 },//3->箱子 11 { 0, 0, 0, 1, 4, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0

(未AC)7-5 特殊队列 (30分)

末鹿安然 提交于 2020-01-19 23:37:50
普通的队列仅有 EnQueue 和 DeQueue 两种操作,分别表示在队尾增加元素和取出队首元素。现在给队列增加一种新的操作 DeleteMid,表示删除队列的中间元素。对于有 N 个元素的队列,若 N 为偶数,中间元素定义为 从队首到队尾的第 N / 2 个元素 ;若 N 为奇数,中间元素定义为 第 ( N + 1 ) / 2 个元素 。现给出队列的一系列操作,输出相应结果。 输入格式: 第一行输入一个不超过 1 0 ​ 6 ​​ 的正整数 M 和 N,分别表示指令条数和队列容量。 之后 M 行,每行给出一条指令,为下列3种指令之一: EnQueue elem DeQueue DeleteMid 输出格式: 对于每个 EnQueue 指令,若未超出队列容量,不输出任何信息,否则在一行中输出 Full Queue 。 对于每个 DeQueue 和 DeleteMid 指令,若队列不为空,则取出相应元素并输出;否则只在一行中输出 Empty Queue 。 最后在一行中按从队首到队尾的顺序依次输出队列中的元素,以空格分隔。行尾不得有多余空格。 输入样例: 10 4 DeQueue EnQueue 2 EnQueue 3 EnQueue 4 EnQueue 5 DeleteMid DeleteMid EnQueue 7 EnQueue 8 EnQueue 9 输出样例: Empty

[C++学习日记]-04-基础运算

本小妞迷上赌 提交于 2020-01-19 03:53:41
基础运算 程序不能没有运算,如果没有运算那将毫无意义 算术运算符 C++支持一下这些算术运算符 # 名称 符号 示例 1 加法 + x+y 2 减法 - x-y 3 乘法 * x*y 4 除法 / x/y 5 求余 % x%y 加法: 加法是从一个数中加上另一个数的运算,也就是求和 int x = 80 + 8 ; cout << x ; //输出88 减法 减法是从一个数中减去另一个数的运算 int x = 88 - 8 ; cout << x ; //输出80 乘法 乘法是指将相同的数加起来的快捷方式: int x = 3 * 8 ; cout << x ; //输出24 除法 已知两个因数的积与其中一个因数,求另一个因数的运算,叫做除法: int x = 24 / 3 ; cout << x ; //输出8 如果一个或两个操作数都是浮点值,则除法运算符执行浮点除法。 除数不能为0,否则会使程序崩溃 求余 求余是一种数学计算方法,指一个数除以另一个数,不够除的部分就是余数,就是求余的结果: int x = 24 % 5 ; cout << x ; // 输出4 运算的优先级 做复合运算的时候,运算符的优先级直接决定了等式的运算结果,比如乘法的优先级就高于加法运算的优先级: int x = 5 + 2 * 2 ; cout << x ; // x的值等于9,而不是14 和数学一样

问题 B: 分组统计

雨燕双飞 提交于 2020-01-19 03:53:02
分组统计 问题 B: 分组统计时间限制: 1 Sec 内存限制: 32 MB 提交: 416 解决: 107 [ 提交 ][ 状态 ][ 讨论版 ][命题人:外部导入] 题目描述 先输入一组数,然后输入其分组,按照分组统计出现次数并输出,参见样例。 输入 输入第一行表示样例数m,对于每个样例,第一行为数的个数n,接下来两行分别有n个数,第一行有n个数,第二行的n个数分别对应上一行每个数的分组,n不超过100。 输出 输出m行,格式参见样例,按从小到大排。 样例输入 1 7 3 2 3 8 8 2 3 1 2 3 2 1 3 1 样例输出 1={2=0,3=2,8=1} 2={2=1,3=0,8=1} 3={2=1,3=1,8=0} 思考 http://codeup.cn/problem.php?cid=100000582&pid=1 这个是典型的哈希算法了。 这个样例是统计每组数字里面各数字(出现在第一行的数字,这一次是3,2,8)的个数。 所以每一组数字要个数组3,记录2,3,8的个数 先搞一个在n个数字第一次出现时的数组num,记录那些数字出现了,出现了几次,以该数字为下标的数组值++,那这个数组大小应该是很大的啊 。 再来就是分组了,再来一个数组zu, 以上一行出现过数字为下标,值为所分的组。 n不超过100。怎么表示这种性质呢?结构体?一个整型

3.6字符串

試著忘記壹切 提交于 2020-01-19 02:08:58
5901: 【字符串】回文串 三种方法,(1)纯暴力(2)算法笔记上面的方法(3)DP 题目描述:读入一串字符,判断是否是回文串。“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。 (1)暴力 设置两个变量,左边界变量l,右边界变量r;从第一个字符和最后一个字符开始枚举对比,判断字符是否相同,额外需要注意的一点是字符串长度为奇数时枚举出口是l==r,偶数时判断l>r即可 1 #include<iostream> 2 #include<cstring> 3 #include<math.h> 4 #include<stdlib.h> 5 #include<cstring> 6 #include<cstdio> 7 #include<utility> 8 #include<algorithm> 9 #include<map> 10 using namespace std; 11 typedef long long ll; 12 13 const int maxn=1005; 14 int dp[maxn][maxn]; 15 int main( ) 16 { 17 ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); 18 //freopen("a.txt","r",stdin); 19 /

using命名空间

杀马特。学长 韩版系。学妹 提交于 2020-01-18 08:42:05
命名空间 转自:https://blog.csdn.net/touzani/article/details/1637776 仅为方便查看,侵删: 在C++中,名称(name)可以是符号常量、变量、宏、函数、结构、枚举、类和对象等等。为了避免,在大规模程序的设计中,以及在程序员使用各种各样的C++库时,这些标识符的命名发生冲突,标准C++引入了关键字namespace(命名空间/名字空间/名称空间/名域),可以更好地控制标识符的作用域。 MFC中并没有使用命名空间,但是在.NET框架、MC++和C++/CLI中,都大量使用了命名空间。 1 )作用域与命名空间 相关概念 与命名空间相关的概念有: 声明域(declaration region)—— 声明标识符的区域。如在函数外面声明的全局变量,它的声明域为声明所在的文件。在函数内声明的局部变量,它的声明域为声明所在的代码块(例如整个函数体或整个复合语句)。 潜在作用域(potential scope)—— 从声明点开始,到声明域的末尾的区域。因为C++采用的是先声明后使用的原则,所以在声明点之前的声明域中,标识符是不能用的。即,标识符的潜在作用域,一般会小于其声明域。 作用域(scope)—— 标识符对程序可见的范围。标识符在其潜在作用域内,并非在任何地方都是可见的。例如,局部变量可以屏蔽全局变量、嵌套层次中的内层变量可以屏蔽外层变量