实验4

实验4
实验4

实验四单级放大电路

A-

一、实验目的

1.学会在面包板上搭接电路的方法

2.学习放大电路的调试方法

3.掌握放大电路的静态工作点

4.研究负反馈对放大器性能的影响;了解射极输出器的基本醒脑

5.了解静态工作点对输出波形的影响和负载对放大倍数的影响

二、实验原理

(一)单极低频放大器的模型和性能

1. 单极低频放大器的模型:

单极低频放大器能将几十Hz~几百kHz的低频信号进行不失真地放大,是放大器中最基本的放大器,单极低频放大器根据性能不同可分为基本放大器和负反馈放大器。

从放大器的输出端取出信号电压(或电流)经过反馈万罗得到反馈信号电压(或电流),送回放大器的输入端称为反馈,反馈放大器的原理框图如图一所示。若反馈信号的极性与原输入信号的极性相反,则为负反馈。

根据输出端的取样信号(电压或电流)与送回输入端的连接方式(串联或并联)的不同,一般可分为四种反馈类型——电压串联反馈、电流串联反馈、电压并联反馈和电流并联反馈。负反馈是改变放大器及其他电子系统特性的一种重要手段。负反馈使放大器的净输入信号减小,因此放大器的增益下降;同时改善了放大器的其他性能:提高了增益稳定性,展宽了通频带,减小了非线性失真,以及改变了放大器的输入阻抗和输出阻抗。负反馈对输入阻抗和输出阻抗的影响跟反馈类型有关。由于串联负反馈是在输入回路上并联了一个反馈电流,从而降低了输入阻抗。凡是电压负反馈都有保持输出电流稳定的趋势,与此恒流相关的是输出阻抗增大。

图2 单级阻容耦合放大器图3 单级电流串联负反馈放电器

2.单机电流串联负反馈放大器与基本放大器的性能比较:

电路图二是分压式偏置的共射基本放大电路,它未引入交流负反馈。

电路图三是在图二的基础上,去掉射级旁路电容Ce,这样就引入了电流串联负反馈,它们的主要性能如表一所示。

3.射级输出器的性能:

电路图四是射极输出器,它是单极电压串联负反馈电路,由于它的交流输出电压VQ全部反馈回输入端,故其电压增益:

输入电阻:

输出电阻:

当信号源内阻

射极输出器由于Avf≈1,故它具有电压跟随特性,且输入电阻高,输出电阻低的特点,在多级放大电路中常作为隔离器,起阻抗变换作用。

(二)放大器参数及测量方法

1.静态工作点的选择:

放大器要不失真地放大信号,必须设置合适的静态工作点Q。为获得最大不失真输出电压,静态工作点应选在输出特性曲线上交流负载线终点,如图五所示,若工作点选得太高,如图五中的Q2,就容易产生饱和失真;若工作点选得太低,如图五中的Q1,就容易产生截止失真。

若放大器对信号放大,由于输出交流幅度很小,非线性失真不是主要问题,故Q点不一定要选在交流负载线的中点,一般前置放大器的工作点都选得低一些,这有利于降低功耗,减少噪声,并提高输入阻抗。

采用简单偏置的放大电路,其静态工作点将随着环境温度的变化而变化,若采用电流负反馈分压式偏执电路,如图二所示,它具有自动稳定工作点的能力,因而获得广泛应用。

在图六基本放大电路中,当电源电压Ec和元件参数选定后,就、其静态工作点只靠Rw 来调节,Rw增大,IBQ减小,Q点降低;反之,IBQ增大,Q点升高,具有以下关系:

2.静态工作点测量与调试:

根据定义,静态工作点是指放大器不输入信号,且输入端短路(输入端电路COM)时,三极管I-CQ、V-BEQ、V-CEQ值称为静态工作点。由于在电路中,电流测量需将电流表串接所测支路,其换算关系为:

测量装置图如图六所示。若测量计算的工作电流I-CQ不符合要求,调节Rw的大小,改变I-BQ值,以达到调整工作电流I-CQ及电压V-CEQ的目的。

3.单机放大电路的电压放大倍数Av:

电压放大倍数是反映放大器对信号的放大能力的一个参数。根据定义,低频放大器的电压放大倍数是指在输出不失真条件下,输出电压有效值(峰值、峰峰值)与输入电压有效值

(峰值,峰峰值)之比:

根据理论分析:

4.放大倍数测量:

放大倍数按定义进行测量,即:输出交流电压与输入交流电压的比值。采用示波器比较测量方法(适用于非正弦电压)和交流电压表测量(适用于正弦电压)。

测量装置如图七,在测量时,为避免不必要的感应和干扰,必须将所有测量仪器公共端与放大器公共端连接在一起。

在测量过程中,应适当选择输入信号(幅度、频率),通过示波器观察输出波形,在不失真条件下,应尽量加大输出信号幅度,以避免输入信号太小易受干扰。

5.输入阻抗测量:

放大器输入阻抗为从输入端向放大器看进去的等效电阻,即:Ri=Vi/Ii;该电阻为动态电阻,不能用万用表测量。输出阻抗Ri测量装置如图8所示:

测量图中,R为测量Ri所串联在输入回路的已知电阻(该电阻可根据理论计算Ri选择,为减少测量误差,一般选择与Ri同数量级),其目的是避免测量输入电路中电流,而改由测量电压进行换算,即:

上述测量方法仅适用于放大器输入阻抗远小于测量仪器输入阻抗条件下。

6.输入阻抗测量:

放大器输出阻抗为从输出端向放大器看进去的等效电阻:即:Ro=Vo/Io;该电阻为动态电阻不能用万用表测量。输出阻抗测量装置如图八所示。

7.放大器幅频特性:

放大器幅频特性是指放大器的电压放大倍数与频率的关系曲线,如图九所示。

在中频段,耦合电容和射级电容所呈现的阻抗很小,可以视为短路,同时晶体管的β值受频率变化的影响以及频率对晶体管结电容与分布电容的影响均可忽略,此时电压放大倍数为最大值Av=Avm。

在低频段和高频段,由于上述各种因素的影响不可忽略,试点压倒、放大倍数下降。通常将电压放大倍数下降到中频段Avm的0.707倍时所对应的频率,称为放大器的上限频率fH和下限频率fL,通频带:△f0.7=fH-fL

放大器频率特性测量装置如图七所示,在保证输入Vi不变情况下,改变输入信号频率(升高、下降),使输出Vo下降为中频时的0.707倍,则对应的频率为fH、fL。

三、实验仪器

1.示波器1台、

2.函数信号发生器1台、

3.直流稳压电源1台、

4.数字万用表1台、

5.多功能电路实验箱1台、

6.交流毫伏表1台

四、实验内容

1.搭接实验电路:

检查电路连接无误后,方可将+12V直流电源接入电路。

2.静态工作点的测量与调试:

3.基本放大器的电压放大倍数、输入电阻、输出电阻的测量:

(1)外加输入信号从放大器Vs端输入信号:频率f=2kHz的正弦信号,R=1k,使Vip-p=30mV。在空载(RL=无穷)情况下,用示波器同时观察输入和输出波形(Vi和Vo),

若输出波形失真,应适当减小输入信号。

(2)测量Vs、Vi、Vo、VoL(用毫伏表。四位半的AC档)

4.放大器上下限频率的测量:

Vp-p=30mV,f=2kHz时,用示波器观察并测量输出电压VoL。当频率从2kHz向高端增大时,使输出电压下降到0.707VoL时,记下此时信号发生器的频率,即为上限频率fH;同理,当频率向低端减小时,使输出电压降到0.707VoL时,记下此时信号发生器的频率,即为下

5.电流串联负反馈放大器参数测量

图十电路基础上,将Ce去掉(即为电流串联负反馈放大器),并将R改为10k,使

五、注意事项

(一)搭接注意事项:

1、图11仅供参考,请大家务必不要完全按照图11搭接,以避免不必要的错误。

2、搞清楚面包板的连通结构,确认小孔之间是如何连通的。

3、参看图11,首先在和底部接触良好的宽板部分的最上端搭接中心器件三极管(型号:9011,NPN型),三极管平面朝向实验者,从左到右分别为E、B、C三极。管教之间空开一列孔。

4、铝电解电容有正负极性,电容的正极朝向晶体管。

5、特别注意电阻色环的前2环颜色一样的电阻不要搞错,比如1k和10k,5.1k和51k 的电阻。

6、地线和电源线不要忘记搭接,当有比较多的元件需要接地或接电源时,推荐使用面包板横向25个相通孔区。搭接电源线时,要注意用裸露的导线插入细的电源插孔。接地线时,要注意横向25个孔的结构,以保证所有地线的连通。

测量之前,请先确认四位半红、黑表笔完好,无中间断开,量程和功能档位选择正确(静态点是直流电压)。并特别注意,在测量静态工作点时,不能在电路的输入端接入交流信号。

先根据实际电路图,测算基极和集电极的静态电压大致为2.0V和5.5V左右,当测量值

偏离该值太多时,需考虑电路出错的可能。

若测量值始终为电源电压12v 左右或者0v 左右,考虑地线断路或者电源线断路(先确认已经打开电源开关)。

若发射极和基极电压差值约等于0.7V ,但集电极电压和测算值偏差太多,则检查发射极或者集电极电阻阻值是否正确、电容的极性是否接错(正极朝向三极管,若负端朝三极管,会流过直流电流,导致集电极的直流电压值和测量值不符合)。

在输入端接入交流信号开始测试之前,请确认电路的静态工作点同表1的测试值是一样的,若静态工作点发生了变化,请回到内容2重新检查。

在使用示波器之前,请确认已经对示波器进行了自检,且能正确显示中频段(2kHz )信号。两个通道都把“带宽限制”勾选起来。在信号发生器上设置好输入信号后,将信号发生器的输出端直接和示波器的2个探头相连(信号发生器信号线红夹子接2个探头钩子,黑夹子接2个探头地线)。若波形无法显示,先确认信号发生器的output 开关是否打开。若此时示波器上显示的波形形状正确,但位置不固定,无规律的飘动,则请检查信号线和探头的地线是否导通。

一般用CH1观测输入波形,用CH2观测输出波形,若CH1波形可以显示,CH2波形无法显示,则进行如下检查:

首先断开交流信号,检查静态工作点是否正确,如果不正确,重新调整静态工作点。 如果静态工作点正确,则根据电路中信号的走向,从R ,C1,B 极、C 极、C2各端一次检查,看看那个地方出错。

若Vs 和Vi 的测量值几乎相同,则检查信号是否在R 的右端(靠近晶体管那端)加入的。 若空载和带载时,测得的输出信号幅值都一样,说明负载没有真正连到电路当中。请检查负载电阻两端是否分别和C2负端及地正确连接,没有出现插孔错排现象;或者接地时,所用的面包板窄板横向插孔和实际所用的地线区域电气上有否连通(横向有50个孔,左右两区中间断开,只有25个孔各自相通)。

请注意四位半测量值(有效值)和示波器测量值(峰峰值)之间的区别:

V

V 有效值

若增加或减小输入信号的频率时,放大器的输出信号幅度保持不变,则应该是信号发生器上输出的放大器的输入信号的频率增加或减少的不够,此时继续同方向调节频率直至输出信号幅度开始下降即可。注意要随时改变时间灵敏度旋钮。

六、思考题

1、 如何根据静态工作点判别电路是否工作在放大状态?

答:测UCE 。UCE=E/2时,放大状态;UCE=E 时,截止状态;UCE≤0.1或0.3时, 饱和状态。静态的计算也可以以UCE 的计算结果判定。

2、 按实验电路,若输入信号增大到100mV ,输出电压=?是否满足Vo=Av*Vi ,试说明原因?

答:此时电路处于饱和状态。

3、 如果静态工作点测量值和估算值不符,可能的原因是那些呢,试分类阐述。 答:数据量少离真值的偏差大;

4、观察放大器的输入、输出波形时,如示波器上不显示任何波形,请问该如何调整相关各个部分(含信号发生器、示波器和电路),使输入、输出波形在示波器上正确显示?如果示波器上只能显示输入波形,请问该如何调整相关各个部分(含信号发生器、示波器和电路),使输出波形在示波器上正确显示?

答:

不显示任何波形:检查是否按过output,

只能显示输入波形:检查输出波形接线是否完整。

C上机实验报告实验四

实验四数组、指针与字符串 1.实验目的 1.学习使用数组 2.学习字符串数据的组织和处理 3.学习标准C++库的使用 4.掌握指针的使用方法 5.练习通过Debug观察指针的内容及其所指的对象的内容 6.联系通过动态内存分配实现动态数组,并体会指针在其中的作用 7.分别使用字符数组和标准C++库练习处理字符串的方法 2.实验要求 1.编写并测试3*3矩阵转置函数,使用数组保存3*3矩阵。 2.使用动态内存分配生成动态数组来重新完成上题,使用指针实现函数的功能。 3.编程实现两字符串的连接。要求使用字符数组保存字符串,不要使用系统函数。 4.使用string类定义字符串对象,重新实现上一小题。 5.定义一个Employee类,其中包括姓名、街道地址、城市和邮编等属性,以及change_name()和display()等函数。Display()显示姓名、街道地址、城市和邮编等属性,change_name()改变对象的姓名属性。实现并测试这个类。 6.定义包含5个元素的对象数组,每个元素都是Employee类型的对象。 7. (选做)修改实验4中的选做实验中的people(人员)类。具有的属性如下:姓名char name[11]、编号char number[7]、性别char sex[3]、生日birthday、身份证号char id[16]。其中“出生日期”定义为一个“日期”类内嵌对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、聚集。在测试程序中定义people类的对象数组,录入数据并显示。 3.实验内容及实验步骤 1.编写矩阵转置函数,输入参数为3*3整形数组,使用循环语句实现矩阵元素的行列对调,注意在循环语句中究竟需要对哪些元素进行操作,编写main()函数实现输入、输出。程序名:lab6_1.cpp。 2.改写矩阵转置函数,参数为整型指针,使用指针对数组元素进行操作,在main()函数中使用new操作符分配内存生成动态数组。通过Debug观察指针的内容及其所指的对象中的内容。程序名:lab6_2.cpp。 3.编程实现两字符串的连接。定义字符数组保存字符串,在程序中提示用户输入两个字符串,实现两个字符串的连接,最后用cout语句显示输出。程序名:lab6_3.cpp。用cin实现输入,注意,字符串的结束标志是ASCII码0,使用循环语句进行字符串间的字符拷贝。 4.使用string类定义字符串对象,编程实现两字符串的连接。在string类中已重载了运算符“+=”实现字符串的连接,可以使用这个功能。程序名:lab6_4.cpp。 5.在employee.h文件中定义Employee类。Employee类具有姓名、街道地址、城市和邮编等私有数据成员,在成员函数中,构造函数用来初始化所有数据成员;display()中使用cout显示

c语言实验报告4 循环结构程序设计

《C程序设计》课程实验报告 学院:班级:姓名:学号: 实验设备:计算机1台实验日期:2011年3月1日 实验项目名称循环结构程序设计 实验目的 掌握使用三种循环语句实现循环结构的方法。 实验要求:能用while~ do~while for 三种循环语句实现循环结构,编写简单的程序,掌握这三种循环语句。 实验内容(包括步骤):1.猴子吃桃问题。猴子第一天摘下若干个桃子,当即吃了一半另一个,以后每天早晨都吃剩下的一半另一个,到第十天早晨再想吃时,就剩一个桃子。问第一天共摘了多少桃子。 要求:分别用三种语句编写程序。 2.编写程序验证下列结论:任何一个自然数n的立方都等于n个连续奇数之和。例如:13=1;23=3+5;33=7+9+11;43=13+15+17+19。 要求:程序对每个输入的自然数计算并输出相应的连续奇数,直到输入的自然数为0时止。 3.编写程序,求1-3+5-7+…-99+101的值。 4.编写程序,求e的值。e ≈ 1+1/1!+1/2!+1/3!+1/4!+…+1/n! (1)用for循环,计算前50项。 (2)用while循环,要求直至最后一项的值小于10-6。 5.编写程序,输出从公元1600年至2000年所有闰年的年号。每输出5个年号换一行。判断公元年是否为闰年的条件是:

(1)公元年数如能被4整除,而不能被100整除,则是闰年。 (2)公元年数如能被400整除也是闰年。 6.编写程序,打印以下图形: * *** ***** ******* ***** *** * 7.输入一行字符,统计输入的字符中字母‘a’出现的次数(包括大小写)。 8.我国1991年有11.6亿人口,要求根据人口平均年增长率,计算从1991年算起经过多少年后我国的人口增加到15亿。 9.有一个四位数F=BBAA,前二位数相同,后二位数相同,此数又是某个自然数T的平方,求此数。 10.分解一个正整数的所有质因数 调试与结果测试:部分程序出现错误经过调整后调试正常,达到题目要求的结果,运行正常。

实验(4)-选择结构

C 语言程序设计 实验教学(4) 【实验目的】通过程序设计实现,掌握if 结构和switch 结构的正确应用。 【实验要求】使用if 结构和switch 结构实现多种条件的选择结构程序,熟练二者的应用范围和注意事项。练习条件表达式的书写。 【实验课时】4.0 【实验内容】 1、 运行下列程序,分析结果。 main( ) { int a=1,b=2,m=0,n=0,k; k=(n=b>a)||(m=a10 2+x+1

补充作业: 9、完成下列分段函数的计算:分别使用if-else if-else结构和if-if嵌套 结构来实现。 10、完成下列分段函数的计算:分别使用if-else if-else结构和if-if嵌 套结构来实现。 11、完成下列分段函数的计算:分别使用if-else if-else结构和if-if嵌套结构来实现。 12、完成下列函数的计算:分别使用if-else if-else结构和if-if嵌套结构来实现。 13、完成下列函数的计算:分别使用if-else if-else结构和if-if嵌套结构来实现。

微机原理实验四实验报告

实验报告

实验四 8251可编程串行口与PC机通信实验一、实验要求 利用实验箱内的8251A芯片,实现与PC机的通信。 二、实验目的 1.掌握8251A芯片结构和编程方法; 2.了解实现串行通信的硬件环境,数据格式和数据交换协议; 3.了解PC机通信的基本要求。 三、实验原理 (一)8251A芯片工作方式配置: 1. 8个数据位; 2.无奇偶校验位; 3.1个停止位; 4.波特率因子设为16; 5. 波特率设为9600。 (二)8251A主要寄存器说明 图4-1 模式字 图4-2 命令字

CO MMAN D I NSTR UCT ION FO RMA T 图4-3 状态字 (三)8251编程 对8251 的编程就是对8251 的寄存器的操作,下面分别给出8251 的几个寄存器的格式。(1)方式控制字 方式控制字用来指定通信方式及其方式下的数据格式,具体各位的定义如图4-4所示。 图4-4 方式控制字说明 (2)命令控制字 命令控制字用于指定8251 进行某种操作(如发送、接收、内部复位和检测同步字符等)或处于某种工作状态,以便接收或发送数据。图4-5 所示的是8251 命令控制字各位的定义。 图4-5命令控制字说明 (3)状态字 CPU 通过状态字来了解8251 当前的工作状态,以决定下一步的操作,8251 的状态字如 图4-6所示。 图4-6 状态字说明 四、实验电路连接: 1.CS8251接228H,CS8279已固定接至238H; 2.扩展通信口18中的232RXD连8251RXD ,232TXD连8251TXD;

3.计算机的两个RS232通信口,一个连至仿真机通信口,一个连至扩展通信口18(所有通信口均为DB9)。注意:RS232通信口必须在设备断电状态下插拔! 图4-7 连线图 五、实验内容及要求 1. 将例程从PDF文档中导入到WMD86软件编辑环境中,调试通过。使用软件自带的示波器,观察Txd管脚的输出,验证结果的正确性。将结果截图保存,贴入实验报告。 2.剔除例程中冗余部分,实现对例程的精简和优化。将精简内容与相应理由写入实验报告。 3.将自己学号的后三位数字通过RS232端口的Txd管脚输出。使用软件自带的示波器,观察Txd管脚的输出,验证结果的正确性。将结果截图保存,贴入实验报告。 4.通过读状态寄存器的方法,获得发送移位寄存器是否为空的信息,实现学号后三位数字的循环发送。将结果截图保存,贴入实验报告。 5.给每帧数据间添加固定的时间间隔,时间间隔为10000个指令周期。将结果截图保存,

实验4-2-选择结构

实验4-2 选择结构程序设计(二) 1 【实验目的】 (1)学会正确使用运算符和逻辑表达式 (2)熟练掌握if语句的三种结构 【实验要求】 (1)掌握运算符的优先级和结合方向,正确使用运算符和逻辑表达式。 (2)熟练掌握if语句的多分支结构。 (3)熟练掌握if语句关键字else的正确搭配使用。 【实验环境】 (1) Microsoft XP操作系统 (2) Microsoft VC++ 6.0 【实验内容】 1、程序改错 题目描述:阅读下面程序段,编译调试程序,并改正错误语句。#include < stdio.h > int main() { double x,y; scanf(“%lf”,&x);

if(x>=5) y=x^2; else if(0=

实验四分支和循环程序设计实验(精)

实验四分支和循环程序设计实验 一、实验要求和目的 1.熟悉汇编语言程序设计结构; 2.熟悉汇编语言分支程序基本指令的使用方法; 3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法; 4.了解汇编语言循环程序设计的基本流程; 5.熟悉汇编语言循环基本指令的使用方法; 6.掌握利用汇编语言的循环指令完成循环程序设计方法。 二、软硬件环境 1、硬件环境:计算机系统 windows; 2、软件环境:装有 MASM、DEBUG、LINK、等应用程序。 三、实验涉及的主要知识 在实际应用中,经常根据一些条件来选择一条分支执行。汇编语言的条件判断主要是通过状态寄存器中的状态位、无符号数相减或有符号相减而导致的结果来进行。 1.无条件转移指令 JMP 无条件转移指令 JMP是使程序无条件转移至目标处,又分为段内转移、段间转移。 2.条件转移指令 JXX 条件转移指令可分为三大类: 1).简单条件转移指令指令。根据单个标志位的状态判断转移条件。标志位指令转移条件意义 CF JC CF=1 有进位/借位 JNC CF=0 无进位/借位 ZF JE/JZ ZF=1 相等/等于 0 JNE/JNZ ZF=0 不相等/不等于 0 SF JS SF=1 是负数 JNS SF=0 是正数 OF JO OF=1 有溢出 JNO OF=0 无溢出 PF

JP/JPE PF=1 有偶数个 1 JNP/JPO PF=0 有奇数个 1 2).无符号数条件转移指令。 假设在条件转移指令前使用比较指令,比较两个无符号数A,B,指令进行的的操作是 A-B,其转移指令如下: 指令转移条件意义 JA/JNBE CF=0 AND ZF=0 A>B JAE/JNB CF=0 OR ZF=1 A>=B JB/JNAE CF=1 AND ZF=0 AB JGE/JNL SF=OF OR ZF=1 A>=B JL/JNGE SF OF AND ZF=0 A

计组-4位乘法器实验报告

实验4位乘法器实验报告 姓名:X XX 学号:X XX 专业:计算机科学与技术课程名称:计算机组成同组学生姓名:无 实验时间:实验地点:指导老师:XXX 一、实验目的和要求 1.熟练掌握乘法器的工作原理和逻辑功能 二、实验内容和原理 实验内容: 根据课本上例3-7的原理,来实现4位移位乘法器的设计。 具体要求:1. 乘数和被乘数都是4位 2. 生成的乘积是8位的 3. 计算中涉及的所有数都是无符号数 4.需要设计重置功能 5.需要分步计算出结果(4位乘数的运算,需要四步算出结果) 实验原理: 1.乘法器原理图

2.本实验的要求: 1.需要设计按钮和相应开关,来增加乘数和被乘数 2.每按一下M13,给一个时钟,数码管的左边两位显示每一步的乘 积 3.4步计算出最终结果后,LED灯亮,按RESET重新开始计算 三、主要仪器设备 1.Spartan-III开发板1套 2.装有ISE的PC机1台 四、操作方法与实验步骤 实验步骤: 1.创建新的工程和新的源文件 2.编写verilog代码(top模块、display模块、乘法运算模块、去抖动模块以及 UCF引脚) 3.进行编译 4.进行Debug 工作,通过编译。

5.. 生成FPGA代码,下载到实验板上并调试,看是否与实现了预期功能 操作方法: TOP: module alu_top(clk, switch, o_seg, o_sel); input wire clk; input wire[4:0] switch; output wire [7:0] o_seg; // 只需七段显示数字,不用小数点 output wire [3:0] o_sel; // 4个数码管的位选 wire[15:0] disp_num; reg [15:0] i_r, i_s; wire [15:0] disp_code; wire o_zf; //zero detector initial begin i_r <= 16'h1122; //0x1122 i_s <= 16'h3344; //0x3344 end alu M1(i_r, i_s, switch[4:2], o_zf, disp_code); display M3(clk, disp_num, o_seg, o_sel); assign disp_num = switch[0]?disp_code:(switch[1] ? i_s : i_r); endmodule

实验二选择结构程序设计 实验报告

C语言程序设计与问题求解实验报告 实验二选择结构程序设计 一、实验目的 1.正确使用关系表达式和逻辑表达式表示条件; 2.掌握选择语句if-else和switch语句的使用方法; 3.掌握分支结构程序设计。 二、实验内容 1. 选择结构编程示例 year是闰年,即year能被4整除但不能被100整除,或year能被400整除。从键盘读入一个年份,然后输出其是否为闰年。具体代码如下: #include int main() { int year; printf("请输入年份:"); scanf("%d",&year); if ((year%4==0 && year%100!=0)||(year%400==0)) { printf("闰年!"); } else { printf("不是闰年!"); } return 0; } 运行结果:

2.分析并修改下面程序错误,使之能够正常运行。 错误代码一:下面的这个程序是当a和b的值相等的情况下输出“a和b相等”,而a与b的值不相等的话无输出。 #include void main() { int a=5,b=6; /* 或int a=5, b=5 ;*/ if (a==b); { printf("a和b相等\n"); } } 错误点: if (a==b)后有了分号“;”表示这条语句已执行完毕,所以无论a、b是否相等都会输出"a和b相等"。 修改后: #include void main() { int a=5,b=6; /* 或int a=5, b=5 ;*/ if (a==b) printf("a和b相等\n"); } 错误的代码二:下面的这个程序是当a和b的值相等的情况下a与b的值同时增加1,而a与b的值不相等的话,二者的值保持不变。 #include void main() { int a=5; /* 或int a=6*/ int b=6; if (a==b) a++; b++;

循环结构程序设计实验报告

嘉应学院计算机学院 实验报告 课程名称程序设计基础实验名称实验地点 指导老师实验时间提交时间 班级姓名座号 一、实验目的和要求 (1)熟悉掌握用while语句、do…while语句和for语句实现循环的方法。 (2)掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。 (3)进一步学习调试程序。 二、实验环境和方法 实验方法: (一)综合运用课本所学的知识,用不同的算法实现在不同的程序功能。 (二)结合指导老师的指导,解决程序中的问题,正确解决实际中存在的异常情况,逐步改善功能。 (三)根据实验内容,编译程序。 实验环境:Windows xp Visual C++6.0 三、实验内容及过程描述 实验步骤: ①进入Visual C++ 6.0集成环境。 ②输入自己编好的程序。 ③检查一遍已输入的程序是否有错(包括输入时输错的和编程中的错误),如发现有错, 及时改正。 ④进行编译和连接。如果在编译和连接过程中发现错误,频幕上会出现“报错信息”, 根据提示找到出错位置和原因,加以改正。再进行编译,如此反复直到不出错为止。 ⑤运行程序并分析运行结果是否合理。在运行是要注意当输入不同的数据时所得结果 是否正确,应运行多次,分别检查在不同情况下结果是否正确。 实验内容:编译以下题目的程序并调试运行。 (1)输入一行字符,分别统计出其中的英文字母、空格、数字和其它字符的个数。 编写程序如下: #include int main() { char c; int letters=0,space=0,digit=0,other=0; printf("请输入一行字符:\n"); while((c=getchar())!='\n')

实验4选择结构程序设计

实验4 选择结构程序设计 一、实验目的 1.掌握C语言中逻辑量的表示和使用方法。 2.掌握if语句及switch语句的使用。 3.熟悉各种表达式作为if语句及switch语句的条件。 4.了解Turbo C程序的基本调试方法。 二、实验内容 1.验证性实验 (1)分析程序的运行结果。 ①运行下列程序,输入1-7之间的任意数字,观察程序的运行结果。 #include void main() { int week; printf("Input(1-7):"); scanf("%d",&week); switch(week) { case 1:printf("Mon.\n"); break; case 2:printf("Tue.\n"); break; case 3:printf("Wed.\n"); break; case 4:printf("Tur.\n"); break; case 5:printf("Fri.\n"); break; case 6:printf("Sat.\n"); break; case 7:printf("Sun.\n"); break; default:printf("The input is wrong!\n"); } } ②运行5次下列程序,输入的数据分别是1,2,3,4,5,请观察每次的运行结果,并根据结果分析原因。 #include void main() { int n,a=0,b=0,c=0,d=0,k=0; scanf("%d",&n); switch(n) { case 1:b++;break; case 2:c++; case 3:d++;break; case 4:k++; default:a++; } printf("%d,%d,%d,%d",a,b,c,d,n); } (2)输入x的不同值,以下程序将求一给定“y=f(x)”函数的值。

C语言循环结构程序设计实验报告

甘肃政法学院 本科生实验报告 ( 五) 姓名:赵明翔 学院:公安技术学院 专业:安全防范工程 班级: 2015级安全防范工程班 实验课程名称:程序设计 实验日期:2016年月日 开课时间:2015学年第二学期

(2)输出所有的水仙花数,所谓水仙花数是指一个3位数,其各位数字李方和等于该数本身。例如,153是水仙花数,因为153=12+53+33程序如下: #include int main() { int i,j,k,n; printf("paicissus numbers are"); for (n=100;n<1000;n++) { i=n/100; j=n/10-i*10; k=n%10; if(n==i*i*i+j*j*j+k*k*k) printf("%d",n); } printf("\n"); return 0; } 运行结果: (3)猴子吃桃问题。猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第2天早上又将剩下的桃子吃掉一半,又

多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下了1个桃子了。求第一天共摘了多少桃子。 程序如下: #include int main() { int day,x1,x2; day=9; x2=1; while(day>0) {x1=(x2+1)*2; x2=x1; day--; } printf("total=%d\n",x1); return 0; } 运行结果: (4)①用牛顿迭代法求方程0634223=-+-x x x 在1.5附近的根. #include #include int main() {double x1,x0,f,f1; x1=1.5; do {x0=x1; f=((2*x0-4)*x0+3)*x0-6; f1=(6*x0-8)*x0+3; x1=x0-f/f1;

第4章选择结构习题答案

第四章选择结构习题参考答案: 一、选择题 1-10:A CABD CADD A 11-20:C CBDC ACACB 21-30:D CB B D AC A BA 31-40:DCDCB BAACB 41-50:CDDDA A A D DB 二、填空题 (1) 2 (2) 4,5,99 (3) 10 20 0 (4) 2 1 (5) -4 (6) 3 (7) yes (8) 1 (10) 20,0 (11) 585858 (12) 0 三、编程题 1, .#include void main() { int x,y; scanf(“%d”,&x); if(x>-1) {if(x>5) y=2*x+5; else if(x>2) y=x*(x+2); else y=2*x; printf(“y=%d\n”,y); } else printf(“输入值范围错误!”) ; } 2, . #include void main() {float a,b; scanf(“%f”,&a); if(a<2000) b=0; else if(a<4000) b=a*0.03; else if(a<5000) b=a*0.04; else b=a*0.05; printf(“收入所得税为:”,b); } 3,题目:输入某年某月某日,判断这一天是这一年的第几天? 方法一: #include void main() { int year,month,daily,sum;

printf("请输入年月日:/n"); scanf("%d%d%d",&year,&month,&daily); switch(month) { case 1:{sum=daily;break;} case 2:{sum=31+daily;break;} case 3:{sum=31+28+daily;break;} case 4:{sum=31+28+31+daily;break;} case 5:{sum=31+28+31+30+daily;break;} case 6:{sum=31+28+31+30+31+daily;break;} case 7:{sum=31+28+31+30+31+30+daily;break;} case 8:{sum=31+28+31+30+31+30+31+daily;break;} case 9:{sum=31+28+31+30+31+30+31+31+daily;break;} case 10:{sum=31+28+31+30+31+30+31+31+30+daily;break;} case 11:{sum=31+28+31+30+31+30+31+31+30+31+daily;break;} case 12:{sum=31+28+31+30+31+30+31+31+30+31+30+daily;break;} default:{printf("你输入的月份不对,请重新输入。/n");}; } if((year%400==0||(year%4==0 && year%100!=0) ) &&month>=2) printf("你输入的日子是%d年的第%d天。/n",year,sum+1); else printf("你输入的日子是%d年的第%d天。/n",year,sum); } 方法二: #include void main() {int day,month,year,sum,leap; printf("/nplease input year,month,day/n"); scanf("%d,%d,%d",&year,&month,&day); switch(month)/*先计算某月以前月份的总天数*/ {case 1:sum=0;break; case 2:sum=31;break; case 3:sum=59;break; case 4:sum=90;break; case 5:sum=120;break; case 6:sum=151;break; case 7:sum=181;break; case 8:sum=212;break; case 9:sum=243;break; case 10:sum=273;break; case 11:sum=304;break; case 12:sum=334;break; default:printf("data error");break; } sum=sum+day; /*再加上某天的天数*/ if(year%400==0||(year%4==0&&year%100!= 0))/*判断是不是闰年*/ leap=1; else leap=0; if(leap==1&&month>2)/*如果是闰年且月份大于2,总天数应该加一天*/ sum=sum+1; printf("这一天是这一年的第%d 天.",sum); }

实验报告四综述

成都信息工程大学遥感图像处理上机报告

1. 实验项目名称 遥感图像光谱增强处理 2. 实验目的 主成分分析:为了去除波段之间多余信息、将多波段的图像信息压缩到比原波段更有效的少数几个转换波段。 主成分逆变换:将主成分变换的图像重新恢复到RGB 彩色空间。缨帽变换:根据多光谱遥感中土壤、植被等信息在多维光谱空间中信息分布结构对图像 做的经验性线性正交变换。图像融合:将多源信道所采集到的关于同一目标的图像数据经过图像处理和计算机技术 等,最大限度的提取各自信道中的有利信息,最后综合成高质量的图像,以提高图像信息的利用率、改善计算机解译精度和可靠性、提升原始图像的空间分辨率和光谱分辨率,利于监测。 3. 实验原理 主成分分析法是一种降维的统计方法,它借助于一个正交变换,将其分量相关的原随机向量转化成其分量不相关的新随机向量,这在代数上表现为将原随机向量的协方差阵变换成对角形阵,在几何上表现为将原坐标系变换成新的正交坐标系,使之指向样本点散布最开的p 个正交方向,然后对多维变量系统进行降维处理,使之能以一个较高的精度转换成低维变量系统,再通过构造适当的价值函数,进一步把低维系统转化成一维系统。 缨帽变换又称KT 变换。是一种经验性的多波段图像的线性变换,是Kauth 和Thomas(1976) 在研究MSS 图像反映农作物和植被的生长过程时提出的。在研究过程中他们发现MSS 四个波段组成的四维空间中,植被的光谱数据点呈规律性分布,像缨帽状,因此将这种变换命名为缨帽变换。 图像融合就是通过一种特定算法将两幅或多幅图像合成为一幅新图像。该技术有基本的体系,主要包括的内容有:图像预处理,图像融合算法,图像融合评价,融合结果。图像融合系统的层次划分为:像素层融合、特征层融合、决策层融合,目前绝大多数融合算法研究都集中在这一层次上。 4. 数据来源

python实验3选择结构程序设计

实验3 选择结构程序设计(续) 【实验目的】 1.掌握分支条件语句的使用。 2.掌握分支嵌套语句的使用。 【实验内容】 1.通过Input()函数任意输入三条边长,经过简单的计算后,判断三条边长能否构成三角 形,并确定是类型的三角形,如(等边,等腰,一般三角形)。 a=input("Please input the length of a:") b=input("Please input the length of b:") c=input("Please input the length of c:") if a+b>c and a+c>b and b+c>a: if a==b==c: print "This is an equilateral triangle." if a==b or a==c or b==c: print "This is an isosceles triangle." if a!=b!=c: print "This is a scalene triangle." else: print "These lengths can not form a triangle." 2.密码登录程序。要求:建立一个登录窗口,要求输入帐号和密码。设定用户名 为”zhangshan”,密码为“Python123”;若用户名正确,密码正确,则显示“Zhangshan 先生,欢迎你!”;如果用户名错误,则显示“用户名错误,请重新输入!”;若密码不正确,显示“对不起,密码错误,无法登录!”。 x=raw_input("User:") y=raw_input("Password:") if x=="zhangshan" and y=="Python123": print "Welcome,!" if x=="zhangshan" and y!="Python123": print "Wrong right to log-in." while x!="zhangshan" and y=="Python123": x=raw_input("Wrong user's enter again:") if x=="zhangshan": print "Zhangshan先生,欢迎你!"

循环程序设计实验

循环程序设计实验 实验目的 1、掌握循环程序的设计方法。 2、掌握比较指令、转移指令和循环指令的使用方法。 3、进一步掌握调试工具的使用方法。 实验预习要求 复习比较指令、条件转移指令和循环指令。 复习循环程序的结构、循环控制方法等知识。 读懂“实验内容”中给出的将十进制数转换为二进制数以及将二进制数转换为十进制数的程序。 根据“实验内容”中给出的流程图和程序框架编写源程序,以便上机调试。 从“实验习题”中任选一道题目,编写源程序,以便上机调试。 实验内容 计算1+2+……n=,其中n通过键盘输入。要求在屏幕上提供如下信息: Please input a number(1627): ;出现此信息后通过键盘输入一个小于628的无符号整数 1+2+…..n=sum;其中n为用户输入的数,sum为所求的累加和 程序运行情况如下图所示(说明:图中所运行程序允许累加和不大于一个32位二进制数所能表示的范围)。编程指导 键盘输入的十进制数如 368在计算机中是以 33H,36H,38H形式存 放的,如何将它们转换 为一个二进制数0B,以 便对累加循环的循环次 数进行控制是本程序首 先要解决的问题。将键 盘输入的十进制数转换为二进制数的程序清单如下: DATA SEGMENT INF1 DB "Please input a number (0-65535):$" IBUF DB 7,0,6 DUP() DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS:DATA START: MOV A X, DATA MOV DS, AX MOV DX, OFFSET INF1 MOV AH, 09H INT 21H MOV DX, OFFSET IBUF ;键入一个十进制数(<65535) MOV AH, 0AH INT 21H MOV CL, IBUF+1 ;十进制数的位数送CX MOV CH, 0 MOV SI, OFFSET IBUF+2 ;指向输入的第一个字符(最高位)

c语言第4章 选择结构程序设计习题答案

第4章选择结构程序设计 习题(P111) 4.2 C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”? 答:C语言中用1表示真,0表示假;系统按照“非0为真,0为假”判断一个逻辑量的真假。 4.3 写出下面各逻辑表达式的值。设a=3,b=4,c=5。 (1)a+b>c&&b==c (2)a||b+c&&b-c (3)!(a>b)&&!c||1 (4)!(x=a)&&(y=b)&&0 (5)!(a+b)+c-1&&b+c/2 解:该题在求解过程中注意: 一、优先级。逻辑运算符(&&和||)低于算术运算符和关系运算符而高于赋值运算符,在逻辑运算符中,逻辑非最高,逻辑与其次,逻辑或最低; 二、逻辑表达式的求值规则。(P94) 所以得以上表达式的值分别为:(1)0 (2)1 (3)1 (4)0 (5)1 4.4有3个整数a、b、c,由键盘输入,输出其中最大的数。 分析:这是一个规模较小的求最值的算法,习题1.6用函数的方法实现。该题不用函数调用实现,但方法是最值,再依次和第二、第三个数比较得结果。其中都要用到单分支或双分支选择结构语句。 参考程序如下: main() { int a,b,c,max; /*定义4个整型变量,其中a,b,c存原始数据,max存最值*/ printf("\ninput the value of a,b,c:"); /*提示输入*/ scanf("%d%d%d",&a,&b,&c); /*格式符之间无分隔符,输入时可以以空格、回车、跳格分隔*/ if(a>b) max=a; else max=b; if(max

C上机实验报告 实验四

精品文档 实验四数组、指针与字符串 1.实验目的 1.学习使用数组 2.学习字符串数据的组织和处理 3.学习标准C++库的使用 4.掌握指针的使用方法 5.练习通过Debug观察指针的内容及其所指的对象的内容 6.联系通过动态内存分配实现动态数组,并体会指针在其中的作用 7.分别使用字符数组和标准C++库练习处理字符串的方法 2.实验要求 1.编写并测试3*3矩阵转置函数,使用数组保存3*3矩阵。 2.使用动态内存分配生成动态数组来重新完成上题,使用指针实现函数的功能。 3.编程实现两字符串的连接。要求使用字符数组保存字符串,不要使用系统函数。 4.使用string类定义字符串对象,重新实现上一小题。 5.定义一个Employee类,其中包括姓名、街道地址、城市和邮编等属性,以及change_name()和display()等函数。Display()显示姓名、街道地址、城市和邮编等属性,change_name()改变对象的姓名属性。实现并测试这个类。 6.定义包含5个元素的对象数组,每个元素都是Employee类型的对象。 7. (选做)修改实验4中的选做实验中的people(人员)类。具有的属性如下:姓名char name[11]、编号char number[7]、性别char sex[3]、生日birthday、身份证号char id[16]。其中“出生日期”定义为一个“日期”类内嵌对象。用成员函数实现对人员信息的录入和显示。要求包括:构造函数和析构函数、拷贝构造函数、内联成员函数、聚集。在测试程序中定义people类的对象数组,录入数据并显示。 3.实验内容及实验步骤 1.编写矩阵转置函数,输入参数为3*3整形数组,使用循环语句实现矩阵元素的行列对调,注意在循环语句中究竟需要对哪些元素进行操作,编写main()函数实现输入、输出。程序名:lab6_1.cpp。 2.改写矩阵转置函数,参数为整型指针,使用指针对数组元素进行操作,在main()函数中使用new操作符分配内存生成动态数组。通过Debug观察指针的内容及其所指的对象中的内容。程序名:lab6_2.cpp。 3.编程实现两字符串的连接。定义字符数组保存字符串,在程序中提示用户输入两个字符串,实现两个字符串的连接,最后用cout语句显示输出。程序名:lab6_3.cpp。用cin实现输入,注意,字符串的结束标志是ASCII码0,使用循环语句进行字符串间的字符拷贝。

实验四 答案 选择结构程序设计

实验四选择结构程序设计答案 实验时间:年月日 【实验步骤】 一、程序调试练习 1、写出下列程序的运行结果: (1)ex4_1.c #include void main() { char ch; printf("input a character:"); ch=getchar(); if(ch>='A' && ch<='Z') ch=ch+32; printf("%c\n",ch); } 具体要求: ①从键盘上输入a,分析程序运行的结果。 ②从键盘上输入A,分析程序运行的结果。 ③从键盘上输入5,分析程序运行的结果。 程序运行结果: ①a ②a ③5 (2)ex4_2.c #include void main() { int x,y,z; printf("input x,y,z"); scanf("%d,%d,%d",&x,&y,&z); if(x

②从键盘上给x、y、z分别输入3,5,2,分析程序运行的结果。 ③从键盘上给x、y、z分别输入-5,-3,2,分析程序运行的结果。 程序运行结果: ①z=2 ②z=3 ③z=0 (3)ex4_3.c #include main() { int x=1,a=0,b=0; switch(x) { case 0:b++; case 1:a++; case 2:a++;b++; } printf("a=%d,b=%d\n",a,b); } 程序运行结果: a=2,b=1 (4)ex4_4.c #include void main() { int x=1,y=0,a=0,b=0; switch(x) { case 1: switch(y) { case 0: a++; break; case 1: b++; break; } case 2: a++; b++; break; case 3: a++; b++; } printf("a=%d,b=%d\n",a,b); } 具体要求: