华中科技大学计算机学院实验报告
- 格式:doc
- 大小:339.50 KB
- 文档页数:14
电气学科大类《计算机原理与应用实验》课程实验报告电气与电子工程学院级姓名:学号:专业班号:日期:2014年1月7日实验成绩:评阅人:实验评分表目录实验评分表错误!未指定书签。
实验一:软件安装与使用错误!未指定书签。
一、实验目的错误!未指定书签。
二、实验设备错误!未指定书签。
三、实验任务错误!未指定书签。
四、实验原理错误!未指定书签。
五、实验内容错误!未指定书签。
六、实验过程及结果错误!未指定书签。
七、实验感想八、参考文献实验二:汇编语言实例讲解与程序编写一、实验目的二、实验设备三、实验任务四、实验原理五、实验内容六、实验过程及结果七、实验感想八、参考文献实验三:基于软件的最小系统硬件设计一、实验目的二、实验设备三、实验任务四、实验原理五、实验内容六、实验过程及结果七、实验感想八、参考文献实验四:基于最小系统的汇编程序设计一、实验目的错误!未指定书签。
二、实验设备错误!未指定书签。
三、实验任务错误!未指定书签。
四、实验原理错误!未指定书签。
五、实验内容六、实验过程及结果七、实验感想八、参考文献实验五:并行接口实验(演示实验)一、实验目的二、实验设备三、实验任务四、实验原理五、实验内容六、实验过程及结果七、实验感想八、参考文献实验六:工频测频接口电路设计与实现一、实验目的二、实验设备三、实验任务四、实验原理五、实验内容六、实验过程及结果七、实验感想八、参考文献实验一:软件安装与使用一、实验目的通过本实验学习软件的安装与使用。
二、实验设备微机一台,仿真软件三、实验任务.安装仿真软件。
.利用仿真软件编程。
四、实验原理仿真软件就是在下的一种仿真软件,它可以仿真模拟的程序运行,并且可以直观地观察寄存器的变化情况。
结合了一个先进的原始编辑器、组译器、反组译器、具除错功能的软件模拟工具(虚拟),还有一个循序渐进的指导工具。
这对刚开始学组合语言的人会是一个很有用的工具。
它会在模拟器中一步一步的编译程序码并执行,视觉化的工作环境让它更容易使用。
华中科技大学计算机网络实验(二)报告————————————————————————————————作者:————————————————————————————————日期:ﻩ计算机网络课程实验报告实验2:抗干扰编码姓名李蓝鑫院系自动化学院学号U201514280实验地点科技楼十二楼机房实验时间2018年5月3日实验目的:1. 了解抗干扰编码原理。
2、掌握海明编码和CRC编码的原理,能熟练计算实验内容:内容1:海明编码1.1海明编码原理将有效信息按某种规律分成若干组,每组安排一个校验位通过异或运算进行校验,得出具体的校验码;在接收端同样通过异或运算看各组校验结果是否正确,并观察出错的校校组,或者个出错的校验组的共同校验位,得出具体的出错比特位;对错误位取反来将其纠正;假设用N表示添加了校验码位后整个传输信息的二进制位数,用K代表其中有效信息位数,r表示添加的校验码位数,它们之间的关系应满足:N=K+r≤2^r-1(是为了确保r位校验码能校验全部的数据位,因为r位校验码所能表示的最大十进制数为2^r-1,同时也确保各位码本身不被其他校验码校验)。
海明码的校验码的位置必须是在2n次方位置(n从0开始,分别代表从左边数起分别是第1、2、4、8、16……),信息码也就是在非2n次方位置第i位校验码从当前校验码位开始,每次连续校验i位后再跳过i位,然后再连续校验i位,再跳过i位,以此类推。
确定每个校验码所校验的比特位:1.2海明编码程序流程图1.3交互界面设计编码:原码序列从“输入序列”编辑框输入,点击“编码”按钮在“编码序列”编辑框内输出编码序列,对输入编码要求为二进制输入译码:编码序列从“输入序列”编辑框输入,点击“译码”按钮在“译码序列”编辑框内输出译码序列,若译码错误会有响应的报错和纠错,对输入序列有不小于三位和二进制序列的要求1.4核心代码与注释输入序列框callback%做输入检测,检测是否是“0”“1”输入,否则报错temp_str=get(handles.input,'String');num_char=unique(temp_str);%unique函数获得输入字符串中不同字符的字符串if length(num_char)==2 %如果字符串长度为2if num_char(2)=='1' %第二个字符不是“1”说明字符串中有其他字符else set(handles.input,'String','0000');errordlg('只能输入1和0','输入错误');endelseif length(num_char)==1 %如果字符串长度为1,判断“1”还是“0",否则报错if num_char(1)=='0'elseif num_char(1)=='1'elseset(handles.input,'String','0000');errordlg('只能输入1和0','输入错误');endelse %如果字符串长度不为2,直接报错set(handles.input,'String','0000');errordlg('只能输入1和0','输入错误');End编码按钮callback(编码核心)%获取输入字符串temp_str=get(handles.input,'string');%获取字符串长度len_str=length(temp_str);%转存原码字符串长度备用k=len_str;%初始化需要插入的校验码的位数r=0;%根据海明编码的2^(r)-1)<(k+r)要求,计算校验码位数while((2^(r)-1)<(k+r))r=r+1;end%把字符串数组转成0和1的数组,便于处理for i=1:1:len_strif temp_str(i)=='1'yuan(i)=1;%原码数组为yuanelseyuan(i)=0;endend%把求得相应位数的校验码,用0插入原码中得到新码j=0;m=1;for i=1:1:(k+r)if i==2^(j) %如果该位置为2的次方,则插入校验码xin(i)=0;j=j+1;elsexin(i)=yuan(m);m=m+1;endend%进行海明编码odd=0;%用于计算每位校验码负责校验的位置的和for j=1:1:r %共有r位校验码,需要计算r次n=1; %初始化循环变量i=1;while((n*2^(j-1)+i-1)<=(k+r))%当没有超过数组长度时继续循环if i>(2^(j-1)) %如果本段的编码已经加完i=1; %则调转到下一段,也就是隔一个2^(j-1)的段再进行累加n=n+2;else %累加odd=odd+xin(n*2^(j-1)+i-1);i=i+1;endendif mod(odd,2)==0 %判断是否为偶数xin(2^(j-1))=0; %若为偶数,则在对应的校验位插入0 elsexin(2^(j-1))=1; %若为奇数,则在对应的校验为插入1 endodd=0;end%编码完毕,把数组转换成字符串用于输出for i=1:1:(k+r)if xin(i)==1output_str(i)='1';elseoutput_str(i)='0';endendset(handles.out,'String',output_str);译码按钮callback(原理与编码基本相同)%获得译码序列字符串temp_str=get(handles.input,'string');len_str=length(temp_str);%判断输入序列长度是否满足要求,不满足报错返回if len_str<3errordlg('译码最低输入位数为3位','输入出错');elsek=len_str;%编码中信息码的个数r=len_str;%编码中校验码的个数while((2^(r)-1)>=len_str)r=r-1;endr=r+1;%找到校验码的个数k=len_str-r;for i=1:1:len_str%得到所有编码数组if temp_str(i)=='1'xin(i)=1;elsexin(i)=0;endend%提取出信息编码数组m=1;j=0;for i=1:1:(k+r)if i==2^(j)j=j+1;elseyuan(m)=xin(i);m=m+1;endend%重新偶校验,原理同编码odd=0;for j=1:1:rn=1;i=1;while((n*2^(j-1)+i-1)<=(k+r))if i>(2^(j-1))i=1;n=n+2;elseodd=odd+xin(n*2^(j-1)+i-1);i=i+1;endendif mod(odd,2)==0check(j)=0; %校验结果存在check数组中elsecheck(j)=1;endodd=0;end%把check数组也就是校验结果转成十进制数num_wrong=0;for j=1:1:rnum_wrong=num_wrong*2;if check(r-j+1)==1num_wrong=num_wrong+1;endend%判断校验是否正确,为0则正确if num_wrong==0for m=1:1:kif yuan(m)==1output_str(m)='1';elseoutput_str(m)='0';endendset(handles.ym_out,'String',output_str);else%否则校验错误,对应位置取反后再输出if xin(num_wrong)==0xin(num_wrong)=1;elsexin(num_wrong)=0;endm=1;j=0;for i=1:1:(k+r)if i==2^(j)j=j+1;elseyuan(m)=xin(i);m=m+1;endendfor m=1:1:kif yuan(m)==1output_str(m)='1';elseoutput_str(m)='0';endendset(handles.ym_out,'String',output_str);errordlg(['校验码第',num2str(num_wrong),' 位出错,对应位置取反后得到正确解码为',output_str],'校验出错');endend1.5程序执行测试1.5.1 编码测试①正常编码1.5.2 译码测试①输入报错②正常解码③解码错误与纠正内容2:CRC编码2.1 CRC编码原理在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码也叫(N,K)码。
课程实验报告课程名称:计算机系统基础专业班级:学号:姓名:指导教师:报告日期:年月日计算机科学与技术学院目录实验1: (1)实验2: (7)实验3: (24)实验总结 (34)实验1:数据表示1.1 实验概述实验目的:更好地熟悉和掌握计算机中整数和浮点数的二进制编码表示。
实验目标:加深对数据二进制编码表示的了解。
实验要求:使用有限类型和数量的运算操作实现一组给定功能的函数。
实验语言:c。
实验环境:linux1.2 实验内容需要完成bits.c中下列函数功能,具体分为三大类:位操作、补码运算和浮点数操作。
1)位操作表1列出了bits.c中一组操作和测试位组的函数。
其中,“级别”栏指出各函数的难度等级(对应于该函数的实验分值),“功能”栏给出函数应实现的输出(即功能),“约束条件”栏指出你的函数实现必须满足的编码规则(具体请查看bits.c中相应函数注释),“最多操作符数量”指出你的函数实现中允许使用的操作符的最大数量。
你也可参考tests.c中对应的测试函数来了解所需实现的功能,但是注意这些测试函数并不满足目标函数必须遵循的编码约束条件,只能用做关于目标函数正确行为的参考。
表1 位操作题目列表2)补码运算表2列出了bits.c中一组使用整数的补码表示的函数。
可参考bits.c中注释说明和tests.c中对应的测试函数了解其更多具体信息。
表2 补码运算题目列表3)浮点数操作表3列出了bits.c中一组浮点数二进制表示的操作函数。
可参考bits.c中注释说明和tests.c中对应的测试函数了解其更多具体信息。
注意float_abs的输入参数和返回结果(以及float_f2i函数的输入参数)均为unsigned int类型,但应作为单精度浮点数解释其32 bit二进制表示对应的值。
表3 浮点数操作题目列表表示,当输入参数是NaN 时,返回NaN 号整型操作,包括||,&&以及if,while控制结构4 float_f2i 返回浮点数‘f’的强制整型转换“(int)f”表示仅能使用任何整型/无符号整型操作,包括||,&&以及if,while控制结构301.3 实验设计根据题目要求,选择合适的操作符来编写代码。
华中科技大学-计算机学院-数据结构实验报告LT目录1基于顺序存储结构实现线性表的基本运算 (1)1.1 实验目的 (1)1.2 线性表演示系统设计 (1)1.2.1 系统总体设计 (1)1.2.2 有关常量和类型定义 (1)1.2.3 算法设计 (1)1.3 线性表演示系统实现与测试 (3)1.3.1 系统实现 (3)1.3.2 系统测试 (11)1.4 实验小结 (12)2 基于链式实现线性表的基本运算 (13)2.1 问题描述 (13)2.2 线性表演示系统设计 (13)2.2.1 系统总体设计 (13)2.2.2 有关常量和类型定义 (13)2.2.3 算法设计 (13)2.3 线性表演示系统实现与测试 (15)2.3.1 系统实现 (15)2.3.2 系统测试 (24)2.4 实验小结 (25)3基于顺序存储结构实现栈的基本运算 (27)3.1实验目的 (27)3.2栈演示系统设计 (27)3.2.1 系统总体设计 (27)3.2.2 算法实现 (27)3.3 栈演示系统实现与测试 (28)3.3.1 程序实现 (28)3.3.2 系统测试 (34)3.4 实验小结 (35)4基于循环队列存储结构实现队列的基本运算 (36)4.1 问题描述 (36)4.2.1 系统总体设计 (36)4.2.2 有关常量和类型定义 (36)4.2.3 算法设计 (36)4.3 队列演示系统实现与测试 (37)4.3.1 系统实现 (37)4.3.2 系统测试 (44)4.4 实验小结 (45)5基于二叉链表实现二叉树的基本运算 (46)5.1 实验目的 (46)5.2.1 系统总体设计 (46)5.2.2 有关常量和类型定义 (46)5.2.3 算法设计 (46)5.3 二叉树演示系统实现与测试 (48)5.3.1 系统实现 (48)5.3.2 系统测试 (79)5.4 实验小结 (81)6基于邻接表实现图的基本和常见运算 (82)6.1 实验目的 (82)6.2.1 系统总体设计 (82)6.2.2 有关常量和类型定义 (82)6.2.3 算法设计 (82)6.3 图演示系统实现与测试 (83)6.3.1 系统实现 (83)6.3.2 系统测试 (101)6.4 实验小结 (103)参考文献 (104)1基于顺序存储结构实现线性表的基本运算1.1 实验目的通过实验达到:(1)加深对线性表的概念、基本运算的理解;(2)熟练掌握线性表的逻辑结构与物理结构的关系;(3)物理结构采用顺序表,熟练掌握线性表的基本运算的实现。
课程设计报告题目:并行实验报告课程名称:并行编程原理与实践专业班级:学号:姓名:指导教师:报告日期:计算机科学与技术学院目录1,实验一 (1)1 实验目的与要求 (1)1.1实验目的 (1)1.2实验要求 (1)2 实验内容 (1)2.1.1熟悉pthread编程 (1)2.1.2简单的thread编程 (2)2.2.1熟悉openMP编程 (3)2.3.1熟悉MPI编程 (4)2,实验2~5 (7)1 实验目的与要求 (7)2 算法描述 (7)3.实验方案 (8)4实验结果与分析 (8)3 心得体会 (10)附录: (10)3 蒙特.卡罗算法求π的并行优化 (19)1.蒙特.卡罗算法基本思想 (19)2.工作过程 (20)3.算法描述 (20)4 设计与实现 (21)5 结果比较与分析 (23)6 思考与总结 (24)1,实验一1 实验目的与要求1.1实验目的1)熟悉并行开发环境,能进行简单程序的并行开发,在Linux下熟练操作。
2)熟悉一些并行工具,如pthread,OpenMP,MPI等进行并行编程3)培养并行编程的意识1.2实验要求1)利用pthread、OpenMP、MPI等工具,在Linux下进行简单的并行编程,并且掌握其编译、运行的方法。
2)理解并行计算的基础,理解pthread、OpenMP、MPI等并行方法。
2 实验内容2.1.1熟悉pthread编程Linux系统下的多线程遵循POSIX线程接口,称为 pthread。
编写Linux下的多线程程序,需要使用头文件pthread.h,连接时需要使用库libpthread.a。
下面是pthread编程的几个常用函数:1,int pthread_create(pthread_t *restrict tidp,const pthread_attr_t *restrict attr, void *(*start_rtn)(void),void *restrict arg);返回值:若是成功建立线程返回0,否则返回错误的编号形式参数:pthread_t *restrict tidp 要创建的线程的线程id指针const pthread_attr_t *restrict attr 创建线程时的线程属性void* (start_rtn)(void) 返回值是void类型的指针函数void *restrict arg start_rtn的行参2 , int pthread_join( pthread_t thread, void **retval );thread表示线程ID,与线程中的pid概念类似;retval用于存储等待线程的返回值连接函数pthread_join()是一种在线程间完成同步的方法。
课程实验报告课程实验名称:_算法设计与分析实验设计专业班级:学号:__姓名:____指导教师:王多强_报告日期: 2013年6月15日计算机科学与技术学院目录一、实验题目 (2)二、理论方法 (2)三、算法描述 (3)四、代码实现 (4)1.模块一:基本算法 (4)2.模块二:输出结果 (5)1)输出C(0,n),W(0,n),R(0,n) (5)2)从上至下,输出每个节点的左右节点 (5)五、实验结果截图 (6)六、计算时间分析 (6)七、实验体会 (7)八、源代码 (7)12一、 实验题目在二分检索树中,为了把动态规划应用于得到一颗最优二分检索树的问题,需要把构造这样的一个数看成是一系列决策的结果,而且要能列出求取最优决策序列的递推式。
二、 理论方法解决上述问题的一种可能方法是对{a 1,a 2,…,a n } (a 1<a 2 < … < a n )的二分检索树,若a k 是该树的根,则内结点a 1,a 2,…,a k-1和外部结点E 0,E 1,…,E k-1将位于根a k 的左子树L 中,而其余的结点 a k +1, a k+2, …,a n 及E k ,E k+1,…,E n 将位于右子树R 中。
含义:左、右子树的预期成本。
这里,将左、右子树的根作为第一级来统计左、右子树中所有结点的级数,该级数等于相对原树根的级数-1。
若:level T (X)为结点X 在树T 中的级数,level(X)为X 在T 的 左/右子树中的级数,则:level T (X) = level(X)+1∑∑∑∑∑∑∑∑∑∑∑∑∑∑≤≤≤≤+≤≤≤≤+≤≤≤≤≤≤≤≤≤≤∈≤≤+∈≤≤∈≤≤∈≤≤≤≤++-++++-++=-++++-++++=-+=ni k ni 1k ni k ni 1k 1-k i 01-k i 11-k i 01-k i 1ni k 右子树E ni 1k 右子树a 1-k i 0左子树E 1-k i 1左子树a ni 0ni 1Q(i)P(i) )1)((*Q(i))(*P(i) Q(i)P(i) )1)((*Q(i))(*P(i)P(k) )1)1)((*Q(i))1)((*P(i) )1)1)((*Q(i))1)((*P(i))( )1)((*Q(i))(*P(i))(COST i i i i i i i i i i i i i T i T E level a level E level a level E level a level E level a level k P E level a level T 证明最优性原理对于上述问题是成立的:∑∑<≤<≤-+=k i iki iE level i Q a level i P L COST 01)1((*)()(*)()(∑∑≤≤≤<-+=ni k ini k iE level i Q a level i P R COST )1((*)()(*)()(若以ak 为根的二分检索树T是关于集合{a1,a2,…,an}的一棵最优二分检索树,L、R分别是ak 的左子树和右子树,L包含结点a1,a2,…,ak-1和E,E1,…,Ek-1、R包含结点及ak+1, ak+2, …,an和Ek,Ek+1,…,En,则L和R必是相应集合的最优二分检索树。
课程实验报告课程名称:计算机图形学专业班级:学号:姓名:指导教师:报告日期:2015-11-11计算机科学与技术学院实验一:分形图形绘制一、实验目的(标题四号黑体)(1)理解OpenGL 中glut 程序框架;(2)掌握二维基本图形绘制算法;(3)利用二维基本图形绘制算法,扩展对其他复杂图形的绘制理解。
二、实验内容1、实验算法(a)中点Bresenham算法画线a)输入直线的两个端点:端点、端点。
必要时交换A、B两点的坐标,使A点不在B点的右边。
令,,,b)讨论直线的斜率的大小及正负,分四种情况分别逐点画线:i.当最大位移方向为x轴。
构建判别公式:其中,初值。
当时,,。
当时,。
ii.当最大位移方向为x轴。
构建判别公式:其中,初值。
当时,,。
当时,。
iii.当最大位移方向为x轴。
构建判别公式:其中,初值。
当时,,。
当时,。
iv.当最大位移方向为x轴。
构建判别公式:其中,初值。
当时,,。
当时,。
c)当直线没有画完时重复b)步骤(b)绘制分形三角形a)输入三角形的三个端点:端点、端点、端点、递归层数n。
b)连接A、B、C三点。
c)当时,连接输入三角形三边的中点,将分割得到的四个三角形中包含顶点的三个、作为输入参数,递归调用本步骤。
2、源程序#include <iostream>#include <math.h>#include <GL/glut.h>#define ROUND(a) ((int )(a+0.5)) //求某个数的四舍五入值using namespace std;//全局变量声明:三角形三顶点及递归层数GLint Global_xa, Global_ya, Global_xb, Global_yb, Global_xc, Global_yc;int Global_n;void init(void){glClearColor(1.0, 1.0, 1.0, 0.0);//指定窗口的背景色为白色glMatrixMode(GL_PROJECTION);//对投影矩阵进行操作gluOrtho2D(0.0, 600.0, 0.0, 600.0);//使用正投影}//绘制直线的函数void lineDDA(GLint xa, GLint ya, GLint xb, GLint yb){GLint dx = xb - xa, dy = yb - ya; //计算x,y方向的跨距int steps, k; //定义绘制直线像素点的步数float xIcre, yIcre, x = xa, y = ya; //定义步长的增量//取X,Y方向跨距较大的值为步数if (abs(dx) > abs(dy)) steps = abs(dx);else steps = abs(dy);//根据步数来求步长增量xIcre = dx / (float)steps;yIcre = dy / (float)steps;//从起点开始绘制像素点for (k = 0; k <= steps; k++){glBegin(GL_POINTS);glVertex2f(x, y);glEnd();x += xIcre;y += yIcre;}}//绘制直线的函数(中点Bresenham算法)void lineBre(GLint xa, GLint ya, GLint xb, GLint yb){GLint dx, dy, d, UpIncre, DownIncre, x, y; //统一规定UpIncre为能使非最大位移方向坐标改变时的Di增量//统一规定DownIncre为不能使非最大位移方向坐标改变时的Di增量if (xa > xb) {/* 确保a点不在b点的右方*/x = xb; xb = xa; xa = x;y = yb; yb = ya; ya = y;}x = xa; y = ya; //计算画线起点dx = xb - xa; dy = yb - ya; //计算dx和dyif (abs(dx) >= abs(dy)){/* 考虑|k|<=1的情况*/if (dy >= 0) {/* 考虑k>=0的情况*/d = dx - 2 * dy; //计算D0UpIncre = 2 * dx - 2 * dy; DownIncre = -2 * dy; //计算UpIncre和DownIncrewhile (x <= xb) {/* 从线起点画到线终点*/glBegin(GL_POINTS);glVertex2i(x, y); // 在(x,y)位置画点glEnd();x++; //移动下一画点位置的x轴坐标if (d < 0) {/* 考虑Di<0的情况*/y++; //移动下一画点位置的y轴坐标d += UpIncre; //迭代d}else {/* 考虑Di>=0的情况*/d += DownIncre; //迭代d}}}else {/* 考虑k<0的情况*/d = -dx - 2 * dy; //计算D0UpIncre = -2 * dx - 2 * dy; DownIncre = -2 * dy; //计算UpIncre和DownIncrewhile (x <= xb) {/* 从线起点画到线终点*/glBegin(GL_POINTS);glVertex2i(x, y); // 在(x,y)位置画点glEnd();x++; //移动下一画点位置的x轴坐标if (d > 0) {/* 考虑Di>0的情况*/y--; //移动下一画点位置的y轴坐标d += UpIncre; //迭代d}else {/* 考虑Di>=0的情况*/d += DownIncre; //迭代d}}}}else {/* 考虑|k|>1的情况*/if (dy > 0) {/* 考虑k>0的情况*/d = 2 * dx - dy; //计算D0UpIncre = 2 * dx - 2 * dy; DownIncre = 2 * dx; //计算UpIncre和DownIncrewhile (y <= yb) {/* 从线起点画到线终点*/glBegin(GL_POINTS);glVertex2i(x, y); // 在(x,y)位置画点glEnd();y++; //移动下一画点位置的y轴坐标if (d > 0) {/* 考虑Di>0的情况*/x++; //移动下一画点位置的x轴坐标d += UpIncre; //迭代d}else {/* 考虑Di>=0的情况*/d += DownIncre; //迭代d}}}else {/* 考虑k<0的情况*/d = -2 * dx - dy; //计算D0UpIncre = -2 * dx - 2 * dy; DownIncre = -2 * dx; //计算UpIncre和DownIncrewhile (y >= yb) {/* 从线起点画到线终点*/glBegin(GL_POINTS);glVertex2i(x, y); // 在(x,y)位置画点glEnd();y--; //移动下一画点位置的y轴坐标if (d < 0) {/* 考虑Di>0的情况*/x++; //移动下一画点位置的x轴坐标d += UpIncre; //迭代d}else {/* 考虑Di>=0的情况*/d += DownIncre; //迭代d}}}}}void Triangle(GLint xa, GLint ya, GLint xb, GLint yb, GLint xc, GLint yc){// 绘制三角形// xa,ya;xb,yb;xc,yc;是三角形的三个顶点lineBre(xa, ya, xb, yb);lineBre(xb, yb, xc, yc);lineBre(xa, ya, xc, yc);}void Fractal(GLint xa, GLint ya, GLint xb, GLint yb, GLint xc, GLint yc, int n){GLint xaa, yaa, xbb, ybb, xcc, ycc; //获取三边中点的坐标xaa = (xb + xc) / 2;yaa = (yb + yc) / 2;xbb = (xa + xc) / 2;ybb = (ya + yc) / 2;xcc = (xa + xb) / 2;ycc = (ya + yb) / 2;if (n >= 1) {//递归Fractal(xa, ya, xbb, ybb, xcc, ycc, n - 1);Fractal(xb, yb, xaa, yaa, xcc, ycc, n - 1);Fractal(xc, yc, xaa, yaa, xbb, ybb, n - 1);Triangle(xaa, yaa, xbb, ybb, xcc, ycc); //连接三边中点}}void Fractal_Call(){// 绘制分形三角形// xa,ya;xb,yb;xc,yc;是三角形的初始顶点// n 是三角形的递归层数glClear(GL_COLOR_BUFFER_BIT);//设定颜色缓存中的值glColor3f(1.0, 0.0, 0.0); //设置直线颜色为红色Triangle(Global_xa, Global_ya, Global_xb, Global_yb, Global_xc, Global_yc);//连接三角形顶点Fractal(Global_xa, Global_ya, Global_xb, Global_yb, Global_xc, Global_yc, Global_n);//递归生成分形图形glFlush(); //立即执行}int main(int argc, char ** argv){glutInit(&argc, argv);//初始化GLUT库OpenGL窗口的显示模式glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); //初始化窗口的显示模式glutInitWindowSize(600, 600); //设置窗口的尺寸glutInitWindowPosition(100, 100); //设置窗口的位置glutCreateWindow("分形图形绘制");cout << "分形图形绘制" << endl;//输入直线的起点坐标cout << "please input the first point(xa,ya) of the Triangle(Integer that range from 0 to 600): " << endl;cin >> Global_xa;cin >> Global_ya;//输入直线的终点坐标cout << "please input the second point(xb,yb) of the Triangle(Integer range from 0 to 600): " << endl;cin >> Global_xb;cin >> Global_yb;//输入直线的终点坐标cout << "please input the last point(xc,yc) of the Triangle(Integer range from 0 to 600): " << endl;cin >> Global_xc;cin >> Global_yc;//输入直线的终点坐标cout << "please input the recursion layer(n) of the Triangle(Integer range greater than -1): " << endl;cin >> Global_n;init(); //初始化glutDisplayFunc(Fractal_Call); //执行画图程序glutMainLoop(); //启动主GLUT事件处理循环}3、实验结果图3-1 DDA算法绘制直线结果(k=1)图3-2 DDA算法绘制直线结果(k>1)图3-3 DDA算法绘制直线结果(k<-1)图3-4 DDA算法绘制直线结果(0>k>-1)图3-5 四层分形斜三角形图3-6 六层分形正三角形三、实验心得这次实验真的算是一次比较特殊的体验,因为这是我第一次在程序中完全地依赖数学编写程序。
课程实验报告实验名称:嵌入式系统实验专业班级:计算机科学与技术x班学号:Ux姓名:x合作者:x实验时间:xxxx年xx月xx日计算机科学与技术学院试验一:bootloader (ads、引导)一、实验任务1、熟悉ADS 1.2开发工具创建、编译、下载、调试工程2、串口通讯串口控制器初始化、收/发数据3、配置主机端的nfs服务器配置主机端的nfs服务器,以连接linux核心4、下载并运行linux核心使用自己的串口程序下载并运行linux核心二、实验内容编写串口接收数据函数编写串口发送数据函数学习ads、jtag调试、flash烧写打印菜单,等待用户输入下载并运行linux核心配置主机的nfs服务器,与linux核心连接三、实验步骤1.编写串口接收数据函数编写串口发送数据函数修改bootloader:菜单、串口收发、命令行;接收串口数据并做相应处理:while(1){打印菜单并等待用户输入;switch(ch) //根据用户输入做相应处理{case '1':imgsize=xmodem_receive((char *)KERNEL_BASE, MAX_KERNEL_SIZE);if(imgsize==0) //下载出错;else //下载成功;break;case '3':nand_read((unsigned char *)KERNEL_BASE, 0x00030000, 4*1024*1024);case '2':BootKernel(); //这里是不会返回的,否则出错;break;default:break;}}Bootloader的main()函数打印菜单:int main(void){ARMTargetInit(); //目标板初始化;//接收用户命令,传递linux核心;Uart_puts("Menu:\n\r");Uart_puts("1.Load kernel via Xmodem;\n\r");Uart_puts("2.Boot linux; \n\r");Uart_puts("3.Load kernel from flash and boot; \n\r");Uart_puts("Make your choice.\n\r");do{ch=Uart_getc();}while(ch!='1' && ch!='2' && ch!='3');return 0;}串口读写:void Uart_putc(char c){while(!SERIAL_WRITE_READY());((UTXH0) = (c));}unsigned char Uart_getc( ){while(!SERIAL_CHAR_READY());return URXH0;}2.使用ads1.2编译bootloader;3.使用uarmjtag下载、调试bootloader;4.使用axd查看变量、内存,单步跟踪;5.配置超级终端,与bootloader通讯;6.配置nfs;编辑/etc/export文件:/home/arm_os/filesystem/rootfs 目标板ip(rw,sync)/home/arm_os/filesystem/rootfs 主机ip(rw,sync)启动nfs服务器:/etc/init.d/nfs restart测试nfs服务器是否正常运行:mount 主机ip:/home/arm_os/filesystem/rootfs /mnt7.以root用户启动cutecom,将cutecom配置改为115200 bps,8位,1位停止位,无校验,xmodem,no line end;8.使用bootloader重新下载Linux核心映像,启动核心运行后,察看是否成功加载nfs上的root文件系统;9.启动Linux核心运行,察看结果;10.linux核心能够运行到加载root步骤,说明bootloader正常运行;11.将bootloader烧写到flash中,重启目标板电源,察看bootloader是否烧写正常,下载核心测试;目标板linux系统正常运行到命令行模式下,能够正常输入linux命令,说明实验成功。
华中科技⼤学计算机⽹络实验报告计算机⽹络实验报告班级:电信0904姓名:XX学号:U200913693实验四:⽹络协议与Web通信⼀、实验⽬的1.了解⽹络协议数据单元的格式2.分析⽹络协议⼯作基本流程3.深⼊理解Web应⽤的通信过程⼆、实验内容1.⽹络协议数据单元分析通过wireshark抓取局域⽹数据包并分析各个层次的协议数据单元内容(1)以太⽹帧头(2)IP分组⾸部(3)ARP包(4)ICMP包(ping)2.Web原理实验(1)HTTP协议分析(2)通过socket编程模拟HTTP协议通信过程三、实验原理1.Web通信经过四个步骤:(1)建⽴连接(2)客户端发送HTTP REQUEST请求(3)服务器端接收请求,⽣成RESPONSE响应(4)关闭连接2.HTTP协议客户端浏览器或其他程序与Web服务器之间的应⽤层通信协议。
⼀般在Internet 上的Web服务器上存放的都是超⽂本信息,客户机需要通过HTTP协议传输所要访问的超⽂本信息。
四、实验内容及分析1.编译、执⾏参考程序本次实验提供了两个原始程序(NetServer.java和NetClient.java),它们可以实现⼀个服务器/客户端请求响应的完整过程。
Dos环境下先后编译执⾏NetServer.java与NetClient.java,即可得到⼀次完整的客户端向服务器请求并得到响应的完整过程,结果如下:2.修改、编写实验程序参考程序模拟了客户端与服务器之间的对话,但由于其之间交互的数据都是我们设定的⽽不含有http报头信息,因此不能和真正的web服务器与浏览器对话,以下即为实现⾃制web服务器的⽅法(1)利⽤⾃制的服务器获取真正浏览器的HTTP Request 报头信息:运⾏⾃制的服务器,默认监听端⼝8080,在浏览器中输⼊以下⽹址http://127.0.0.1:8080/new/main/UserLoad.jsp,其中127.0.0.1为本机localhost地址,这样浏览器就会向⾃制服务器发出请求,服务器即可获取http request报头信息。
一、实训背景随着信息技术的飞速发展,我国对计算机专业人才的需求日益增加。
为了提高学生的实践能力,培养符合社会需求的应用型人才,华中科技大学开展了计算机专业实训课程。
本次实训旨在通过实际操作,使学生掌握计算机基础知识和技能,提高学生的动手能力和团队协作能力。
二、实训目标1. 掌握计算机基本操作和常用软件的使用方法;2. 熟悉计算机网络的基本原理和应用;3. 学会使用数据库进行数据管理;4. 提高编程能力和算法设计能力;5. 培养团队合作精神和沟通能力。
三、实训内容1. 计算机基本操作与常用软件(1)操作系统:学习Windows操作系统的基本操作,如文件管理、系统设置等;(2)办公软件:学习Microsoft Office系列软件的使用,包括Word、Excel、PowerPoint等;(3)图像处理软件:学习Photoshop、CorelDRAW等图像处理软件的基本操作。
2. 计算机网络(1)网络基础知识:学习网络拓扑结构、网络协议、IP地址等基本概念;(2)网络设备:学习路由器、交换机等网络设备的基本原理和应用;(3)网络编程:学习TCP/IP协议栈,掌握网络编程的基本方法。
3. 数据库技术(1)数据库基本概念:学习关系型数据库、非关系型数据库的基本概念;(2)SQL语言:学习SQL语言进行数据查询、插入、更新和删除操作;(3)数据库设计:学习数据库设计的基本原则和方法。
4. 编程与算法(1)编程语言:学习C、C++、Java等编程语言的基本语法和编程技巧;(2)数据结构:学习数组、链表、树、图等基本数据结构;(3)算法设计:学习排序、查找、动态规划等常用算法。
5. 团队合作与沟通(1)团队协作:学习团队协作的基本原则和方法,提高团队协作能力;(2)沟通技巧:学习有效的沟通技巧,提高沟通能力。
四、实训过程1. 实训准备在实训开始前,学生需了解实训课程的基本内容和要求,准备好实训所需的教材、软件等。
课程实验报告课程名称:面向对象程序设计实验名称:面向对象的整型队列编程院系:计算机科学与技术专业班级:CS1209班学号:姓名:指导教师:李春花2015年01月22日一、需求分析1.题目要求整型队列是一种先进后出的存储结构,对其进行的操作通常包括判断队列是否为空、向队列顶添加一个整型元素、出队列等。
整型队列类型及其操作函数采用面向对象的C++语言定义,请将完成上述操作的所有函数采用C++编程,然后写一个main函数对队列的所有操作函数进行测试。
注意,请用实验三的SATCK组合形成新的类QUEQUE。
请说明如果删掉virtual有什么不同。
class QUEUE{STACK s1,s2;public:QUEUE(int m);//初始化队列:每个栈最多m个元素QUEUE(const QUEUE&s);//用队列s拷贝初始化队列virtual operator int()const;//返回队列的实际元素个数virtual QUEUE&operator<<(int e);//将e入队列,并返回队列virtual QUEUE&operator>>(int&e);//出队列到e,并返回队列virtual QUEUE&operator=(const QUEUE&s);//赋s给队列,并返回被赋值的队列virtual void print()const;//打印队列virtual~QUEUE();//销毁队列};2.需求分析采用面向对象的C++语言定义,构建整型队列并对其进行的操作通常包括判断队列是否为空、向队列顶添加一个整型元素、出队列等,再写一个main函数对队列的所有操作函数进行测试。
二、系统设计用两个栈实现队列,先判栈S2是否为空,如果为空,对S1进行入栈操作,如果不是空,栈S2数据元素倒入到S1,然后对S1进行入栈操作。
出队列时。
数字逻辑实验报告姓名:专业班级:学号:指导老师:完成时间:实验一:组合逻辑电路的设计一、实验目的:1. 掌握组合逻辑电路的功能测试。
2. 验证半加器和全加器的逻辑功能 3. 学会二进制的运算规律。
二、实验器材:二输入四与门74LS08,二输入四与非门74LS00,二输入四异或门74LS86,六门反向器74LS04芯片,三输入三与非门74L10,电线若干。
三、实验A 内容:内容A :全加全减器 实验要求:一位全加/全减法器,如图所示:四、实验A 步骤:按照所给定的实验要求填写出F1,F2理论上的真值表。
1.给出该实验的真值表:SCo2.根据真值表给出F1和F2的卡诺图:3. 根据逻辑表达式作出电路的平面图:4.记录实验结果如以下表格五、实验B内容:内容B:舍入与检测电路的设计:实验要求:用所给定的集合电路组件设计一个多输出逻辑电路,该电路的输入为8421码,F1为“四舍五入”输出信号,F2为奇偶检测输出信号。
当电路检测到输入的代码大宇或等于(5)10时,电路的输出F1=1;其他情况F1=0。
当输入代码中含1的个数为奇数时,电路的输出F2=1,其他情况F2=0。
该电路的框图如下所示:(1)按照所设计的电路图接线,注意将电路的输入端接试验台的开关,通过拨动开关输入8421代码,电路输入按至试验台显示灯。
(2)每输入一个代码后观察显示灯,并将结果记录在输入/输出观察表中。
六、实验B步骤:1.按照所给定的逻辑电路画出真值表2.根据真值表给出F1和F2的卡诺图。
3.根据逻辑表达式画出电路的平面图:1.检查导线和芯片是否完好无损坏,根据电路图和逻辑表达式连接电路。
2.波动开关输入8421代码,观察显示灯的状况并填写出实际的F1,F2取值表,并与理论值相对比,确定电路连接是否正确。
4.记录实验结果如以下表格七、回答思考题:1.化简包含无关条件的逻辑函数时应注意什么?答:当采用最小项之和表达式描述一个包含无关条件的逻辑问题时,函数表达式中的无关项是令其值为1还是为0,并不影响函数的实际逻辑功能。
课程实验报告课程名称:计算机系统基础专业班级:学号:姓名:指导教师:报告日期:2016年5月24 日计算机科学与技术学院目录实验1: (3)实验2: (13)实验3: (28)实验总结 (37)实验1:数据表示1.1 实验概述本实验的目的是更好地熟悉和掌握计算机中整数和浮点数的二进制编码表示。
实验中,你需要解开一系列编程“难题”——使用有限类型和数量的运算操作实现一组给定功能的函数,在此过程中你将加深对数据二进制编码表示的了解。
实验语言:c; 实验环境: linux1.2 实验内容需要完成bits.c 中下列函数功能,具体分为三大类:位操作、补码运算和浮点数操作。
1.3 实验设计源码如下:/** lsbZero - set 0 to the least significant bit of x* Example: lsbZero(0x87654321) = 0x87654320* Legal ops: ! ~ & ^ | + << >>* Max ops: 5* Rating: 1*/int lsbZero(int x) {//x右移一位再左移一位实现把最低有效位置0x = x>>1;x = x<<1;return x;}/** byteNot - bit-inversion to byte n from word x* Bytes numbered from 0 (LSB) to 3 (MSB)* Examples: getByteNot(0x12345678,1) = 0x1234A978* Legal ops: ! ~ & ^ | + << >>* Max ops: 6* Rating: 2*/int byteNot(int x, int n) {//x第n个字节每位都和1异或实现取反int y = 0xff;n = n<<3;y = y<<n;x = (x^y);return x;}/** byteXor - compare the nth byte of x and y, if it is same, return 0, ifnot, return 1* example: byteXor(0x12345678, 0x87654321, 1) = 1* byteXor(0x12345678, 0x87344321, 2) = 0* Legal ops: ! ~ & ^ | + << >>* Max ops: 20* Rating: 2*/int byteXor(int x, int y, int n) {//把x和y的第n个字节取出来异或,再转换为逻辑的0和1 n = n<<3;x = x>>n;y = y>>n;x = x&(0xff);y = y&(0xff);return !!(x^y);}/** logicalAnd - x && y* Legal ops: ! ~ & ^ | + << >>* Max ops: 20* Rating: 3*/int logicalAnd(int x, int y) {//把x和y分别转化为逻辑的0和1,再相与x = (!(!x))&(!(!y));return x;}/** logicalOr - x || y* Legal ops: ! ~ & ^ | + << >>* Max ops: 20* Rating: 3*/int logicalOr(int x, int y) {//把x和y分别转化为逻辑的0和1,再相或x = (!(!x))|(!(!y));return x;}/** rotateLeft - Rotate x to the left by n* Can assume that 0 <= n <= 31* Examples: rotateLeft(0x87654321,4) = 0x76543218 * Legal ops: ~ & ^ | + << >> !* Max ops: 25* Rating: 3*/int rotateLeft(int x, int n) {//先构造低n位为1,高(32-n)位为0的数z,x左移n位后的数加上x右移(32-n)位的数&z即可int z;z = ~(((1<<31)>>31)<<n);x = ((x>>(32+(~n+1)))&z)+(x<<n);return x;}/** parityCheck - returns 1 if x contains an odd number of 1's* Examples: parityCheck(5) = 0, parityCheck(7) = 1* Legal ops: ! ~ & ^ | + << >>* Max ops: 20* Rating: 4*/int parityCheck(int x) {//每次将数的低半数位与高半数位比较,再把y右移31位,最后把y转化为逻辑的0和1int y;y = x<<16;y = y^x;y = y^(y<<8);y = y^(y<<4);y = y^(y<<2);y = y^(y<<1);y = y>>31;return !(!y);}/** mul2OK - Determine if can compute 2*x without overflow * Examples: mul2OK(0x30000000) = 1* mul2OK(0x40000000) = 0** Legal ops: ~ & ^ | + << >>* Max ops: 20* Rating: 2*/int mul2OK(int x) {//把x第31位和30位分别和1做按位与,再异或,再和1异或int m;m = ((x>>31)&0x1)^((x>>30)&0x1);return m^0x1;}/** mult3div2 - multiplies by 3/2 rounding toward 0,* Should exactly duplicate effect of C expression (x*3/2),* including overflow behavior.* Examples: mult3div2(11) = 16* mult3div2(-9) = -13* mult3div2(1073741824) = -536870912(overflow)* Legal ops: ! ~ & ^ | + << >>* Max ops: 12* Rating: 2*/int mult3div2(int x) {//左移一位再+x即x*3,右移一位的时候,当y的最高位和最低位都为0时还要+1int y = (x<<1)+x;y = (y>>1)+(((y>>31)&1)&(((y<<31)>>31)&1));return y;}/** subOK - Determine if can compute x-y without overflow* Example: subOK(0x80000000,0x80000000) = 1,* subOK(0x80000000,0x70000000) = 0,* Legal ops: ! ~ & ^ | + << >>* Max ops: 20* Rating: 3*/int subOK(int x, int y) {//x的最高有效位和y的最高有效位不同且x和(x-y)的最高位不同才能判断溢出int m = (x>>31)&1;int n = (y>>31)&1;x = (m^n)&(m^(((x+(~y+1))>>31)&1));return (!x);}/** absVal - absolute value of x* Example: absVal(-1) = 1.* You may assume -TMax <= x <= TMax* Legal ops: ! ~ & ^ | + << >>* Max ops: 10* Rating: 4*/int absVal(int x) {//x最高位为0时就是x,最高位为1时是~x+1int y = x>>31;x = (y&(~x+1))+((~y)&x);return x;}/** float_abs - Return bit-level equivalent of absolute value of f for* floating point argument f.* Both the argument and result are passed as unsigned int's, but* they are to be interpreted as the bit-level representations of* single-precision floating point values.* When argument is NaN, return argument..* Legal ops: Any integer/unsigned operations incl. ||, &&. also if, while * Max ops: 10* Rating: 2*/unsigned float_abs(unsigned uf) {int x=uf&(~(1<<31));if(x>0x7f800000){return uf;else return x;}/** float_f2i - Return bit-level equivalent of expression (int) f* for floating point argument f.* Argument is passed as unsigned int, but* it is to be interpreted as the bit-level representation of a* single-precision floating point value.* Anything out of range (including NaN and infinity) should return * 0x80000000u.* Legal ops: Any integer/unsigned operations incl. ||, &&. also if, while * Max ops: 30* Rating: 4*/int float_f2i(unsigned uf) {unsigned num=0x80000000;int x=(uf&0x007fffff)^0x00800000;int order=0;order=(uf&0x7f800000)>>23;if(order>158){return num;if(order<127) return 0;else if(((uf>>31)&1)==1){if(order>150){return ~(x<<(order-150))+1;}else return ~(x>>(150-order))+1;}else{if(order>150) return x<<(order-150);else return x>>(150-order);}}1.4 实验过程编写源码,运行btest,得出实验结果。
课程实验报告课程实验名称:_算法设计与分析实验设计专业班级:学号:__姓名:____指导教师:王多强_报告日期: 2013年6月15日计算机科学与技术学院目录一、实验题目 (2)二、理论方法 (2)三、算法描述 (3)四、代码实现 (4)1.模块一:基本算法 (4)2.模块二:输出结果 (5)1)输出C(0,n),W(0,n),R(0,n) (5)2)从上至下,输出每个节点的左右节点 (5)五、实验结果截图 (6)六、计算时间分析 (6)七、实验体会 (7)八、源代码 (7)12一、 实验题目在二分检索树中,为了把动态规划应用于得到一颗最优二分检索树的问题,需要把构造这样的一个数看成是一系列决策的结果,而且要能列出求取最优决策序列的递推式。
二、 理论方法解决上述问题的一种可能方法是对{a 1,a 2,…,a n } (a 1<a 2 < … < a n )的二分检索树,若a k 是该树的根,则内结点a 1,a 2,…,a k-1和外部结点E 0,E 1,…,E k-1将位于根a k 的左子树L 中,而其余的结点 a k +1, a k+2, …,a n 及E k ,E k+1,…,E n 将位于右子树R 中。
含义:左、右子树的预期成本。
这里,将左、右子树的根作为第一级来统计左、右子树中所有结点的级数,该级数等于相对原树根的级数-1。
若:level T (X)为结点X 在树T 中的级数,level(X)为X 在T 的 左/右子树中的级数,则:level T (X) = level(X)+1∑∑∑∑∑∑∑∑∑∑∑∑∑∑≤≤≤≤+≤≤≤≤+≤≤≤≤≤≤≤≤≤≤∈≤≤+∈≤≤∈≤≤∈≤≤≤≤++-++++-++=-++++-++++=-+=ni k ni 1k ni k ni 1k 1-k i 01-k i 11-k i 01-k i 1ni k 右子树E ni 1k 右子树a 1-k i 0左子树E 1-k i 1左子树a ni 0ni 1Q(i)P(i) )1)((*Q(i))(*P(i) Q(i)P(i) )1)((*Q(i))(*P(i)P(k) )1)1)((*Q(i))1)((*P(i) )1)1)((*Q(i))1)((*P(i))( )1)((*Q(i))(*P(i))(COST i i i i i i i i i i i i i T i T E level a level E level a level E level a level E level a level k P E level a level T 证明最优性原理对于上述问题是成立的:∑∑<≤<≤-+=k i iki iE level i Q a level i P L COST 01)1((*)()(*)()(∑∑≤≤≤<-+=ni k ini k iE level i Q a level i P R COST )1((*)()(*)()(若以ak 为根的二分检索树T是关于集合{a1,a2,…,an}的一棵最优二分检索树,L、R分别是ak 的左子树和右子树,L包含结点a1,a2,…,ak-1和E,E1,…,Ek-1、R包含结点及ak+1, ak+2, …,an和Ek,Ek+1,…,En,则L和R必是相应集合的最优二分检索树。
华中科技大学计算机学院《计算机网络》实验报告实验名称网络组建与实施及SOCKET编程_团队成员:姓名班级学号贡献百分比得分姚富品Cs1105 U201113625 40%刘华涧Cs1105 60%注:团队成员贡献百分比之和为1教师评语:实验一网络组建与实施一.实验环境Boson Netsim仿真软件(版本号为5.31).WINDOWS 7 操作系统二.实验目的1,了解IP协议,网络层协议和数据链路层协议的工作原理及机制.2,掌握IP地址的规划方法3,掌握路由协议的配置方法4,掌握路由器及二/三层交换机的配置方法5,了解VLAN的划分原理6,掌握访问控制的配置方法三.实验内容及过程本实验所用的2张拓扑结构图分别如图1.1与图1.2:该实验分为四个试验,各试验分别如下:第一项试验----组网试验:试验要求:使用仿真软件描述网络拓扑图1.1。
按照如下要求进行IP 地址规划:将PC1、PC2 设置在同一个网段,子网地址是:192.168.0.0,PC3~PC8 设置在同一个网段,子网地址是:192.168.1.0同时为路由器配置端口地址,使得两个子网内部的各PC 机之间可以自由通信。
按照如下要求重新设置各PC 机IP 地址:PC1 与 PC2 在一个网段,子网地址是:192.168.0.0;PC3,PC5,PC7 在一个网段,子网地址是:192.168.1.0;PC4,PC6,PC8 在一个网段,子网地址是:192.168.2.0;为路由器配置端口地址分析各PC 机之间的连通性并对分析结果进行测试,同时使用所学理论知识对测试结果进行再分析试验过程:首先使用Net Designer软件画出图1.1所示的网络拓扑结构图,然后使用该结构图转到Boson_NetSim软件下,按照如下要求配置各PC机的IP地址:IP地址子网掩码默认网关PC1 192.168.0.2 255.255.255.0 192.168.0.1PC2 192.168.0.3 255.255.255.0 192.168.0.1PC3 192.168.1.2 255.255.255.0 192.168.1.1PC4 192.168.2.2 255.255.255.0 192.168.2.1PC5 192.168.1.3 255.255.255.0 192.168.1.1PC6 192.168.2.3 255.255.255.0 192.168.2.1PC7 192.168.1.3 255.255.255.0 192.168.1.1PC8 192.168.2.3 255.255.255.0 192.168.2.1这时,PC1与PC2 , PC3与PC5与PC7 , PC4与PC6与PC8之间可以互相连通,然后配置路由器端口地址如下:Router(config)# int fa0/0Router(config-if)# ip addr 192.168.0.1 255.255.255.0Router(config-if)# no shutdownRouter(config-if)# exitRouter(config)# int fa0/1Router(config-if)# no shutdownRouter(config-if)# exitRouter(config)# int fa0/1.1Router(config-subif)# ip addr 192.168.1.1 255.255.255.0Router(config-subif)#no shutdownRouter(config-subif)# exitRouter(config)# int fa0/1.2Router(config-subif)# ip addr 192.168.2.1 255.255.255.0Router(config-subif)#no shutdownRouter(config-subif)# end这样配置路由器端口地址之后,各PC机之间都能够相互连通.第二项试验----路由器配置试验实验要求:使用仿真软件描述网络拓扑图1.2按照如下要求配置RIP 协议:设置各PC 机IP 地址:PC1 处于192.168.1.0 网段;PC2 处于192.168.2.0 网段;PC3 处于192.168.3.0 网段;PC4 处于192.168.4.0 网段设置路由器端口的IP 地址在路由器上配置RIP 协议,使各PC 机能互相访问思考题(进阶)如果不设置时钟频率,会出现什么现象在路由器上重新配置OSPF 协议,使各PC 机能互相访问试验过程:首先按照如下要求配置各PC的IP地址IP地址子网掩码默认网关PC1 192.168.0.2 255.255.255.0 192.168.0.1PC2 192.168.1.2 255.255.255.0 192.168.1.1PC3 192.168.2.2 255.255.255.0 192.168.2.1PC4 192.168.3.2 255.255.255.0 192.1683.1路由器的配置如下:首先配置路由器的基本参数Router1的配置Router>enableRouter#conf tRouter(config)#interface fa0/0Router(config-if)#ip address 192.168.0.1 255.255.255.0 Router(config-if)#no shutRouter(config-if) #int s0Router(config-if)#ip address 192.168.4.1 255.255.255.0 Router(config-if)#cl ra 64000Router(config-if)#no shutRouter(config-if) #int s1Router(config-if)#ip address 192.168.5.1 255.255.255.0 Router(config-if)#cl ra 64000Router(config-if)#no shutRouter(config-if)#endRouter2的配置Router>enableRouter#conf tRouter(config)#interface fa0/0Router(config-if)#ip address 192.168.1.1 255.255.255.0 Router(config-if)#no shutRouter(config-if) #int s0Router(config-if)#ip address 192.168.4.2 255.255.255.0 Router(config-if)#cl ra 64000Router(config-if)#no shutRouter(config-if) #int s1Router(config-if)#ip address 192.168.6.1 255.255.255.0 Router(config-if)#cl ra 64000Router(config-if)#no shutRouter(config-if)#endRouter3的配置Router>enableRouter#conf tRouter(config)#interface fa0/0Router(config-if)#ip address 192.168.2.1 255.255.255.0 Router(config-if)#no shutRouter(config-if) #int s0Router(config-if)#ip address 192.168.5.2 255.255.255.0 Router(config-if)#cl ra 64000Router(config-if)#no shutRouter(config-if) #int s1Router(config-if)#ip address 192.168.6.2 255.255.255.0Router(config-if)#cl ra 64000Router(config-if)#no shutRouter(config-if) #int s2Router(config-if)#ip address 192.168.7.1 255.255.255.0 Router(config-if)#cl ra 64000Router(config-if)#no shutRouter(config-if)#endRouter4的配置Router>enableRouter#conf tRouter(config)#interface fa0/0Router(config-if)#ip address 192.168.3.1 255.255.255.0 Router(config-if)#no shutRouter(config-if) #int s0Router(config-if)#ip address 192.168.7.2 255.255.255.0 Router(config-if)#cl ra 64000Router(config-if)#no shutRouter(config-if)#end然后进行RIP协议配置:在路由器Router1 上配置RIP 协议Router#conf tRouter(config)#router ripRouter(config-router)#network 192.168.0.0Router(config-router)#network 192.168.4.0Router(config-router)#network 192.168.5.0Router(config-router)#end在路由器Router2 上配置RIP 协议Router#conf tRouter(config)#router ripRouter(config-router)#network 192.168.1.0Router(config-router)#network 192.168.4.0Router(config-router)#network 192.168.6.0Router(config-router)#end在路由器Router3 上配置RIP 协议Router#conf tRouter(config)#router ripRouter(config-router)#network 192.168.2.0Router(config-router)#network 192.168.5.0Router(config-router)#network 192.168.6.0Router(config-router)#network 192.168.7.0Router(config-router)#end在路由器Router4 上配置RIP 协议Router#conf tRouter(config)#router ripRouter(config-router)#network 192.168.3.0Router(config-router)#network 192.168.7.0Router(config-router)#end配置完了之后各PC机之间能够相互通信.第三项试验----VLAN划分试验试验要求:在第一项试验的最终配置结果上进行VLAN 划分划分VLAN,并按照如下所述配置各VLAN 的访问权限:将交换机2、交换机3、交换机4 组成的部分网络(路由器A 右部网络)划分成2 个VLAN: PC3、PC5、PC7 处于一个VLAN;PC4、PC6、PC8 处于一个VLAN。