北邮c++实验 实验一
北邮 C++计算机实习报告
计算机实习报告一.功能说明1.1总体功能说明本工程用C++语言实现了俄罗斯方块经典游戏。
俄罗斯方块游戏特点:俄罗斯方块的基本规则是通过键盘控制移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分,上手简单,是一款经典游戏。
在经典玩法(正常模式)的基础上,本程序还添加了挑战模式,即在游戏伊始时在游戏区域中随机分布方块,减小了留给玩家调整方块的时间和区域,需要通过玩家不断填补消行才能把游戏进行下去。
游戏会随着玩家的得分的增多而加大方块下落的速度,从而增加游戏难度,因此也在原来的基础上大大增加了游戏的可玩性。
游戏中还增加了Esc键的功能,从而可以实现暂停游戏和退出游戏的功能。
1.2用户界面这是游戏的初始界面。
出现游戏名,根据提示,玩家按下“c”“n”即可自行选择挑战模式和正常模式,难度不同。
这样既明确了游戏名称,提供两种模式的入口,又给玩家一个准备的时间以自行控制游戏开始,不必一打开文件就突然开始游戏,增加了游戏的人性化。
以上两图为进入游戏后的主界面,分别为正常模式和挑战模式。
中间的区域为游戏主要界面,游戏从上往下随机产生并自动输出七种方块,对俄罗斯方块的基本操作如←(左移),→(右移),↑(方块变形),↓(加速下落)都在此区域里完成。
最上方显示的是模式。
右边的区域显示一些与游戏相关的信息,从上往下分别是下落速度、游戏得分、游戏操作说明,编者信息。
此图为按下“Esc”键后出现的画面。
程序支持Esc键暂停的功能,即按下后,按Y键退出,按N键可继续游戏,玩家中途有事离开,回来后也可继续游戏,提供了方便。
1.3使用方法打开程序后根据屏幕上的提示信息,按下回车键以进入游戏界面开始游戏。
进入游戏界面后,根据屏幕右下方的游戏说明,通过键盘上←(左移),→(右移),↑(方块变形),↓(加速下落)控制方块。
游戏过程中,可按“Esc”键暂停,并可以通过“Y”和“C”键选择退出和继续。
游戏结束之后,通过键盘按键“Y”和“N”选择是否退出游戏。
北邮程序设计实验报告
实验名称:程序设计实验实验时间:2023年X月X日实验地点:北邮计算机实验室一、实验目的1. 熟悉C语言编程环境,掌握基本的程序设计方法。
2. 通过实际编程,提高逻辑思维和问题解决能力。
3. 理解算法设计的重要性,掌握常用的算法设计方法。
二、实验内容本次实验主要分为以下几个部分:1. 编写一个计算两个整数相加的程序。
2. 编写一个计算两个整数相减的程序。
3. 编写一个计算两个整数相乘的程序。
4. 编写一个计算两个整数相除的程序(要求考虑除数为0的情况)。
5. 编写一个判断两个整数是否相等的程序。
三、实验步骤1. 打开C语言编程环境,创建一个新的项目。
2. 编写计算两个整数相加的程序:```c#include <stdio.h>int main() {int a, b, sum;printf("请输入两个整数:\n");scanf("%d %d", &a, &b);sum = a + b;printf("两个整数相加的结果为:%d\n", sum); return 0;}```3. 编写计算两个整数相减的程序:```c#include <stdio.h>int main() {int a, b, sub;printf("请输入两个整数:\n");scanf("%d %d", &a, &b);sub = a - b;printf("两个整数相减的结果为:%d\n", sub); return 0;}```4. 编写计算两个整数相乘的程序:```c#include <stdio.h>int main() {int a, b, mul;printf("请输入两个整数:\n");scanf("%d %d", &a, &b);mul = a b;printf("两个整数相乘的结果为:%d\n", mul);return 0;}```5. 编写计算两个整数相除的程序(考虑除数为0的情况):```c#include <stdio.h>int main() {int a, b, div;printf("请输入两个整数:\n");scanf("%d %d", &a, &b);if (b == 0) {printf("除数不能为0,请重新输入。
北邮数据结构实验 第一次实验 线性表
1.实验要求(1)实验目的通过选择下面题目进行实现,掌握如下内容:熟悉C++语言的基本编程方法,掌握集成编译环境的调试方法学习指针、模板类、异常处理的使用掌握线性表的操作的实现方法学习使用线性表解决实际问题的能力(2)实验内容根据线性表的抽象数据类型的定义,选择下面任一种链式结构实现线性表,并完成线性表的基本功能。
线性表存储结构(五选一):1、带头结点的单链表2、不带头结点的单链表3、循环链表4、双链表5、静态链表线性表的基本功能:1、构造:使用头插法、尾插法两种方法2、插入:要求建立的链表按照关键字从小到大有序3、删除4、查找:按位置查找和按值查找5、获取链表长度6、销毁7、其他:可自行定义编写测试main()函数测试线性表的正确性。
2. 程序分析2.1 存储结构储存结构:单链表地址 内存单元 1000H头指针1020H1080H10C0H2.2 关键算法分析一、关键算法:1.头插法自然语言描述:a:在堆中建立新结点b :将a[i]写入新结点的数据域c:修改新结点的指针域d:修改头结点的指针域。
将新结点加入链表中。
2.尾插法伪代码描述:a: Node<T> *s=new Node<T>b:s->data=a[i];c:r->next=s;a31080H…… a1 10C0H …… a4 ^ ……a21000H……结点 结点 结点 结点d:r=s;3.析构/删除函数a:Node<T>*p=frontb:while(p)c:front=pd:p=p->nexte:delete front4.按位查找函数a:Node<T>*p=front->next;j=1; b:while(p&&j!=1)b1:p=p->next;b2:j++:c:if(!p) throw”end”d:return p;5.按值查找函数a:Node <T>*p=front->next;j=1; b:while(p)b1:if(p->next==x) return j p=p->next;j++c:return “error”6.插入函数a:Node<T> *s=new Node <T>; b:s-data=p->datac:s->next=p->next;d:p->next=se:p->data=x7.删除函数a:q=p->next;b:p->next=q->nextc:x=q->datad:delete q8.遍历打印函数If front->next==NULLThrow “an empty list”Node<T>*temp=front->next;While(temp->next){cout<<temp->data<<” “;temp=temp->next;}9.获取链表长度函数Int n=0;If front->next==NULLn=0;else{Node<T>*temp=front->next;While(temp->next)n++;temp=temp->next;}Return n;二、代码详细分析1.删除算法:x ……p……q ①②③④⑤图1 删除结点示意图算法步骤:①从第一个结点开始,查找第i-1个元素,设为p 指向该a 结点;②设q 指向第i 个元素:q = p->next;③摘链,即将q 元素从链表中摘除:p->next = q->next;④保存q 元素的数据:x = q->data;⑤释放q 元素:delete q;2.头插法关键代码:a:在堆中建立新结点: Node<T> *s=new Node<T>;b :将a[i]写入到新结点的数据域 s->data=a[i];c:修改新结点的指针域 s->next=front->next;d :修改头结点的指针域 front->next=s;frontsfront3.尾插法关键代码:a:在堆中建立新结点 Node<T>*s=new Node <T>;b:将数据写入结点的数据域 s->data=a[i];c将新结点加入到链表中:r->next=s;d 修改尾指针 r=s;rFrontFrontS4.查找算法关键代码:a Node<T>*p=front->next;int j=1;b while(p&&j!=1){p=p->next;j++;}frontP(j=1) P(j=2) P(j=i) P(j=n)三、计算关键算法的时间、空间复杂度头插法/尾插法 O(n);按位/按值查找 O(n);插入操作 O(n);3. 程序运行结果运行结果:流程图:开始初始化一个对象初始化一个整数数组,作为赋值准备分别利用头插法和尾插法初始化,并用遍历打印函数来显示数值执行删除函数,之后用遍历打印函数测试是否真的删除执行插入函数,之后用遍历打印函数测试是否真的插入执行按位查找和按值查找结束问题规模的数量级为10,插入元素位置为第10个,删除第3个4. 总结1.调试时出现的问题及解决方法:按位查找时,返回值与计数器j的关系没有找对,导致返回值不在链表中,解决:重新计算两者关系。
北邮c++小学期实验报告
面向对象程序设计与实践c++实验总结报告实验一简单C++程序设计1.猜价格游戏编写C++程序完成以下功能:(1)假定有一件商品,程序用随机数指定该商品的价格(1-1000的整数);(2)提示用户猜价格,并输入:若用户猜的价格比商品价格高或低,对用户作出相应的提示;(3)直到猜对为止,并给出提示。
题目1-1总结:1)本题需要随机生成整数,我开始只使用rand(),即price=rand();来生成随机整数但这样只是一个伪随机函数,每一次重新打开程序生成的数都是一致的。
因此加入时间随机种子:srand((unsigned)time(NULL))2)个人改进1:定义最大值最小值,在每次猜测数字时显示应猜的数字范围,作为提示。
想到这个是因为有一次猜了很多遍都没猜到,一时突然忘记猜到什么范围,然后往前翻猜过的数字和大小感觉相当麻烦,所以就添上了应猜范围,方便再一次猜数。
3)个人改进2:本来有一个判断条件判断生成的随机数是不是1~1000范围内,而后更进为随机生成整数对1000取余得到0~999整数,再+1得到1~1000的整数。
实验二类与对象1.矩形编写C++程序完成以下功能:(1)定义一个Point类,其属性包括点的坐标,提供计算两点之间距离的方法;(2)定义一个矩形类,其属性包括左上角和右下角两个点,提供计算面积的方法;(3)创建一个矩形对象,提示用户输入矩形左上角和右下角的坐标;(4)观察矩形对象以及Point类成员的构造函数与析构函数的调用;(5)计算其面积,并输出。
题目2-1总结:1)这一题是第一次用到class类的题目,开始并不明白为何要定义class,然后还需要区分public和private。
而后来去图书馆借了书看到c++最大特色就是可以封装,定义私有属性和公有函数,以确保有些函数和参数不会被轻易访问到,降低错误率。
2)class类在最起初定义时总是在class Rectangle那一行报错,经查书发现class定义最后一个大括号后有分号,开始并没有加上。
北邮数据结构实验报告
北邮数据结构实验报告摘要:本报告基于北邮数据结构实验,通过实际操作和实验结果的分析,总结和讨论了各实验的目的、实验过程、实验结果以及相关的问题和解决方法。
本报告旨在帮助读者了解数据结构实验的基本原理和应用,并为今后的学习和研究提供参考。
1. 实验一:线性表的操作1.1 实验目的本实验旨在掌握线性表的基本操作以及对应的算法实现,包括插入、删除、查找、修改等。
1.2 实验过程我们使用C++语言编写了线性表的相关算法,并在实际编程环境下进行了测试。
通过插入元素、删除元素、查找元素和修改元素的操作,验证了算法的正确性和效率。
1.3 实验结果经过测试,我们发现线性表的插入和删除操作的时间复杂度为O(n),查找操作的时间复杂度为O(n),修改操作的时间复杂度为O(1)。
这些结果与预期相符,并反映了线性表的基本特性。
1.4 问题与解决方法在实验过程中,我们遇到了一些问题,例如插入操作的边界条件判断、删除操作时的内存释放等。
通过仔细分析问题,我们优化了算法的实现,并解决了这些问题。
2. 实验二:栈和队列的应用2.1 实验目的本实验旨在掌握栈和队列的基本原理、操作和应用,并进行实际编程实现。
2.2 实验过程我们使用C++语言编写了栈和队列的相关算法,并在实际编程环境下进行了测试。
通过栈的应用实现表达式求值和逆波兰表达式的计算,以及队列的应用实现图的广度优先遍历,验证了算法的正确性和效率。
2.3 实验结果经过测试,我们发现栈的应用可以实现表达式的求值和逆波兰表达式的计算,队列的应用可以实现图的广度优先遍历。
这些结果证明了栈和队列在实际应用中的重要性和有效性。
2.4 问题与解决方法在实验过程中,我们遇到了一些问题,例如中缀表达式转后缀表达式的算法设计、表达式求值的优化等。
通过查阅资料和与同学的讨论,我们解决了这些问题,并完善了算法的实现。
3. 实验三:串的模式匹配3.1 实验目的本实验旨在掌握串的基本操作和模式匹配算法,并进行实际编程实现。
北京邮电C语言程序设计实验指导书10版 V1.0
《C语言程序设计》 实 验 指 导 手 册授课教师: 宋 茂 强实验指导教师: 李 晶教学对象: 一年级本科生开课时间: 秋季学期北京邮电大学软件学院2010年8月《C语言程序设计》实验指导手册(2010年8月)实验内容分为九部分,涉及到编程环境的使用,循环控制语句的练习,判断分支语句练习,函数的应用,模块化开发,数组和字符串的应用,结构体、指针以及链表的应用等,最终完成一个学生成绩管理系统的设计与实现。
关于实验的说明:1. 实验环境为:Visual Studio C++ 6.0。
2. 有需要提交实验内容的部分在实验要求一项中有提示。
3. 实验内容提交至:ftp://59.64.164.17/软件学院/ 10级/软件学院10级C语言程序设计用户名:student,密码:student。
4. 提交时请注意:每一部分都有对应的文件夹,每个班都有对应的文件夹。
提交内容时,遵守“学号-姓名”命名规则上传。
比如,2010211501班某同学张三,学号为100011,完成的第一部分实验包含了两部分:工程和实验报告。
工程的提交方法:找到“part 1”文件夹下 “10-01”文件夹,找到“project”文件夹,并将工程打包为.rar包,命名为:100011-张三.rar,传到这个文件夹下。
实验报告的提交方法:找到“part 1”文件夹下 “10-01”文件夹,找到“report”文件夹,将word形式的实验报告命名为:100011-张三.doc上传至该文件夹下。
第一部分: VC6.0的使用(2学时)1.实验目的(1) 掌握Visual Studio C++ 6.0 编程环境的基本使用方法;(2) 掌握如何在Visual Studio C++ 6.0编程环境下为工程引入第三方类库。
2.实验内容如何建立新的工程(1) 打开【file】|【new】,出现new窗口。
选择【project】选项卡,选择【Win32Console Application】。
北邮,信息工程,大二上,小学期,C语言,大作业,实验报告
北邮,信息工程,大二上,小学期,C语言,大作业,实验报告北京邮电大学信息与通信工程学院10级小学期C程序设计实践实验报告题目:实验室物料管理系统班级:班姓名:学号:手机号:邮箱:一.功能描述:1.基本功能:(1)添加记录能够添加一条或多条记录,记录包括物料类别、名称、型号、价格、库存等数据。
(2)显示记录显示当前所有记录。
(3)更新记录能够修改已存在记录的信息,可按型号选择要更新的纪录并且选择更新的方式。
(4)删除记录实现删除指定型号记录的功能。
(5)查询记录实现按型号查找的基本功能。
(6)保存文件存储所有记录到文本文档wrecord.txt。
(7)读取文件从rrecord.txt读入所有记录,同时能实现在读入后继续添加记录并执行操作。
(8)统计总量能实现将各类别记录的库存总量存入文本文件total.txt的功能。
(9)排序实现基本功能的按库存量顺序排序,并且存储到文件。
(10)退出系统结束软件操作,释放内存后退出。
2.扩展功能:(1)统计时加入借出量的统计,使物料管理更健全。
(2)进入时需要输入用户名和密码,通过区分采购员和教师给与用户不同的功能使用权限,使程序的针对性更强。
(3)可以选择按照单价或型号进行查找,并给与用户随时退出到主菜单的选项。
(4)可以选择按照库存量或单价进行排序,并将结果打印。
二.数据结构描述:struct info{int type_a;//类型,因为是1到5,所以采用int型变量char name_b[10000];//名称char model_c[10000];//型号,因为二者都可能是字符数字混合,所以采用char型变量float price;//价格,有可能精确到分,所以选择float型变量,并且保留两位显示int inside;//库存int outside;//借出struct info *next;};三.程序模块描述:1.void buy(void);和void use(void);分别对应两种权限的使用者:采购员和实验室老师。
北邮编程实验报告
实验名称:编程基础实验实验日期:2023年X月X日实验地点:北邮计算机实验室实验指导教师:XXX老师实验目的:1. 熟悉编程环境,掌握基本的编程技能。
2. 理解编程的基本概念和语法规则。
3. 培养逻辑思维和问题解决能力。
实验内容:本次实验主要涉及以下几个方面:1. 编程环境搭建2. 基本语法学习3. 编程实践实验步骤:一、编程环境搭建1. 安装编程软件:首先,在北邮计算机实验室的计算机上安装了Visual Studio Code,这是一个功能强大的代码编辑器,可以支持多种编程语言。
2. 配置环境变量:为了方便调用编程软件,我们将环境变量设置好,使得在命令行中输入软件名称即可启动。
二、基本语法学习1. 数据类型:学习了整型、浮点型、字符型等基本数据类型,并掌握了它们的特点和适用场景。
2. 运算符:了解了算术运算符、关系运算符、逻辑运算符等,并学会了如何使用它们进行简单的计算和判断。
3. 控制语句:学习了if-else语句、for循环、while循环等,掌握了如何控制程序的执行流程。
4. 函数:了解了函数的定义、调用和参数传递,学会了如何封装代码,提高代码的可读性和可重用性。
三、编程实践1. 编写计算器程序:根据所学知识,编写了一个简单的计算器程序,实现了加减乘除等基本运算。
2. 编写排序算法:学习了冒泡排序、选择排序、插入排序等基本排序算法,并实现了它们的代码。
3. 编写学生信息管理系统:根据实际需求,设计并实现了一个学生信息管理系统,包括添加、删除、修改和查询学生信息等功能。
实验结果:通过本次实验,我成功完成了以下任务:1. 熟悉了编程环境,掌握了基本的编程技能。
2. 理解了编程的基本概念和语法规则。
3. 培养了逻辑思维和问题解决能力。
实验总结:1. 编程环境搭建:在北邮计算机实验室,我成功安装了Visual Studio Code编程软件,并配置了环境变量。
2. 基本语法学习:通过学习,我掌握了数据类型、运算符、控制语句和函数等基本语法,为后续编程实践打下了基础。
北邮windows程序设计实验报告
Windows程序设计实验报告实验一:绘图和绘钟实验二:简易扫雷程序班级:姓名:学号:班内序号:时间:2014. 5. 4实验一:绘图和绘钟一、实验要求:利用MFC类编写windows程序,实现基本绘图功能,并在课堂所讲绘图功能上新加入自己其他的绘图功能。
二、实验概述:①由于前期一直坚持听课,所以实现基本绘图功能的代码是按照老师的架构来做的,后来新加的功能是参阅孙鑫所著的《VC++深入详解》一书,在理解的基础上添加到之前的程序框架中的。
做实验时先从课堂上讲的建立单文档开始,在熟悉了MFC单文档的程序框架后,按照老师给的画简单图形的代码,并对应自己借的书籍,了解了画图代码的编写。
之后又逐步进行了改进,增加了更多其他的功能。
②利用MFC编写绘图和绘钟的程序是在Visual Studio 2013的环境下编写的;③绘钟程序采取的是简洁风格,先绘制了表盘,之后用数学方法绘制钟表盘小格。
利用Invalidate函数刷新钟表区域,利用SetTimer函数来对指针进行刷新。
点击显示后再次点击即可关闭时钟。
④线型线宽的设置中,增加了单选框和示例框,线型的选择中由于线型定义中对应0~8,所以就按照顺序排列线型,从而减去了switch/case语句。
点击单选框后利用Invalidate函数让窗口无效,在下一次WM_PAINT时重绘窗口,示例框线条在OnPaint函数中绘制。
⑤绘图所能实现的功能有:1.能够实现图片文件和位图文件的打开;2.可以将所绘制图形以位图形式保存;3.以对话框形式实现对线型线宽的设置;4.设置八种线型,增加示例框,能在选择时预览;5.增加画图面板滚动条,能上下左右拉动绘图区域;6.实现图形重绘功能,在拉动或最小化图形窗口以及滚动区域后图形不消失,实现了对所绘矩形,椭圆,线条和扇形的重绘;7.以系统自带对话框形式实现对颜色及字体的修改;8.画图功能:直线,曲线,椭圆,扇形,带边界的扇形,位图填充的矩形,可遮挡的空心矩形;⑥绘钟所能实现的功能有:1.实现闹钟功能,以对话框形式设置响铃时间;2.能够绘制出模拟时钟,并获取正确的系统时间;3.能够实现秒针每一秒移动一下的动画效果;4.时钟下边以数字时钟的方式显示当前系统时间;三、代码分析1.整体代码分为三部分:①窗口绘图:用于绘制各种图形(包括直线,曲线,扇形等);②绘图设置:用于颜色,字体和线型线宽的设置等;③绘制时钟:绘制与系统时间同步的模拟时钟。
北京邮电大学信息论实验1
信息论实验·第一次实验报告题目一:掷毂子游戏的熵实验步骤:(程序见附件)我们首先计算掷毂子游戏熵的理论值:首先可以得到加和为2、3、…12的概率分别为1/36、2/36….6/36、5/36…1/36,然后利用公式:可以得到掷毂子游戏的熵的理论值为3.27bit/符号。
然后计算熵的仿真值:首先设定N=100:100:100000,然后做N次试验,统计最后加和的值所出现的频率,用频率近似概率,再次利用以上公式,得到仿真熵。
最后对不同的N得到的仿真熵与理论值的差别作图,寻找规律。
实验结论:经过理论分析,我们可知加和为2、3、…12的概率分别为1/36、2/36….6/36、5/36…1/36,进而得到掷毂子游戏的熵的理论值为3.27bit/符号。
下图为N取不同值时仿真熵的变化曲线(N=100:100:100000):根据观察可以得到,当N逐渐增大时,仿真熵逐渐趋近于理论计算得到的熵3.27bit/符号。
题目一(可选):计算英文文本的熵实验步骤:(程序见附件)首先,我们导入了一段样本文本,节选自欧亨利的小说《警察与赞美诗》(文本见附件),统计这段文本中英文字母(区分大小写)和空格出现的个数,进而得到各个字母出现的概率p(x),然后利用公式:计算样本的熵H(X)。
然后,我们统计了文本中相邻两个字符出现的概率p(xy),通过计算边缘概率分布可得p(x),然后利用公式p(y|x)=p(xy)/p(x)条件分布概率p(y|x),最后利用公式:计算得到样本的相邻两个字符的条件熵H(Y|X)。
最后,我利用生成了一组独立等概分布的英文随机序列,重新计算H(X)、H(Y|X),以检验模型的正确性。
实验结论:首先,我们可得实验的结果列表:输入文本测试项目实验值理论值小说节选H(X) 4.21bit/symbol 4.03bit/symbol小说节选H(Y|X) 3.14bit/symbol 3.32bit/symbol随机序列H(X) 5.72bit/symbol 5.73bit/symbol随机序列H(Y|X) 5.51bit/symbol 5.73bit/symbol 在上表中,实验值是通过matlab仿真得到,小说节选的两项理论值是通过查阅《信息论基础》(田宝玉、杨洁等编著,57页)得到,随机序列的理论值是通过计算:得到,随机序列共有53个符号,等概出现,我们认为H(Y|X)=H(Y)=。
北邮ASIC实验报告及源代码
ASIC设计原理及应用实验报告2016年06月05日学院:电子工程学院姓名:刘博闻学号:2013211049班级:2013211209实验一多路选择器的设计1 实验目的掌握门级电路与行为级电路设计的区别掌握逻辑电路的设计方法熟悉测试程序的编写注意代码规范性要求2 实验内容1.设计一个有两位选择信号的四选一多路选择器,可以根据控制信号从两位或多个输入源中选择一个予以输出。
2.用基本逻辑门来实现多路选择器,即门级语言进行描述。
参考门级电路如下。
3.用行为级语言进行描述,通过case语句重新设计仿真。
4.编写多路选择器的测试激励模块,并通过Synopsys工具进行仿真。
3 实验代码及结果截图3.1代码3.1.1 门级设计程序module mux1(i,s,out);input [3:0] i;input [1:0] s;output out;wire s1_n,s0_n,y0,y1,y2,y3;not n1(s1_n,s[1]);not n2(s0_n,s[0]);and a0(y0,i[0],s1_n,s0_n);and a1(y1,i[1],s1_n,s[0]);and a2(y2,i[2],s[1],s0_n);and a3(y3,i[3],s[1],s[0]);or o0(out,y0,y1,y2,y3);endmodule3.1.2 门级测试程序`timescale 1ns/1psmodule mux1_test();reg [3:0]i;reg [1:0]s;wire out;mux1(.i(i),.s(s),.out(out));initialbegin$dumpvars(1,mux1_test);i=4'b0101;s=2'b00;#10 s=2'b01;#10 s=2'b10;#10 s=2'b11;#10 s=2'b00;#100 $finish;endendmodule3.1.3 行为级设计程序module action1(i,s,out);input [3:0] i;input [1:0] s;output out;reg out;always@(i or s)begincase(s)default :out=1'b0;2'b00:out=i[0];2'b01:out=i[1];2'b10:out=i[2];2'b11:out=i[3];endcaseendendmodule3.1.4 行为级测试程序`timescale 1ns/1psmodule action1_test();reg [3:0]i;reg [1:0]s;wire out;action1(.i(i),.s(s),.out(out));initialbegin$dumpvars(1,action1_test);i=4'b0101;s=2'b00;#10 s=2'b10;#10 s=2'b01;#10 s=2'b11;#10 s=2'b00;#100 $finish;endendmodule3.2 仿真波形3.2.1 门级3.2.2 行为级4 思考题1.门级电路与行为级电路设计的主要区别是什么?答:行为级是行为的描述,即对所需实现功能的语言描述,如何时读进输入,何时对输入进行操作,何时将操作结果写出到输出端口;而门级由基本的门电路来描述逻辑门以及逻辑门之间的连接的模型,是实例引用,很多行为级描述是不能逻辑综合的。
北邮小学期c++实验报告and程序文件
C++实验课总结张涛实验一:简单c++程序设计一、1、猜价格游戏编写C++程序完成以下功能:(1)假定有一件商品,程序用随机数指定该商品的价格(1-1000的整数);(2)提示用户猜价格,并输入:若用户猜的价格比商品价格高或低,对用户作出相应的提示;(3)直到猜对为止,并给出提示。
#include<iostream>#include<time.h>using namespace std;//使用命名空间std.int main(){srand(time(NULL));//将时钟数作为随机数种子int price,guess;price = rand() % 1000 + 1;//取余,获得1~1000的随机数cout << "please input the price:" << endl;do{cin >> guess;//记录玩家所输入数值if(guess > price)cout << "The price is lower than your guess,please input the price again:" << endl;if(guess < price)cout << "The price is higher than your guess,please input the price again:" << endl;//给予玩家比较大小的提示}while (guess != price);//循环结构cout << "The price you give is right.It cost " << price << "." <<endl;//获得正确答案system("pause");return 0;}2、计算N 以内的所有素数编写C++程序完成以下功能:(1)提示用户输入N;(2)计算出从2到N之间的所有素数;(3)将结果保存在一个文本文件中。
数字电路实验报告_北邮
一、实验目的本次实验旨在通过实践操作,加深对数字电路基本原理和设计方法的理解,掌握数字电路实验的基本步骤和实验方法。
通过本次实验,培养学生的动手能力、实验技能和团队合作精神。
二、实验内容1. 实验一:TTL输入与非门74LS00逻辑功能分析(1)实验原理TTL输入与非门74LS00是一种常用的数字逻辑门,具有高抗干扰性和低功耗的特点。
本实验通过对74LS00的逻辑功能进行分析,了解其工作原理和性能指标。
(2)实验步骤① 使用实验箱和实验器材搭建74LS00与非门的实验电路。
② 通过实验箱提供的逻辑开关和指示灯,验证74LS00与非门的逻辑功能。
③ 分析实验结果,总结74LS00与非门的工作原理。
2. 实验二:数字钟设计(1)实验原理数字钟是一种典型的数字电路应用,由组合逻辑电路和时序电路组成。
本实验通过设计一个24小时数字钟,使学生掌握数字电路的基本设计方法。
(2)实验步骤① 分析数字钟的构成,包括分频器电路、时间计数器电路、振荡器电路和数字时钟的计数显示电路。
② 设计分频器电路,实现1Hz的输出信号。
③ 设计时间计数器电路,实现时、分、秒的计数。
④ 设计振荡器电路,产生稳定的时钟信号。
⑤ 设计数字时钟的计数显示电路,实现时、分、秒的显示。
⑥ 组装实验电路,测试数字钟的功能。
3. 实验三:全加器设计(1)实验原理全加器是一种数字电路,用于实现二进制数的加法运算。
本实验通过设计全加器,使学生掌握全加器的工作原理和设计方法。
(2)实验步骤① 分析全加器的逻辑功能,确定输入和输出关系。
② 使用实验箱和实验器材搭建全加器的实验电路。
③ 通过实验箱提供的逻辑开关和指示灯,验证全加器的逻辑功能。
④ 分析实验结果,总结全加器的工作原理。
三、实验结果与分析1. 实验一:TTL输入与非门74LS00逻辑功能分析实验结果表明,74LS00与非门的逻辑功能符合预期,具有良好的抗干扰性和低功耗特点。
2. 实验二:数字钟设计实验结果表明,设计的数字钟能够实现24小时计时,时、分、秒的显示准确,满足实验要求。
北京邮电大学实验报告
北京邮电大学实验报告北京邮电大学实验报告引言:实验是科学研究的基础,通过实验可以验证理论,探索未知。
本篇文章将以北京邮电大学实验为主题,介绍该校在科研实践中的一些成果和经验。
一、实验室建设与管理北京邮电大学实验室建设十分重视安全和环境保护,建立了一套严格的实验室管理制度。
首先,实验室设立了专门的安全管理部门,负责实验室的安全检查和事故处理。
其次,实验室采取了严格的实验室准入制度,对进入实验室的人员进行资质审核和培训,确保实验操作的安全性。
此外,实验室还配备了各种安全设施和应急设备,以应对可能发生的事故。
二、实验课程改革与创新北京邮电大学注重实验课程的改革和创新,通过引入新的实验项目和教学手段,提高学生的实验能力和创新意识。
例如,在通信工程实验课程中,学生不仅要进行基础的实验操作,还需要进行实验设计和创新。
这种实验模式培养了学生的动手能力和问题解决能力,使他们在实践中更好地理解理论知识。
三、科研实践与成果北京邮电大学的科研实践成果丰硕,涵盖了通信工程、计算机科学、电子信息等多个领域。
例如,在通信工程领域,学校的研究团队在无线通信技术方面取得了重要突破,开展了一系列关键技术研究,为我国通信产业的发展做出了重要贡献。
此外,在计算机科学领域,学校的研究人员致力于人工智能和大数据技术的研究,取得了一系列具有国际影响力的研究成果。
四、国际合作与交流北京邮电大学积极开展国际合作与交流,与世界各地的高校和科研机构建立了广泛的合作关系。
通过国际合作,学校的研究人员能够与国际顶尖科学家进行深入交流和合作,共同攻克科学难题。
同时,学校还鼓励学生参加国际学术会议和交流项目,拓宽国际视野,提高学术水平。
五、实验教学与社会服务北京邮电大学实验教学不仅服务于学生的学习,也服务于社会的发展。
学校的实验室向社会开放,接受企业和科研机构的委托进行实验研究和测试。
通过与社会各界的合作,学校能够更好地了解社会需求,培养学生的实践能力,同时也为社会提供了实验技术支持。
北邮 微机原理实验报告
北邮微机原理实验报告北邮微机原理实验报告引言:微机原理是计算机科学与技术专业的一门重要课程,通过学习和实践,我们可以深入了解计算机的组成结构和工作原理。
本次实验旨在通过对北邮微机原理实验的探索,加深对计算机硬件和软件的理解,并提升我们的实践能力。
一、实验目的本次实验的目的是熟悉计算机的硬件组成和工作原理,并通过实践操作加深对微机原理的理解。
具体包括以下几个方面:1. 熟悉计算机的硬件组成,包括中央处理器(CPU)、内存、硬盘等;2. 掌握计算机的启动过程和操作系统的加载;3. 理解计算机的指令集和指令执行过程;4. 学习计算机的输入输出设备和外部接口。
二、实验过程1. 实验一:计算机硬件的组装与连接在本实验中,我们需要将计算机的各个硬件组件进行正确的连接和组装。
首先,我们需要将主板与CPU、内存、显卡等硬件设备进行连接。
其次,我们需要将硬盘、光驱等存储设备与主板进行连接。
最后,我们需要将键盘、鼠标、显示器等外部设备与计算机进行连接。
通过这一步骤,我们可以了解计算机硬件的组成结构,并掌握正确的连接方式。
2. 实验二:计算机的启动过程和操作系统的加载在本实验中,我们需要了解计算机的启动过程和操作系统的加载过程。
首先,我们需要按下电源按钮,启动计算机。
然后,计算机会进行自检和硬件初始化,并加载操作系统。
在这个过程中,我们可以观察到计算机的启动画面和加载过程。
通过这一步骤,我们可以深入了解计算机的启动过程和操作系统的加载机制。
3. 实验三:计算机的指令集和指令执行过程在本实验中,我们需要学习计算机的指令集和指令执行过程。
首先,我们需要了解不同类型的指令,包括算术指令、逻辑指令、数据传输指令等。
然后,我们需要通过编写简单的汇编语言程序,来实现对数据的处理和操作。
在这个过程中,我们可以观察到指令的执行过程和结果。
通过这一步骤,我们可以深入理解计算机的指令集和指令执行过程。
4. 实验四:计算机的输入输出设备和外部接口在本实验中,我们需要学习计算机的输入输出设备和外部接口。
北京邮电大学电子电路实验报告
北京邮电大学电子电路实验报告实验一:函数信号发生器的设计与调测院系:信息与通信工程学院班级:2009211129姓名:班内序号:学号:指导教师:王老师课题名称:函数信号发生器的设计与调测摘要:本实验由两个电路组成,方波—三角波发生电路和三角波—正弦波变换电路。
方波—三角波发生电路采用运放组成,由自激的单线比较器产生方波,通过积分电路产生三角波,在经过差分电路可实现三角波—正弦波变换。
该电路振荡频率和幅度用电位器调节,输出方波幅度的大小有稳压管的稳压值决定;而正弦波幅度和电路的对称性也分别由两个电位器调节,以实现良好的正弦波输出图形。
关键词:方波、三角波、正弦波、频率调节、幅度调节,占空比调节设计任务要求:基本要求:a)设计一个设计制作一个可输出方波、三角波、正弦波信号的函数信号发生器。
1,输出频率能在1—10KHz范围内连续可调,无明显失真;2,方波输出电压Uopp = 12V,上升、下降沿小于10us,占空比可调范围30%—70%;3,三角波Uopp = 8V;4,正弦波Uopp≥1V。
b)用PROTEL软件绘制完整的电路原理图(SCH)设计思路:1,原理框图:2,系统的组成框图:分块电路和总体电路的设计:函数发生器是指能自动产生方波、三角波和正弦波的电压波形的电路或者仪器。
电路形式可以采用由运放及分离元件构成;也可以采用单片集成函数发生器。
根据用途不同,有产生三种或多种波形的函数发生器,本课题采用由集成运算放大器与晶体差分管放大器共同组成的方波—三角波、三角波—正弦波函数发生器的方法。
本课题中函数信号发生器电路组成如下:第一个电路是由比较器和积分器组成方波—三角波产生电路。
单限比较器输出的方波经积分器得到三角波;第二个电路是由差分放大器组成的三角波—正弦波变换电路。
差分放大器的特点:工作点稳定,输入阻抗高,抗干扰能力较强等。
特别是作为直流放大器时,可以有效地抑制零点漂移,因此可将频率很低的三角波变换成正弦波波形变换的原理是利用差分放大器的传输特性曲线的非线性。
北邮C++编程实验 实验一
第二章基本数据类型与表达式实验题:一、按要求完成下列各题1.上机调试下列程序,并输出正确的结果要求:(1)对有注释标记的语句进行功能注释。
(2)写出调试程序的过程。
#include<iostream>using namespace std;void main() //定义主函数{ //函数模块分隔符int x,y; //定义两个整型变量x,y,cin>>x>>y; //输入x,y值cout<<!(y==x/2)<<endl; //当x不是y的两倍时,输出1,否则输出0cout<<(y!=x%3)<<endl;cout<<(x>0&&y<0)<<endl;cout<<(x!=y||x>=y)<<endl;y=x--+1; //令y=x+1,之后将x的值加1cout<<(x<y?x++:y++)<<endl;cout<<endl; //输出换行符}2. 从键盘上输入x、y、s的值,计算下面公式的值,并对有注释标记的语句进行注释x=(x+--y)*s++要求:上机修改程序中的语法错误,并输出x,y和s的值。
#include<iostream>using namespace std;void main(){ int x,y,s; //定义三个整数 xyzcout<<"请输入三个数x,y,s:"; //输出这行文字cin>>x>>y>>s; //输入三个整数 xyzx=(x+--y)*s++;cout<<"x="<<x<<endl<<"y="<<y<<endl<<"s="<<s<<endl; //输出三个整数 xyz cout<<endl;}输出结果:3.在下列程序中填上适当的语句,完成计算下面公式的功能,并输出下列结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5.24 逆序排列字符串。
//可以根据数组元素的个数调整。
#include<iostream>
using namespace std;
char convert(char N[ ])
{
int i,j;
cout<<"输入的一串字符为:"<<endl;
for(i=0;i<10;i++)
cin>>N[i];
cout<<"逆序排放的字符串为:"<<endl;
{for(j=9;j>=0;j--)
cout<<N[j];}
return N[j];
}
void main()
{
char N[10];
convert(N);
cout<<endl;
}
5.26求完数。
#include<iostream>
#include<cmath>
using namespace std;
unsigned int power(unsigned int i)
{
unsigned int j,k=1;
for(j=1;j<=i;j++)
k*=2;
return k;
}
bool DecidePrime( double h)
{
unsigned int s,z,p;
double t;
t=sqrt(h);
z=floor(t);
for(s=2;s<=z;s++)
{
p=(unsigned int)h;
if(p%s==0)
break;
}
if(s>=z+1)
return 1;
else
return 0;
}
void main()
{
unsigned int m,n=2,x,y,r=0;
while(r<5)
{
x=power(n);
y=x-1;
if(DecidePrime(y))
{
m=x/2*y;
cout<<"n="<<n<<"完数为:"<<m<<endl;
r++;
}
n++;
}
}
5.27弦割法求方程附近的根。
#include<iostream>
#include<cmath>
using namespace std;
double function(double x)
{
double y;
y=x*x*x-x*x-1;
return y;
}
double xIntersection(double x0,double x1) {
double f0,f1,y;
f0=function(x0);
f1=function(x1);
y=(x0*f1-x1*f0)/(f1-f0);
return y;
}
double eqRoot(double x0,double x1)
{
double x,y,y1,y2;
y1=function(x0);
y2=function(x1);
do
{
x=xIntersection(x0,x1);
y=function(x);
if(y*y1>0)
{
y1=y;
x0=x;
}
else
{y2=y;
x1=x;}
}while(fabs(y)>=0.000001);
return x;
}
void main()
{
double x0,x1,f1,f2,x;
do
{
cout<<"请输入.5附近的两个数x0,x1:";
cin>>x0>>x1;
f1=function(x0);
f2=function(x1);
}while(f1*f2>=0);
x=eqRoot(x0,x1);
cout<<"此方程在.5附近的根是:"<<x<<endl; }。