当前位置:文档之家› 数据结构实验-男女运动员混合双打组合实验报告

数据结构实验-男女运动员混合双打组合实验报告

数据结构实验-男女运动员混合双打组合实验报告
数据结构实验-男女运动员混合双打组合实验报告

实验报告

实验课程:数据结构

实验项目:实验二男女运动员混合双打组合专业:计算机科学与技术

班级:

姓名:

学号:

指导教师:

目录一、问题定义及需求分析

(1)问题描述

(2)实验任务

(3)需求分析

二、概要设计:

(1)抽象数据类型定义

(2)主程序流程

(3) 模块关系

三、详细设计

(1)数据类型及存储结构

(2)模块设计

四、调试分析

(1)调试分析

(2)算法时空分析

(3)经验体会

五、使用说明

(1)程序使用说明

六、测试结果

(1)运行测试结果截图

七、附录

(1)源代码

一、问题定义及需求分析

(1) 问题描述

运动员混合双打组合

设有M个男羽毛球运动员和N个女羽毛球运动员,现进行男女混合双打组合K轮配对。男女运动员分别编号排队在等候队列,按顺序依次从男女运动员中各出队1人组合配对。本轮没成功配对者等待下一轮次配对。

(2)实验任务

设计程序模拟完成运动员组合配对过程。

(3)需求分析

1)采用队列等数据结构。

2)输出每轮的配对信息。

二、概要设计:

(1)抽象数据类型定义:

采用链式存储结构构造单链队列,以及队列的基本操作函数,包括:

int InitQueue(LinkQueue *Q)//构造一个空队列

int EnQueue(LinkQueue *Q, int e)//入队列

int DeQueue(LinkQueue *Q, int *e) //出队列

(2)主程序流程

输入男女两队的人数输入比赛的轮数构造两个队列M和N 依次对两队列进行入队操作在循环体中先M出队后N出队输出出队元素信息进行匹配再将出队元素入队尾第二次出对入队实现两次匹配满足需求

完成比赛需要的轮数后跳出循环结束程序

(3)模块关系

开始

输入男女队人数m、n

输入比赛轮数

构造队列M N

循环体完成匹配

结束

三、详细设计

数据类型定义及存储结构:

typedef struct QNode{

QNodeType data;

struct QNode *next;

}QNode, *QueuePtr; //节点的结构

typedef struct{

QueuePtr f ront;//队头指针

QueuePtr r ear;//队尾指针

}LinkQueue;

模块一:

int InitQueue(LinkQueue *Q){//构造一个空队列

Q->front = Q->rear = (QueuePtr)malloc(sizeof(QNode));

if (!Q->front)exit(0);

Q->front->next = NULL;

return 1;

}

模块二:

int EnQueue(LinkQueue *Q, int e)

{//入队列

QNode *p;

p = (QueuePtr)malloc(sizeof(QNode));

if (!p)exit(0); //存储分配失败

p->data = e;

p->next = NULL;

Q->rear->next = p;//p插到尾指针的下一个位置

Q->rear = p;//再将尾指针指向p

return 0;

}

模块三:

int DeQueue(LinkQueue *Q, int *e){ //出队列

QNode *p;

p = (QueuePtr)malloc(sizeof(QNode));

if (Q->front == Q->rear)return 0; //队列为空,出队失败p = Q->front->next;//p指向头指针指向的下一个节点

*e = p->data;//获得出队节点的数据信息

Q->front->next = p->next;

if (Q->rear == p) Q->rear = Q->front;//出队完成后队列为空free(p);//释放P

return 1;

}

四、调试分析

问题解决:

for循环的结束条件一开始设定错误,导致输出匹配信息的时候少数出一次;将结束条件改为i<=(m*k/2+1)后就解决了;原因是k的奇偶性会影响到i的结束条件;

时空分析:由于采用链式存储结构,所以队列的大小可以根据输入条件而变,再存储空间上空间利用率较高;出队和入队操作只涉及到队头和队尾指针的移动,其时间复杂度为O(1);

经验体会:

链式队列的一个很大的优点就是队列的可变性强,再存储空间分配上比较容易满足,因此,链式队列的实用性更好;

五、使用说明

第一步:输入男女两队的人数和比赛的轮数

第二步:程序根据以上输入的数据可自动输出匹配完成的信息

六、测试截屏

七、附录

#include

typedef int QNodeType;

typedef struct QNode{

QNodeType data;

struct QNode *next;

}QNode, *QueuePtr; //节点的结构

typedef struct{

QueuePtr f ront;//队头指针

QueuePtr r ear;//队尾指针

}LinkQueue;

int InitQueue(LinkQueue *Q){//构造一个空队列

Q->front = Q->rear = (QueuePtr)malloc(sizeof(QNode));

if (!Q->front)exit(0);

Q->front->next = NULL;

return 1;

}

int EnQueue(LinkQueue *Q, int e)

{//入队列

QNode *p;

p = (QueuePtr)malloc(sizeof(QNode));

if (!p)exit(0); //存储分配失败

p->data = e; //p获得数据信息

p->next = NULL;

Q->rear->next = p;//p插到尾指针的下一个位置

Q->rear = p;//再将尾指针指向p

return 0;

}

int DeQueue(LinkQueue *Q, int *e){ //出队列

QNode *p;

p = (QueuePtr)malloc(sizeof(QNode));

if (Q->front == Q->rear)return 0; //队列为空,出队失败p = Q->front->next;//p指向头指针指向的下一个节点

*e = p->data;//获得出队节点的数据信息

Q->front->next = p->next;

if (Q->rear == p) Q->rear = Q->front;//出队完成后队列为空free(p);//释放P

return 1;

}

void main()

{

int m, n, k;

printf("请输入队M队员数量:");

scanf("%d",&m);

printf("请输入队N队员数量:");

scanf("%d", &n);

printf("请输入需要比赛的轮数K:");

scanf("%d", &k);

//接受MNK

LinkQueue *M, *N;

M = (QueuePtr)malloc(sizeof(QNode));

N = (QueuePtr)malloc(sizeof(QNode));

//给M队输入一个队列

InitQueue(M); //初始化队列M

int i;

for (i = 1; i <= m; i++)

{

EnQueue(M,i);

}

//给N队输入一个队列

InitQueue(N);

for (i = 1; i <= n; i++)

{

EnQueue(N, i);

}

int *a, *b,c=1,d=1;

a = &d;

b = &c;

for (i = 1; i<=(m*k/2+1);i++)

{

DeQueue(M, a); //队列M中元素先出队列

DeQueue(N, b); //队列N中元素先出队列

printf("m%d & f%d VS ", *a, *b);

EnQueue(M, *a); //出队后再入队实现多轮循环

EnQueue(N, *b);

DeQueue(M, a); //实现两次两队元素出队匹配

DeQueue(N, b);

printf("m%d & f%d", *a, *b);

EnQueue(M, *a);

EnQueue(N, *b);

printf("\n");

}

getchar();

}

数据结构实验报告格式

《数据结构课程实验》大纲 一、《数据结构课程实验》的地位与作用 “数据结构”是计算机专业一门重要的专业技术基础课程,是计算机专业的一门核心的关键性课程。本课程较系统地介绍了软件设计中常用的数据结构以及相应的存储结构和实现算法,介绍了常用的多种查找和排序技术,并做了性能分析和比较,内容非常丰富。本课程的学习将为后续课程的学习以及软件设计水平的提高打下良好的基础。 由于以下原因,使得掌握这门课程具有较大的难度: (1)内容丰富,学习量大,给学习带来困难; (2)贯穿全书的动态链表存储结构和递归技术是学习中的重点也是难点; (3)所用到的技术多,而在此之前的各门课程中所介绍的专业性知识又不多,因而加大了学习难度; (4)隐含在各部分的技术和方法丰富,也是学习的重点和难点。 根据《数据结构课程》课程本身的技术特性,设置《数据结构课程实验》实践环节十分重要。通过实验实践内容的训练,突出构造性思维训练的特征, 目的是提高学生组织数据及编写大型程序的能力。实验学时为18。 二、《数据结构课程实验》的目的和要求 不少学生在解答习题尤其是算法设计题时,觉得无从下手,做起来特别费劲。实验中的内容和教科书的内容是密切相关的,解决题目要求所需的各种技术大多可从教科书中找到,只不过其出现的形式呈多样化,因此需要仔细体会,在反复实践的过程中才能掌握。 为了帮助学生更好地学习本课程,理解和掌握算法设计所需的技术,为整个专业学习打好基础,要求运用所学知识,上机解决一些典型问题,通过分析、设计、编码、调试等各环节的训练,使学生深刻理解、牢固掌握所用到的一些技术。数据结构中稍微复杂一些的算法设计中可能同时要用到多种技术和方法,如算法设计的构思方法,动态链表,算法的编码,递归技术,与特定问题相关的技术等,要求重点掌握线性链表、二叉树和树、图结构、数组结构相关算法的设计。在掌握基本算法的基础上,掌握分析、解决实际问题的能力。 三、《数据结构课程实验》内容 课程实验共18学时,要求完成以下六个题目: 实习一约瑟夫环问题(2学时)

数字逻辑个性课实验报告

学生学号0121410870432实验成绩 学生实验报告书 实验课程名称逻辑与计算机设计基础 开课学院计算机科学与技术学院 指导教师姓名肖敏 学生姓名付天纯 学生专业班级物联网1403 2015--2016学年第一学期

译码器的设计与实现 【实验要求】: (1)理解译码器的工作原理,设计并实现n-2n译码器,要求能够正确地根据输入信号译码成输出信号。(2)要求实现2-4译码器、3-8译码器、4-16译码器、8-28译码器、16-216译码器、32-232译码器。 【实验目的】 (1)掌握译码器的工作原理; (2)掌握n-2n译码器的实现。 【实验环境】 ◆Basys3 FPGA开发板,69套。 ◆Vivado2014 集成开发环境。 ◆Verilog编程语言。 【实验步骤】 一·功能描述 输入由五个拨码开关控制,利用led灯输出32种显示 二·真值表

三·电路图和表达式

四·源代码 module decoder_5( input [4:0] a, output [15:0] d0 ); reg [15:0] d0; reg [15:0] d1; always @(a) begin case(a) 5'b00000 :{d1,d0}=32'b1000_0000_0000_0000_0000_0000_0000_0000; 5'b00001 :{d1,d0}=32'b0100_0000_0000_0000_0000_0000_0000_0000; 5'b00010 :{d1,d0}=32'b0010_0000_0000_0000_0000_0000_0000_0000; 5'b00011 :{d1,d0}=32'b0001_0000_0000_0000_0000_0000_0000_0000; 5'b00100 :{d1,d0}=32'b0000_1000_0000_0000_0000_0000_0000_0000; 5'b00101 :{d1,d0}=32'b0000_0100_0000_0000_0000_0000_0000_0000; 5'b00110 :{d1,d0}=32'b0000_0010_0000_0000_0000_0000_0000_0000; 5'b00111 :{d1,d0}=32'b0000_0001_0000_0000_0000_0000_0000_0000; 5'b01000 :{d1,d0}=32'b0000_0000_1000_0000_0000_0000_0000_0000; 5'b01001 :{d1,d0}=32'b0000_0000_0100_0000_0000_0000_0000_0000; 5'b01010 :{d1,d0}=32'b0000_0000_0010_0000_0000_0000_0000_0000; 5'b01011 :{d1,d0}=32'b0000_0000_0001_0000_0000_0000_0000_0000; 5'b01100 :{d1,d0}=32'b0000_0000_0000_1000_0000_0000_0000_0000; 5'b01101 :{d1,d0}=32'b0000_0000_0000_0100_0000_0000_0000_0000; 5'b01110 :{d1,d0}=32'b0000_0000_0000_0010_0000_0000_0000_0000; 5'b01111 :{d1,d0}=32'b0000_0000_0000_0001_0000_0000_0000_0000; 5'b10000 :{d1,d0}=32'b0000_0000_0000_0000_1000_0000_0000_0000; 5'b10001 :{d1,d0}=32'b0000_0000_0000_0000_0100_0000_0000_0000; 5'b10010 :{d1,d0}=32'b0000_0000_0000_0000_0010_0000_0000_0000; 5'b10011 :{d1,d0}=32'b0000_0000_0000_0000_0001_0000_0000_0000; 5'b10100 :{d1,d0}=32'b0000_0000_0000_0000_0000_1000_0000_0000; 5'b10101 :{d1,d0}=32'b0000_0000_0000_0000_0000_0100_0000_0000; 5'b10110 :{d1,d0}=32'b0000_0000_0000_0000_0000_0010_0000_0000; 5'b10111 :{d1,d0}=32'b0000_0000_0000_0000_0000_0001_0000_0000; 5'b11000 :{d1,d0}=32'b0000_0000_0000_0000_0000_0000_1000_0000; 5'b11001 :{d1,d0}=32'b0000_0000_0000_0000_0000_0000_0100_0000; 5'b11010 :{d1,d0}=32'b0000_0000_0000_0000_0000_0000_0010_0000;

数电实验报告 实验二 组合逻辑电路的设计

实验二组合逻辑电路的设计 一、实验目的 1.掌握组合逻辑电路的设计方法及功能测试方法。 2.熟悉组合电路的特点。 二、实验仪器及材料 a) TDS-4数电实验箱、双踪示波器、数字万用表。 b) 参考元件:74LS86、74LS00。 三、预习要求及思考题 1.预习要求: 1)所用中规模集成组件的功能、外部引线排列及使用方法。 2) 组合逻辑电路的功能特点和结构特点. 3) 中规模集成组件一般分析及设计方法. 4)用multisim软件对实验进行仿真并分析实验是否成功。 2.思考题 在进行组合逻辑电路设计时,什么是最佳设计方案? 四、实验原理 1.本实验所用到的集成电路的引脚功能图见附录 2.用集成电路进行组合逻辑电路设计的一般步骤是: 1)根据设计要求,定义输入逻辑变量和输出逻辑变量,然后列出真值表; 2)利用卡络图或公式法得出最简逻辑表达式,并根据设计要求所指定的门电路或选定的门电路,将最简逻辑表达式变换为与所指定门电路相应的形式; 3)画出逻辑图; 4)用逻辑门或组件构成实际电路,最后测试验证其逻辑功能。 五、实验内容 1.用四2输入异或门(74LS86)和四2输入与非门(74LS00)设计一个一位全加器。 1)列出真值表,如下表2-1。其中A i、B i、C i分别为一个加数、另一个加数、低位向本位的进位;S i、C i+1分别为本位和、本位向高位的进位。 2)由表2-1全加器真值表写出函数表达式。

3)将上面两逻辑表达式转换为能用四2输入异或门(74LS86)和四2输入与非门(74LS00)实现的表达式。 4)画出逻辑电路图如图2-1,并在图中标明芯片引脚号。按图选择需要的集成块及门电路连线,将A i、B i、C i接逻辑开关,输出Si、Ci+1接发光二极管。改变输入信 号的状态验证真值表。 2.在一个射击游戏中,每人可打三枪,一枪打鸟(A),一枪打鸡(B),一枪打兔子(C)。 规则是:打中两枪并且其中有一枪必须是打中鸟者得奖(Z)。试用与非门设计判断得奖的电路。(请按照设计步骤独立完成之) 五、实验报告要求: 1.画出实验电路连线示意图,整理实验数据,分析实验结果与理论值是否相等。 2.设计判断得奖电路时需写出真值表及得到相应输出表达式以及逻辑电路图。 3.总结中规模集成电路的使用方法及功能。

数据结构实验报告

数据结构实验报告 一.题目要求 1)编程实现二叉排序树,包括生成、插入,删除; 2)对二叉排序树进行先根、中根、和后根非递归遍历; 3)每次对树的修改操作和遍历操作的显示结果都需要在屏幕上用树的形状表示出来。 4)分别用二叉排序树和数组去存储一个班(50人以上)的成员信息(至少包括学号、姓名、成绩3项),对比查找效率,并说明在什么情况下二叉排序树效率高,为什么? 二.解决方案 对于前三个题目要求,我们用一个程序实现代码如下 #include #include #include #include "Stack.h"//栈的头文件,没有用上 typedefintElemType; //数据类型 typedefint Status; //返回值类型 //定义二叉树结构 typedefstructBiTNode{ ElemType data; //数据域 structBiTNode *lChild, *rChild;//左右子树域 }BiTNode, *BiTree; intInsertBST(BiTree&T,int key){//插入二叉树函数 if(T==NULL) { T = (BiTree)malloc(sizeof(BiTNode)); T->data=key; T->lChild=T->rChild=NULL; return 1; } else if(keydata){ InsertBST(T->lChild,key); } else if(key>T->data){ InsertBST(T->rChild,key); } else return 0; } BiTreeCreateBST(int a[],int n){//创建二叉树函数 BiTreebst=NULL; inti=0; while(i

华中科技大学计算机学院数字逻辑实验报告2(共四次)

数字逻辑实验报告(2) 姓名: 学号: 班级: 指导教师: 计算机科学与技术学院 20 年月日

数字逻辑实验报告(2)无符号数的乘法器设计

一、无符号数的乘法器设计 1、实验名称 无符号数的乘法器的设计。 2、实验目的 要求使用合适的逻辑电路的设计方法,通过工具软件logisim进行无符号数的乘法器的设计和验证,记录实验结果,验证设计是否达到要求。 通过无符号数的乘法器的设计、仿真、验证3个训练过程,使同学们掌握数字逻辑电路的设计、仿真、调试的方法。 3、实验所用设备 Logisim2.7.1软件一套。 4、实验内容 (1)四位乘法器设计 四位乘法器Mul4 4实现两个无符号的4位二进制数的乘法运算,其结构框图如图3-1所示。设被乘数为b(3:0),乘数为a(3:0),乘积需要8位二进制数表示,乘积为p(7:0)。 图3-1 四位乘法器结构框图 四位乘法器运算可以用4个相同的模块串接而成,其内部结构如图3-2所示。每个模块均包含一个加法器、一个2选1多路选择器和一个移位器shl。 图3-2中数据通路上的数据位宽都为8,确保两个4位二进制数的乘积不会发生溢出。shl是左移一位的操作,在这里可以不用逻辑器件来实现,而仅通过数据连线的改变(两个分线器错位相连接)就可实现。

a(0)a(1)a(2)a(3) 图3-2 四位乘法器内部结构 (2)32 4乘法器设计 32 4乘法器Mul32 4实现一个无符号的32位二进制数和一个无符号的4位二进制数的乘法运算,其结构框图如图3-3所示。设被乘数为b(31:0),乘数为a(3:0),乘积也用32位二进制数表示,乘积为p(31:0)。这里,要求乘积p能用32位二进制数表示,且不会发生溢出。 图3-3 32 4乘法器结构框图 在四位乘法器Mul4 4上进行改进,将数据通路上的数据位宽都改为32位,即可实现Mul32 4。 (3)32 32乘法器设计 32 32乘法器Mul32 32实现两个无符号的32位二进制数的乘法运算,其结构框图如图3-4所示。设被乘数为b(31:0),乘数为a(31:0),乘积也用32位二进制数表示,乘积为p(31:0)。这里,要求乘积p能用32位二进制数表示,且不会发生溢出。 图3-4 32 32乘法器结构框图 用32 4乘法器Mul32 4作为基本部件,实现32 32乘法器Mul32 32。 设被乘数为b(31:0)=(b31b30b29b28···b15b14b13b12···b4b3b2b1b0)2 乘数为a(31:0)=(a31a30a29a28···a15a14a13a12···a3a2a1a0)2 =(a31a30a29a28)2 228+···+ ( a15a14a13a12)2 212+···+ (a3a2a1a0)2 20

组合逻辑电路实验报告.docx

篇一:培养基的制备与灭菌实验报告 陕西师范大学远程教育学院 生物学实验报告 报告题目培养基的制备与灭菌 姓名刘伟 学号 专业生物科学 批次/层次 指导教师 学习中心培养基的制备与灭菌 一、目的要求 1.掌握微生物实验室常用玻璃器皿的清洗及包扎方法。 2.掌握培养基的配置原则和方法。 3.掌握高压蒸汽灭菌的操作方法和注意事项。 二、基本原理 牛肉膏蛋白胨培养基: 是一种应用最广泛和最普通的细菌基础培养基,有时又称为普通培养基。由于这种培养基中含有一 般细胞生长繁殖所需要的最基本的营养物质,所以可供细菌生长繁殖之用。 高压蒸汽灭菌: 主要是通过升温使蛋白质变性从而达到杀死微生物的效果。将灭菌的物品放在一个密闭和加压的灭 菌锅内,通过加热,使灭菌锅内水沸腾而产生蒸汽。待蒸汽将锅内冷空气从排气阀中趋尽,关闭排 气阀继续加热。此时蒸汽不溢出,压力增大,沸点升高,获得高于100℃的温度导致菌体蛋白凝固 变性,而达到灭菌的目的。 三、实验材料 1.药品:牛肉膏、蛋白胨、nacl、琼脂、1mol/l的naoh和hcl溶液。 2.仪器及玻璃器皿:天平、高压蒸汽灭菌锅、移液管、试管、烧杯、量筒、三 角瓶、培养皿、玻璃漏斗等。 3.其他物品:药匙、称量纸、ph试纸、记号笔、棉花等。 四、操作步骤 (一)玻璃器皿的洗涤和包装 1.玻璃器皿的洗涤 玻璃器皿在使用前必须洗刷干净。将三角瓶、试管、培养皿、量筒等浸入含有洗涤剂的水中.用毛 刷刷洗,然后用自来水及蒸馏水冲净。移液管先用含有洗涤剂的水浸泡,再用自来水及蒸馏水冲洗。洗刷干净的玻璃器皿置于烘箱中烘干后备用。 2.灭菌前玻璃器皿的包装 (1)培养皿的包扎:培养皿由一盖一底组成一套,可用报纸将几套培养皿包

数电实验报告 实验二 利用MSI设计组合逻辑电路

数电实验报告 实验二 利用MSI设计组合逻辑电路 姓名: 学号: 班级: 院系: 指导老师: 2016年 目录 实验目的:错误!未定义书签。

实验器件与仪器:错误!未定义书签。 实验原理:错误!未定义书签。 实验内容:错误!未定义书签。 实验过程:错误!未定义书签。 实验总结:错误!未定义书签。 实验: 实验目的: 熟悉编码器、译码器、数据选择器等组合逻辑功能模块的功能与使用方法。 掌握用MSI设计的组合逻辑电路的方法。 实验器件与仪器: 数字电路实验箱、数字万用表、示波器。 虚拟器件:74LS00,74LS197,74LS138,74LS151 实验原理: 中规模的器件,如译码器、数据选择器等,它们本身是为实现某种逻辑功能而设计的,但由于它们的一些特点,我们也可以用它们来实现任意逻辑函数。 用译码器实现组合逻辑电路 译码器是将每个输入的二进制代码译成对应的输出高、低电平信号。如3线-8线译码器。当附加控制门Gs的输入为高电平(S = 1)的时

候,可由逻辑图写出。 从上式可看出。-同时又是S2、S1、S0这三个变量的全部最小项的译码输出。所以这种译码器也叫最小项译码器。如果将S2、S1、S0当作逻辑函数的输入变量,则可利用附加的门电路将这些最小项适当的组合起来,便可产生任何形式的三变量组合逻辑函数。 用逻辑选择器实现组合逻辑电路 数据选择器的功能是从一组输入数据中选出某一个信号输出。或称为多路开关。如双四选一数据选择器74LS153

Y1和Y2为两个独立的输出端,和为附加控制端用于控制电路工作状态和扩展功能。A1、A0为地址输入端。D10、D11、D12、D13或D20、D21、D22、D23为数据输入端。通过选定不同的地址代码即可从4个数据输入端选出要的一个,并送到输出端Y。输出逻辑式可写成 其简化真值表如下表所示。 S1A1A0Y1 1X X0 000D10 001D11 010D12 011D13 从上述可知,如果将A1A0作为两个输入变量,同时令D10、D11、D12、D13为第三个输入变量的适当状态(包括原变量、反变量、0和1),就可以在数据选择器的输出端产生任何形式的三变量组合逻辑电路。 实验内容: 数据分配器与数据选择器功能正好相反。它是将一路信号送到地址选择信号指定的输出。如输入为D,地址信号为A、B、C,可将D按地址分配到八路输出F0、F1、F2、F3、F4、F5、F6、F7。其真值表如下

数据结构实验报告全集

数据结构实验报告全集 实验一线性表基本操作和简单程序 1.实验目的 (1)掌握使用Visual C++ 6.0上机调试程序的基本方法; (2)掌握线性表的基本操作:初始化、插入、删除、取数据元素等运算在顺序存储结构和链表存储结构上的程序设计方法。 2.实验要求 (1)认真阅读和掌握和本实验相关的教材内容。 (2)认真阅读和掌握本章相关内容的程序。 (3)上机运行程序。 (4)保存和打印出程序的运行结果,并结合程序进行分析。 (5)按照你对线性表的操作需要,重新改写主程序并运行,打印出文件清单和运行结果 实验代码: 1)头文件模块 #include iostream.h>//头文件 #include//库头文件-----动态分配内存空间 typedef int elemtype;//定义数据域的类型 typedef struct linknode//定义结点类型 { elemtype data;//定义数据域 struct linknode *next;//定义结点指针 }nodetype; 2)创建单链表

nodetype *create()//建立单链表,由用户输入各结点data域之值,//以0表示输入结束 { elemtype d;//定义数据元素d nodetype *h=NULL,*s,*t;//定义结点指针 int i=1; cout<<"建立一个单链表"<> d; if(d==0) break;//以0表示输入结束 if(i==1)//建立第一个结点 { h=(nodetype*)malloc(sizeof(nodetype));//表示指针h h->data=d;h->next=NULL;t=h;//h是头指针 } else//建立其余结点 { s=(nodetype*) malloc(sizeof(nodetype)); s->data=d;s->next=NULL;t->next=s; t=s;//t始终指向生成的单链表的最后一个节点

数字逻辑实验报告

. 武汉理工大学

2017 年月日 实验一:一位全加器 实验目的: 1. 掌握组合逻辑电路的设计方法; 2. 熟悉Vivado2014 集成开发环境和Verilog 编程语言; 3. 掌握1 位全加器电路的设计与实现。 试验工具: 1.Basys3 FPGA 开发板 2.Vivado2014 集成开发环境和Verilog 编程语言。 实验原理: Ci+A+B={Co,S} 全加器真表

全加器逻辑表达式 S=A○+B○+Ci Co=A.B+ (A○+B).Ci 全加器电路图 实验步骤: (一)新建工程: 1、打开 Vivado 2014.2 开发工具,可通过桌面快捷方式或开始菜单中 Xilinx Design Tools->Vivado 2014.2 下的 Vivado 2014.2 打开软件; 2、单击上述界面中 Create New Project 图标,弹出新建工程向导。 3、输入工程名称、选择工程存储路径,并勾选Create project subdirectory选项,为工程在指 定存储路径下建立独立的文件夹。设置完成后,点击Next。注意:工程名称和存储路径中不能出现中文和空格,建议工程名称以字母、数字、下划线来组成 4、选择RTL Project一项,并勾选Do not specify sources at this time,为了跳过在新建工 程的过程中添加设计源文件。 5、根据使用的FPGA开发平台,选择对应的FPGA目标器件。(在本手册中,以Xilinx大学计 划开发板Digilent Basys3 为例,FPGA 采用Artix-7 XC7A35T-1CPG236-C 的器件,即Family 和Subfamily 均为Artix-7,封装形式(Package)为CPG236,速度等级(Speed grade)为-1,温度等级(Temp Grade)为C)。点击Next。 6、确认相关信息与设计所用的的FPGA 器件信息是否一致,一致请点击Finish,不一致,请返 回上一步修改。 7、得到如下的空白Vivado 工程界面,完成空白工程新建。

组合逻辑电路-实验报告

电子通信与软件工程系2013-2014学年第2学期 《数字电路与逻辑设计实验》实验报告 --------------------------------------------------------------------------------------------------------------------- 班级:姓名:学号:成绩: 同组成员:姓名:学号: --------------------------------------------------------------------------------------------------------------------- 一、实验名称:组合逻辑电路(半加器全加器及逻辑运算) 二、实验目的:1、掌握组合逻辑电路的功能调试 2、验证半加器和全加器的逻辑功能。 3、学会二进制数的运算规律。 三、实验内容: 1.组合逻辑电路功能测试。 (1).用2片74LS00组成图所示逻辑电路。为便于接线和检查.在图中要注明芯片编号及各引脚对应的编号。 (2).图中A、B、C接电平开关,YI,Y2接发光管电平显示. (3)。按表4。1要求,改变A、B、C的状态填表并写出Y1,Y2逻辑表达式. (4).将运算结果与实验比较.

2.测试用异或门(74LS86)和与非门组成的半加器的逻辑功能.根据半加器的逻辑表达式可知.半加器Y是A、B的异或,而进位Z是A、B相与,故半加器可用一个集成异或门和二个与非门组成如图. (1).在学习机上用异或门和与门接成以上电路.接电平开关S.Y、Z接电平显示.(2).按表4.2要求改变A、B状态,填表. 3.测试全加器的逻辑功能。 (1).写出图4.3电路的逻辑表达式。 (2).根据逻辑表达式列真值表. (3).根据真值表画逻辑函数S i 、Ci的卡诺图. (4).填写表4.3各点状态 (5).按原理图选择与非门并接线进行测试,将测试结果记入表4.4,并与上表进行比较看逻辑功能是否一致.

数据结构实验报告模板

2009级数据结构实验报告 实验名称:约瑟夫问题 学生姓名:李凯 班级:21班 班内序号:06 学号:09210609 日期:2010年11月5日 1.实验要求 1)功能描述:有n个人围城一个圆圈,给任意一个正整数m,从第一个人开始依次报数,数到m时则第m个人出列,重复进行,直到所有人均出列为止。请输出n个人的出列顺序。 2)输入描述:从源文件中读取。 输出描述:依次从显示屏上输出出列顺序。 2. 程序分析 1)存储结构的选择 单循环链表 2)链表的ADT定义 ADT List{ 数据对象:D={a i|a i∈ElemSet,i=1,2,3,…n,n≧0} 数据关系:R={< a i-1, a i>| a i-1 ,a i∈D,i=1,2,3,4….,n} 基本操作: ListInit(&L);//构造一个空的单链表表L ListEmpty(L); //判断单链表L是否是空表,若是,则返回1,否则返回0. ListLength(L); //求单链表L的长度 GetElem(L,i);//返回链表L中第i个数据元素的值; ListSort(LinkList&List) //单链表排序 ListClear(&L); //将单链表L中的所有元素删除,使单链表变为空表 ListDestroy(&L);//将单链表销毁 }ADT List 其他函数: 主函数; 结点类; 约瑟夫函数 2.1 存储结构

[内容要求] 1、存储结构:顺序表、单链表或其他存储结构,需要画示意图,可参考书上P59 页图2-9 2.2 关键算法分析 结点类: template class CirList;//声明单链表类 template class ListNode{//结点类定义; friend class CirList;//声明链表类LinkList为友元类; Type data;//结点的数据域; ListNode*next;//结点的指针域; public: ListNode():next(NULL){}//默认构造函数; ListNode(const Type &e):data(e),next(NULL){}//构造函数 Type & GetNodeData(){return data;}//返回结点的数据值; ListNode*GetNodePtr(){return next;}//返回结点的指针域的值; void SetNodeData(Type&e){data=e;}//设置结点的数据值; void SetNodePtr(ListNode*ptr){next=ptr;} //设置结点的指针值; }; 单循环链表类: templateclass CirList { ListNode*head;//循环链表头指针 public: CirList(){head=new ListNode();head->next=head;}//构造函数,建立带头节点的空循环链表 ~CirList(){CirListClear();delete head;}//析构函数,删除循环链表 void Clear();//将线性链表置为空表 void AddElem(Type &e);//添加元素 ListNode *GetElem(int i)const;//返回单链表第i个结点的地址 void CirListClear();//将循环链表置为空表 int Length()const;//求线性链表的长度 ListNode*ListNextElem(ListNode*p=NULL);//返回循环链表p指针指向节点的直接后继,若不输入参数,则返回头指针 ListNode*CirListRemove(ListNode*p);//在循环链表中删除p指针指向节点的直接后继,且将其地址通过函数值返回 CirList&operator=(CirList&List);//重载赋

数字逻辑实验报告。编码器

数字逻辑实验实验报告 脚分配、1)分析输入、输出,列出方程。根据方程和IP 核库判断需要使用的门电路以及个数。 2)创建新的工程,加载需要使用的IP 核。 3)创建BD 设计文件,添加你所需要的IP 核,进行端口设置和连线操作。 4)完成原理图设计后,生成顶层文件(Generate Output Products)和HDL 代码文件(Create HDL Wrapper)。 5)配置管脚约束(I/O PLANNING),为输入指定相应的拨码开关,为输出指定相应的led 灯显示。

6)综合、实现、生成bitstream。 7)仿真验证,依据真值表,在实验板验证试验结果。

实验报告说明 数字逻辑课程组 实验名称列入实验指导书相应的实验题目。 实验目的目的要明确,要抓住重点,可以从理论和实践两个方面考虑。可参考实验指导书的内容。在理论上,验证所学章节相关的真值表、逻辑表达式或逻辑图的实际应用,以使实验者获得深刻和系统的理解,在实践上,掌握使用软件平台及设计的技能技巧。一般需说明是验证型实验还是设计型实验,是创新型实验还是综合型实验。 实验环境实验用的软硬件环境(配置)。 实验内容(含电路原理图/Verilog程序、管脚分配、仿真结果等;扩展内容也列入本栏)这是实验报告极其重要的内容。这部分要写明经过哪几个步骤。可画出流程图,再配以相应的文字说明,这样既可以节省许多文字说明,又能使实验报告简明扼要,清楚明白。 实验结果分析数字逻辑的设计与实验结果的显示是否吻合,如出现异常,如何修正并得到正确的结果。 实验方案的缺陷及改进意见在实验过程中发现的问题,个人对问题的改进意见。 心得体会、问题讨论对本次实验的体会、思考和建议。

组合逻辑电路实验报告

实验名称:组合逻辑电路 一、实验目的 1、掌握组合逻辑电路的分析、设计方法与测试方法; 2、了解组合逻辑电路的冒险现象及消除方法。 二、实验器材 需要与非门CC4011×3,异或门CC4030×1,或门CC4071×1。 CC4011引脚图CC4030引脚图 CC4071引脚图 三、实验内容及实验电路 1、分析、测试用与非门CC4011组成的半加器的逻辑功能。列出真值表并画出卡诺图判断是否可以简化。 图1由与非门组成的半加器电路

A B S C 2、分析、测试用异或门CC4030与与非门CC4011组成的半加器逻辑电路。 图2由异或门和与非门组成的半加器电路 A B S C 3、分析、测试全加器的逻辑电路。写出实验电路的逻辑表达式,根据实验结果列出真值表与全加器的逻辑功能对比,并画出i S和i C的卡诺图。 图3由与非门组成的全加器电路 A B1 i C i S i C

4、设计、测试用异或门、与非门和或门组成的全加器逻辑电路。 全加和:()1 -⊕⊕=i i i i C B A S 进位:()i i i i i i B A C B A C ?+?⊕=-1将全加器的逻辑表达式,变换成由两个异或门,四个与非门,一个或门组成;画出全加器电路图,按所画的原理图选择器件并在实验板上连线;进行功能测试并自拟表格填写测试结果。电路图:A B 1-i C i S i C 5、观察冒险现象。按图4接线,当1==C B 时,A 输入矩形波(MHz f 1=以上),用示波器观察输出波形,并用添加冗余项的方法消除冒险现象。 图4观察冒险现象实验电路

四、实验预习要求 1、复习组合逻辑电路的分析方法。 2、复习组合逻辑电路的设计方法。 3、复习用与非门和异或门等构成半加器和全加器的工作原理。 4、复习组合电路冒险现象的种类、产生原因和如何防止。 5、根据试验任务要求,设计好实验时必要的实验线路。 五、实验报告 1、整理实验数据、图表,并对实验结果进行分析讨论。 2、总结组合逻辑电路的分析与测试方法。 3、对冒险现象进行讨论。

组合逻辑电路的设计实验报告

广西大学实验报告纸 _______________________________________________________________________________ 实验内容___________________________________________指导老师 【实验名称】 组合逻辑电路的设计 【实验目的】 学习组合逻辑电路的设计与测试方法。 【设计任务】 用四-二输入与非门设计一个4人无弃权表决电路(多数赞成则提案通过)。要求:采用四-二输入与非门74LS00实现;使用的集成电路芯片种类尽可能的少。 【实验用仪器、仪表】 数字电路实验箱、万用表、74LS00。 【设计过程】 设输入为A、B、C、D,输出为L,根据要求列出真值表如下 真值表

根据真值表画卡若图如下 由卡若图得逻辑表达式 B D C

BD AC CD AB BD AC CD AB BD AC CD AB BD AC CD BD AC AB D BCD C ACD B ABD A ABC ACD BCD ABD ABC L ???=???=++=+++=?+?+?+?=+++=))(()()( 用四二输入与非门实现 A B C D L 实验逻辑电路图

Y 实验线路图

【实验步骤】 1.打开数字电路实验箱,按下总电源开关按钮。 2.观察实验箱,看本实验所用的芯片、电压接口、接地接口的位置。 3.检查芯片是否正常。芯片内的每个与非门都必须一个个地测试,以保证芯片 能正常工作。 4.检查所需导线是否正常。将单根导线一端接发光二极管,另一端接高电平。 若发光二极管亮,说明导线是正常的;若发光二极管不亮时,说明导线不导通。不导通的导线不应用于实验。 5.按实验线路图所示线路接线。 6.接好线后,按真值表的输入依次输入A、B、C、D四个信号,“1”代表输入高 电平,“0”代表输入低电平。输出端接发光二极管,若输出端发光二极管亮则说明输出高电平,对应记录输出结果为“1”;发光二极管不亮则说明输出低电平,对应记录输出结果为“0”。本实验有四个输入端则对应的组合情况有16种,将每种情况测得的实验结果记录在实验数据表格中。 测量结果见下表: 实验数据表格

华中科技大学数字逻辑实验报告

华中科技大学数字逻辑实验报告 姓名: 专业班级: 学号: 指导老师: 完成时间:

实验一:组合逻辑电路的设计 一、实验目的: 1.掌握组合逻辑电路的功能测试。 2.验证半加器和全加器的逻辑功能 3.学会二进制的运算规律。 二、实验所用组件: 二输入四与门74LS08,二输入四与非门74LS00,二输入四异或门74LS86,六门反向器74LS04芯片,三输入三与非门74L10,电线若干。 三、实验内容: 内容A:全加全减器。 实验要求: 一位全加/全减法器,如图所示: 电路做加法还是做减法运算是由M决定的,当M=0做加法,M=1做减法。当作为全加法起时输入A.B和Cin分别为加数,被加数和低位来的进位,S和数,Co位向上位的进位。当作为全减法器时输入信号A,B和Cin分别为被减数,减数和低位来的借位,S为差,Co为向上的借位。 实验步骤: 1.根据功能写出输入/输出观察表:

2. 3.做出卡诺图,确定输出和激励的函数表达式:

4.根据逻辑表达式作出电路的平面图: 5.检查导线以及芯片是否完好无损坏,根据平面图和逻辑表达式连接电路。 实验结果: 电路连接好后,经检测成功实现了一位全加/全减法器的功能。 内容B:舍入与检测电路的设计: 试验要求: 用所给定的集合电路组件设计一个多输出逻辑电路,该电路的输入为8421码,F1为“四

舍五入”输出信号,F2为奇偶检测输出信号。当电路检测到输入的代码大宇或等于(5)10时,电路的输出F1=1;其他情况F1=0。当输入代码中含1的个数为奇数时,电路的输出F2=1,其他情况F2=0。该电路的框图如下所示: (1)按照所设计的电路图接线,注意将电路的输入端接试验台的开关,通过拨动开关输入8421代码,电路输入按至试验台显示灯。 (2)每输入一个代码后观察显示灯,并将结果记录在输入/输出观察表中。 实验步骤 1.按照所给定的实验要求填写出F1,F2理论上的真值表。 2.根据真值表给出F1和F2的卡诺图。

组合逻辑电路实验报告

组合逻辑电路实验报告

图6-1:O型静态险象 如图6-1所示电路 其输出函数Z=A+A,在电路达到稳定时,即静态时,输出F 总是1。然而在输入A变化时(动态时)从图6-1(b)可见,在输出Z的某些瞬间会出现O,即当A经历1→0的变化时,Z出现窄脉冲,即电路存在静态O型险象。 进一步研究得知,对于任何复杂的按“与或”或“或与”函数式构成的组合电路中,只要能成为A+A或AA的形式,必然存在险象。为了消除此险象,可以增加校正项,前者的校正项为被赋值各变量的“乘积项”,后者的校正项为被赋值各变量的“和项”。 还可以用卡诺图的方法来判断组合电路是否存在静态险象,以及找出校正项来消除静态险象。 实验设备与器件 1.+5V直流电源 2.双踪示波器 3.连续脉冲源 4.逻辑电平开关 5.0-1指示器

(3)根据真值表画出逻辑函数Si、Ci的卡诺图 (4)按图6-5要求,选择与非门并接线,进行测试,将测试结果填入下表,并与上面真值表进行比较逻辑功能是否一致。 4.分析、测试用异或门、或非门和非门组成的全加器逻辑电路。 根据全加器的逻辑表达式

全加和Di =(Ai⊕Bi)⊕Di-1 进位Gi =(Ai⊕Bi)·Di-1+Ai·Bi 可知一位全加器可以用两个异或门和两个与门一个或门组成。(1)画出用上述门电路实现的全加器逻辑电路。 (2)按所画的原理图,选择器件,并在实验箱上接线。(3)进行逻辑功能测试,将结果填入自拟表格中,判断测试是否正确。 5.观察冒险现象 按图6-6接线,当B=1,C=1时,A输入矩形波(f=1MHZ 以上),用示波器观察Z输出波形。并用添加校正项方法消除险象。

数字逻辑实验报告

数字逻辑实验报告:加法器

安徽师范大学 学院实验报告 专业名称软件工程 实验室 实验课程数字逻辑 实验名称加法器实验姓名 学号 同组人员 实验日期 2013.3.26

注:实验报告应包含(实验目的,实验原理,主要仪器设备和材料,实验过程 和步骤,实验原始数据记录和处理,实验结果和分析,成绩评定)等七项内容。具体内容可根据专业特点和实验性质略作调整,页面不够可附页。 实验目的:学会使用实验箱搭建基本组合逻辑电路。 实验原理:全加器是中规模组合逻辑器件,它实现二进制数码的加法运算,是计算机中最基本的运算单元电路。一位加法器有三个输入端Ai 、B i 、C i -1,即被加数,有两个输出端S i 和B i 即相加及向高一位的进位输出。 (全加真值表) Si=A i B i C i -1+A i B i C i -1+A i B i C i -1+A i B i C i -1 C i =A i B i +A i C i -1+B i C i -1 全加器主要用于数值运算;另外,全加器还可以实现组合逻辑函数。 主要仪器设备和材料:数字逻辑电路实验装置、芯片 74LS32、芯片 74LS08、 芯片74LS86,导线 实验过程和步骤: ①关闭实验箱的电源开关,将三个芯片正确地安装在实验箱装置上; ②分别用三根导线将三个芯片的第14号引脚与实验箱左下角的+5V 连接起来,,再分别用三根导线将三个芯片的第7号引脚与实验箱左下角的GND 连接 Ai B i C i -1 S i B i 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 0 1 1 1 1 1 1

数字电路组合逻辑电路设计实验报告

实验三组合逻辑电路设计(含门电路功能测试)

一、实验目的 1.掌握常用门电路的逻辑功能 2.掌握小规模集成电路设计组合逻辑电路的方法 3.掌握组合逻辑电路的功能测试方法 二、实验设备与器材 Multisim 、74LS00 四输入2与非门、示波器、导线 三、实验原理 TTL集成逻辑电路种类繁多,使用时应对选用的器件做简单逻辑功能检查,保证实验的顺利进行。 测试门电路逻辑功能有静态测试和动态测试两种方法。静态测试时,门电路输入端加固定的高(H)、低电平,用示波器、万用表、或发光二极管(LED)测出门电路的输出响应。动

态测试时,门电路的输入端加脉冲信号,用示波器观测输入波形与输出波形的同步关系。 下面以74LS00为例,简述集成逻辑门功能测试的方法。74LS00为四输入2与非门,电路图如3-1所示。74LS00是将四个二输入与非门封装在一个集成电路芯片中,共有14条外引线。使用时必须保证在第14脚上加+5V电压,第7脚与底线接好。 整个测试过程包括静态、动态和主要参数测试三部分。 表3-1 74LS00与非门真值表 1.门电路的静态逻辑功能测试 静态逻辑功能测试用来检查门电路的真值表,确认门电路的逻辑功能正确与否。实验时,可将74LS00中的一个与非门的输入端A、B分别作为输入逻辑变量,加高、低电平,观测输出电平是否符合74LS00的真值表(表3-1)描述功能。 测试电路如图3-2所示。试验中A、B输入高、低电平,由数字电路实验箱中逻辑电平产生电路产生,输入F可直接插至逻辑电平只是电路的某一路进行显示。

仿真示意 2.门电路的动态逻辑功能测试 动态测试用于数字系统运行中逻辑功能的检查,测试时,电路输入串行数字信号,用示波器比较输入与输出信号波形,以此来确定电路的功能。实验时,与非门输入端A加一频率为

相关主题
文本预览
相关文档 最新文档