北邮信通C++上机实验第七章

合集下载

北邮通原课件7 彭涛

北邮通原课件7 彭涛

第七章信源与信源编码(I)彭涛pengtao@内容掌握低通及基带信号和带通信号的抽样 掌握均匀量化、最佳量化的原理及分析方法掌握对数压扩的原理、A律十三折线编码 掌握TDM的原理了解DPCM及增量调制的原理7.9 连续信源的限失真编码模拟信号的数字传输把模拟信号数字化后,用数字通信方式传输7.9 连续信源的限失真编码模拟信号的数字化(图7.9.1)抽样:对信号在时域上进行离散化的过程量化:对信号在取值域上进行离散化的过程 量化时会带来量化误差(即量化失真),这种失真是不可恢复的(不可逆)编码:将离散的取值编成数字序列7.9.27.9.27.9.27.9.2 取样(抽样)低通信号抽样定理告诉我们对频带限制在(0,f H)赫内的模拟基带信号,使抽样后频带不混叠的最低抽样频率为2f H(大于2f H的抽样速率都是可以的)只要满足以上条件的抽样信号,经过同一个低通滤波器(截止频率为f H)都可以恢复出原始的模拟基带信号。

(最多相差一个系数)7.9.27.9.27.9.2 取样(抽样)带通信号抽样定理由图7.9.7和上式均可看出,最小抽样频率的取值与f H,B的大小关系有关,其取值范围是[2B,4B)。

当f H>>B时,fsminÆ2B注意:并非大于fsmin的频率都可以作为抽样频率7.9.3 标量量化信号抽样后的序列的取值仍然不是离散的(任何值都是可能的),要变成数字信号还必须使取值也离散化,这就是量化标量量化(一维量化):对抽样序列的每个抽样值独立的进行量化 量化:将连续数集{x}(无限多种取值)映射到具有有限多(M)个取值可能的数集{y k }上()()1,1,2,,kk k y Q x y x x x k M −==∈="当时,7.9.3 标量量化标量量化示例7.9.37.9.37.9.3 标量量化最佳量化器由最佳量化器中分层电平和量化电平的表达式可以看出,两者是相互关联的,通常无法一次求解出最佳量化时的分层电平和量化电平迭代求解的方法1:确定量化噪声平均功率应小于的门限值N。

北邮通信原理实验报告完整

北邮通信原理实验报告完整

北京邮电大学通信原理课程实验实验报告学院:电子工程学院专业:电子信息科学与技术班级:2010211203班学号:姓名:2013年6月3日实验二抑制载波双边带的产生一、实验目的1.了解抑制载波双边带(SC-DSB)调制器的基本原理。

2.测试SC-DSB 调制器的特性。

二、实验步骤1.将TIMS 系统中的音频振荡器(Audio Oscillator)、主振荡器(Master Signals)、缓冲放大器(Buffer Amplifiers)和乘法器(Multiplier)按下图连接。

图1 实验连接图方式一2.用频率计来调整音频振荡器,使其输出为1kHz 作为调制信号,并调整冲放大器的K1,使其输出到乘法器的电压振幅为1V。

3.调整缓冲放大器的K2,使主振荡器输至乘法器的电压为1V 作为载波号。

4.测量乘法器的输出电压,并绘制其波形。

如下图2所示。

图2 乘法器输出电压波形5.调整音频振荡器的输出,重复步骤4。

如下图3所示。

图3 调整后输出波形6.将电压控制振荡器(VCO)模快和可调低通滤波器(Tuneable LPF)模块按下图4连接。

图4 实验连接图方式二7.VCO 得频率选择开关器至于“LO”状态下,调整VCO 的Vin(控制电压DC -3V~3V )使VCO 的输出频率为10kHZ。

8.将可调低通滤波器的频率范围选择范围至“wide”状态,并将频率调整至最大,此时截至频率大约在12kHz 左右。

LPF 截止频率最大的时候输出如图5所示。

图5 截止频率最大时输出9.将可调低通滤波器的输出端连接至频率计,其读数除360 就为LPF 的3dB 截止频率。

10.降低可调LPF 的截止频率,使SC-DSB 信号刚好完全通过低通滤波器,记录此频率(fh=fc+F)。

11.再降低3dB 截止频率,至刚好只有单一频率的正弦波通过低通滤波器,记录频率(fl=fc-F)只通过单一频率的LPF 输出如图6所示。

图6 单一低通滤波器输出12.变化音频振荡器输出为频率为800Hz、500Hz,重复步骤10、11,得到的波形如图7和8所示。

北邮信通C++上机实验 第七章

北邮信通C++上机实验 第七章

第七章实验题一.基础题1.#include <iostream>using namespace std;class CSample {double a;CSample(){a=2.5;};public:CSample(int val);~CSample(); };2.#include <iostream>using namespace std;class cube{public:cube();//构造函数~cube();//析构函数int volume(); //定义整形函数private:int height, width, depth;//定义私有数据成员};cube::cube(){height = 100;depth = 4;width = 2;cout<<"Constructor called."<<endl;}cube::~cube(){cout << "Destructor called." << endl;system("pause");}int cube::volume(){return height*width*depth;}void main(){cube cubeone; //定义对象cout<<"立方体的体积为:"<<cubeone.volume()<<endl;system("pause");}3.#include <iostream>using namespace std;class CCounter{int value;public:CCounter(){cout << "CCounter Constructor1" << endl;value = 0;}CCounter(int val){cout << "CCounter Constructor2" << endl;value = val;}~CCounter(){cout << "CCounter Destructor" << endl;system("pause");}};class CExample{int value;public:CCounter car;CExample(){cout << "CExample Constructor1" << endl;value = 0;}CExample(int val){cout << "CExample Constructor2" << endl;value = val;}~CExample(){cout << "CExample Destructor" << endl;system("pause");}void Display() { cout << "value=" << value << endl; } };void main(){CExample obj(350);obj.Display();system("pause");}//调用顺序:CCounter()-CExample(int val)-~CExample()-~CCounter()4.#include <iostream>using namespace std;class Point{protected:int x;public:int Getx(){ return x; }int Y;void init(int a, int b){ x = a; Y = b; } int Gety(){ return Y; }void Setx(int a){ x = a; }void Sety(int b){ Y = b; }};void main(){Point A, B;A.init(25, 27);B.init(29, 31);cout << "A.x=" << A.Getx() << endl;cout << "B.x=" << B.Getx() << endl;cout << "A.Y=" << A.Y << endl;cout << "A.y=" << A.Gety() << endl;cout << "B.y=" << B.Y << endl;cout << "B.y=" << B.Gety() << endl;system("pause");}5.#include <iostream>using namespace std;class base{private:int i;static int k; //定义静态变量k public:base() { i = 0; k++; } //定义构造函数void Display();};void base::Display(){k = k + 10;i++;cout << "i=" << i << ",k=" << k << endl; }int base::k = 0; //初始化k的值void main(){base a, b;a.Display();b.Display();system("pause");}运行结果为:i=1;k=12i=1;k=22二.编程题1.{if (x > 0){cout << "It's a positive number" << endl;positive++;}else if (x == 0){zero++;cout << "It's zero" << endl;}else{negative++;cout << "It's a negative number" << endl;}}int num::positive = 0; int num::negative = 0; int num::zero = 0; void main(){int n;while (cin >> n){num test(n);test.decision();test.print();}system("pause"); }2.#include <iostream>using namespace std;class dianqi{public:void getprice(int x , int y, int z ) {colorcast = x;ridge = y;washer = z;};void total(int a , int b , int c ){int t = a*colorcast + b*ridge + c*washer;cout << t << endl;};private:int colorcast;int ridge;int washer;};void main(){dianqi dian;dian.getprice(4200, 2800, 1500);cout << "请分别输入彩电,冰箱,洗衣机的销售数量:";int a = 0, b = 0, c = 0;cin >> a;cout << " ";cin >> b;cout << " ";cin >> c;cout << endl;cout << "总营业额为:";dian.total(a, b, c);system("pause");}3.#include<iostream>#include<string>using namespace std; class car{public:void disp_parameters(){cout << "型号:" << type<< endl;cout << "颜色:" << colour << endl;cout << "车门数:" << door << endl;cout << "座位数:" << seat << endl;cout << "轴距:" <<distance << endl;}void change(string a, char b, int c, int d, int e) {type = a;colour = b;door = c;seat = d;distance = e;}private:string type;char colour;int door;int seat;int distance;};void main(){car gundam;gundam.change("Double O GUNDAM", 'b', 1, 5, 6);gundam.disp_parameters();system("pause");}4.#include <iostream>using namespace std;class student{public:int num;char name[20];char sex;int age;};void main(){student stu[5];student temp;for (int i = 0; i<5; i++){cout << "输入第" << i + 1 << "位学生的学号:";cin >> stu[i].num;cout << "输入第" << i + 1 << "位学生的姓名:";cin >> stu[i].name;cout << "输入第" << i + 1 << "位学生的性别:";cin >> stu[i].sex;cout << "输入第" << i + 1 << "位学生的年龄:";cin >> stu[i].age;}for (int a = 1; a < 5; a++){for (int b =0 ; b < 5-a; b++){if (stu[b].age<stu[b + 1].age){temp.age = stu[b + 1].age;stu[b + 1].age = stu[b].age;stu[b].age = temp.age;}}}for (int i = 0; i<5; i++)cout << "num:" << stu[i].num << " name:" << stu[i].name << " sex:" << stu[i].sex << " age:" << stu[i].age << endl;system("pause");}5.#include <iostream>using namespace std;class ATM{public:void s_balance(void){cout << "The balance is " << balance << endl;}void deposit(float a){balance += a;}void withdraw(float a){balance -= a;}int checking(int a){if (key == a)return 1;elsereturn 0;}private:int key = 328;static float balance; };float ATM::balance = 0.0f; void main(){ATM sys1;int k,m;float num;cout << "Please input the key: ";cin >> k;if (sys1.checking(k) != 1)cout << "Error" << endl;else{cout << "Please choose the function:" << endl << "(1) Depositing money" << endl <<"(2) Withdrawing money" << endl <<"(3) Check the balance" << endl <<"(4) Return to the main interface"<<endl;while (cin >> m){switch (m){case 1:cout << "Please input how much you want to deposit: ";cin >> num;sys1.deposit(num);cout << "You have deposited " << num << endl;sys1.s_balance();cout << "Please choose the function:" << endl <<"(1) Depositing money" << endl <<"(2) Withdrawing money" << endl <<"(3) Check the balance" << endl << "(4) Return to the main interface" << endl;break;case 2:cout << "Please input how much you want to withdraw: ";cin >> num;sys1.withdraw(num);cout << "You have withdrawed " << num << endl;sys1.s_balance();cout << "Please choose the function:" << endl <<"(1) Depositing money" << endl <<"(2) Withdrawing money" << endl <<"(3) Check the balance" << endl << "(4) Returnto the main interface" << endl;break;case 3:sys1.s_balance();cout << "Please choose the function:" << endl <<"(1) Depositing money" << endl <<"(2) Withdrawing money" << endl <<"(3) Check the balance" << endl << "(4) Return to the main interface" << endl;break;case 4:cout << "Please choose the function:" << endl <<"(1) Depositing money" << endl <<"(2) Withdrawing money" << endl <<"(3) Check the balance" << endl;break;default:cout << "Error1" << endl;break;}}}system("pause"); }6.#include <iostream>#include<string>using namespace std;class student{public:friend void sort(student &a, student &b, student &temp);void change(string a, int b, float c){name=a;num = b;score = c;}float show(){return score;}private:int num;string name;float score;};void sort(student &a, student &b,student &temp){if (a.score < b.score){temp = a;a= b;b = temp;}}void main(){student stu[5];student temp;string q=" ";int w = 0;float e=0.0f;for (int i = 0; i<5; i++){cout << "输入第" << i + 1 << "位学生的姓名,学号,成绩:"<<endl;cout << " 姓名:";cin >> q;cout << " 学号:";cin >> w;cout << " 成绩:";cin >> e;stu[i].change(q, w, e);cout << endl;}for (int i = 1; i<5; i++){for (int j = 0; j<(5 - i); j++){sort(stu[j], stu[j + 1], temp);}}cout << "最高分" << stu[0].show() << endl;cout << "最低分" << stu[4].show() << endl;system("pause");}。

北邮通信原理实验报告

北邮通信原理实验报告

北京邮电大学通信原理实验报告学院:信息与通信工程学院班级:姓名:姓名:实验一:双边带抑制载波调幅(DSB-SC AM)一、实验目的1、了解DSB-SC AM 信号的产生以及相干解调的原理和实现方法。

2、了解DSB-SC AM 信号波形以及振幅频谱特点,并掌握其测量方法。

3、了解在发送DSB-SC AM 信号加导频分量的条件下,收端用锁相环提取载波的原理及其实现方法。

4、掌握锁相环的同步带和捕捉带的测量方法,掌握锁相环提取载波的调试方法。

二、实验原理DSB 信号的时域表达式为()()cos DSB c s t m t t ω=频域表达式为1()[()()]2DSB c c S M M ωωωωω=-++ 其波形和频谱如下图所示DSB-SC AM 信号的产生及相干解调原理框图如下图所示将均值为零的模拟基带信号m(t)与正弦载波c(t)相乘得到DSB—SC AM信号,其频谱不包含离散的载波分量。

DSB—SC AM信号的解调只能采用相干解调。

为了能在接收端获取载波,一种方法是在发送端加导频,如上图所示。

收端可用锁相环来提取导频信号作为恢复载波。

此锁相环必须是窄带锁相,仅用来跟踪导频信号。

在锁相环锁定时,VCO输出信号sin(2πf c t+φ)与输入的导频信号cos(2πf c t)的频率相同,但二者的相位差为(φ+90°),其中很小。

锁相环中乘法器的两个输入信号分别为发来的信号s(t)(已调信号加导频)与锁相环中VCO的输出信号,二者相乘得到[A C m(t)cos(2πf c t)+A p cos(2πf c t)]∙sin(2πf c t+φ)=A c2m(t)[sinφ+sin(4πf c t+φ)]+A p2[sinφ+sin(4πf c t+φ)]在锁相环中的LPF带宽窄,能通过A p2sinφ分量,滤除m(t)的频率分量及四倍频载频分量,因为很小,所以约等于。

LPF的输出以负反馈的方式控制VCO,使其保持在锁相状态。

重庆邮电大学c语言上机实验期末实验报告

重庆邮电大学c语言上机实验期末实验报告

C语言程序实验报告姓名:班级:学号:学院:自动化第一章熟悉c语言编程环境实验目的及要求(1)了解c语言编程环境visual c++6.0的组成。

(2)了解并掌握c语言集成开发环境visual c++6.0的使用方法(3)了解并掌握c语言程序的基本结构,能够编写简单的程序(4)掌握c语言程序的上机步骤实验步骤:例1-1:编写一个简单的c语言程序,在屏幕上显示:”Hello World!”。

#include<stdio.h>void main(){printf("Hello World!\n");}实习题目1.41.写出下面程序执行结果。

#include<stdio.h>void main(){printf("我可以写c语言程序了!\n");}2编写c程序#include<stdio.h>void main(){printf("*\n");printf("**\n");printf("***\n");}第二章简单c语言程序设计实验目的及要求(1)进一步熟悉并掌握visual c++6.0集成开发环境的使用(2)熟练掌握c语言程序上机编写的步骤(3)掌握算术表达式、赋值表达式的使用(4)掌握c语言输入、输出函数的使用(5)能够编写简单的c语言程序(6)掌握简单c语言程序的差错方法实验步骤:例2-1:已知两个变量a、b,其值分别为100和200,编程求它们的和sum。

#include<stdio.h>void main(){int a,b,SUM;a=100;b=200;SUM=a+b;printf("他们的和是%d\n”,SUM);}例2-2已知一个圆柱体的半径r为6,高h为7,编写程序求圆柱体的体积。

#include<stdio.h>void main(){float r,h;float s;float v;r=6.0;h=7.0;s=3.14*r*r;v=s*h;printf("圆柱体的体积为%f\n",v);}2.4实习题目1写程序结果#include<stdio.h>void main(){int a;float b;a=4;b=9.5;printf("a=%d,b=%4.2f\n",a,b);}2已知直角三角形的两个直角边长分别为3、4,求此直角三角形的斜边长c及面积s。

北邮2016通信原理硬件实验报告

北邮2016通信原理硬件实验报告

北邮2016通信原理硬件实验报告电子工程学院通信原理硬件实验报告指导教师:实验日期:目录实验一双边带抑制载波条幅 (3)实验二:具有离散大载波的双边带调幅 (8)实验六:眼图 (13)实验七:采样、判决 (14)实验八:二进制通断键控 (17)实验十二:低通信号的采样与重建 (20)实验总结 (24)实验一双边带抑制载波条幅(DSB-SC AM)一、实验目的(1)了解DSB-SC AM信号的产生以及相干解调的原理和实现方法;(2)了解DSB-SC AM信号波形以及振幅频谱特点,并掌握其测量方法;(3)了解在发送DSB-SC AM 信号加导频分量的条件下,收端用锁相环提取载波的原理及其实现方法;(4)掌握锁相环的同步带和捕捉带的测量方法,掌握锁相环提取载波的调试方法。

二、实验原理AM信号的产生及相干解调原理框图如图1.1(输出图1.1由图知,锁相环乘法器的输出为:经过锁相环反馈,相干解调时与恢复载波想成,则,经过LPF、隔直流后,输出为.四、实验步骤SC-DSB 信号的数学表达式为s(t)=Acm(t)cos(Wct),这个实验产生SC-DSB 的方法很简单,就是用载波跟调制信号直接相乘,其中载波是由主振荡器产生为幅度为1V,频率为100KHZ的正弦波,而调制信号由音频振荡器产生的正弦信号再经缓冲放大器组成,幅度为1V,频率为1KHZ。

1)按照图连接,将音频振荡器输出的模拟音频信号及主振荡器输出的100KHz模拟载频信号分别用连接线连至乘法器的两个输出端;2)用示波器观看音频输出信号的信号波形的幅度以及振荡频率,调整音频信号的输出频率为10kHz,作为均值为0的调制信号m(t);3)用示波器观看主振荡器输出信号的幅度以及振幅频谱;4)用示波器观看乘法器的输出波形,并注意已调信号波形的相位翻转与已调信号波形;5)测量已调信号的波形频谱,注意其振幅频谱的特点;6)调整增益G=1:将加法器的B 输出端接地,A 输入端接已调信号,用示波器观看加法器的输出波形以及振幅频谱,使加法器输入与加法器输出幅度一致;7)调整增益g;加法器A 端接已调信号,B 接导频信号。

北邮通信原理软件实验(包含一部分思考题)(中)

北邮通信原理软件实验(包含一部分思考题)(中)

编程题实验一:假设基带信号为()sin(2000)2cos(1000)m t t t ππ=+,载波频率为20kHz ,仿真出AM 、DSB-SC 、SSB 信号,观察已调信号的波形及频谱。

(编程)源文件:clear allexec t2f.sci ; exec f2t.sci ;N=2^16; //采样点数 fs=64; //采样频率 Bs=fs/2; //系统带宽T=N/fs; //截短时间t=-T/2+[0:N-1]/fs; //时域采样点f=-Bs+[0:N-1]/T; //频域采样点f0=1; phi=%pi/3; fc=10;//待观测正弦波的频率、幅度和初相 //以上是初始化参数设置s0=sin((2*%pi)*f0*t)+2*cos((%pi)*f0*t); //原始基带信号 S0=t2f(s0,fs) ; //基带信号傅里叶变换 c=cos((2*%pi)*fc*t); //载波 //dsb-am 调制s1=s0.*c; //调制dsd-sc 信号 S1=t2f(s1,fs) ; //dsb-sc 傅里叶变换 //am 调制s2=0.8*s0.*c+c; //调制am 信号 S2=t2f(s2,fs) ;//am 调制信号傅里叶变换//ssb 调制c1=sin((2*%pi)*fc*t); M=t2f(s0,fs);MH=-%i*sign(f).*M; //在频域进行希尔伯特变换 sh=real(f2t(MH,fs)); //希尔伯特变换后的信号 s3=s0.*c-sh.*c1;//调制后ssb 信号S3=t2f(s3,fs); //ssb 傅里叶变换//以上是仿真计算部分,以下是绘图部分xset ( "window" ,1) // 原始信号波形 plot ( t ,s0) //title( "原始信号波形") xlabel ("t (ms)") ylabel ( "s0( t ) (V)" )mtlb_axis( [0,10, -5,+5] )xset ( "window" ,2) //原信号幅度频谱 plot ( f ,abs(S0))title( "调制信号的频谱图")xlabel ("f (kHz)" )ylabel ("|S(f)|(V/Hz)")xset ( "window" ,3) // dsb-sd调制信号波形及频谱plot ( t ,s1)title( "dsb-sd调制信号波形")xlabel ("t (ms)")ylabel ( "s1( t ) (V)" )mtlb_axis( [0,4, -5,+5] )xset ( "window" ,4)plot ( f ,abs(S1) )title( "dsb-sd调制信号的频谱图")xlabel ("f (kHz)" )ylabel ("|S(f)|(V/Hz)")xset ( "window" ,5) // am调制信号波形及频谱plot ( t ,s2)title( "am调制信号波形")xlabel ("t (ms)")ylabel ( "s2( t ) (V)" )mtlb_axis( [0,4, -5,+5] )xset ( "window" ,6)plot ( f ,abs(S2) )title( "am调制信号的频谱图")xlabel ("f (kHz)" )ylabel ("|S(f)|(V/Hz)")xset ( "window" ,7) // ssb调制信号波形及频谱plot ( t ,s3)title( "ssb调制信号波形")xlabel ("t (ms)")ylabel ( "s( t ) (V)" )mtlb_axis( [0,4, -8,+8] )xset ( "window" ,8)plot ( f ,abs(S3) )title( "ssb调制信号的频谱图")xlabel ("f (kHz)" )ylabel ("|S(f)|(V/Hz)")实验结果:原始信号波形:、原始信号频谱:AM调制信号波形:AM信号频谱:DSB信号波形:DSB信号频谱:SSB信号波形:SSB信号频谱:由实验结果可见:1.AM信号频谱与DSB-SC信号频谱多了一离散的载波分量;2.在AM调制中,调制系数必须不大于1。

通信原理答案解析第7章

通信原理答案解析第7章

第七章 习题已知一低通信号m(t)的频谱为:M(f)=⎪⎩⎪⎨⎧≤-f f f其他,0200,2001,假设以f s =300Hz 的速率对m(t)进行抽样,试画出一抽样信号m s (t)的频率草图。

解:M s (ω)=300∑∞-∞=⋅-n n M )600(πω1.已知一低通信号m(t)的频谱为:M(f)=⎪⎩⎪⎨⎧≤-f f f其他,0200,2001,假设以f s =400Hz 的速率对m(t)进行抽样,试画出一抽样信号m s (t)的频率草图。

解:M s (ω)=400∑∞-∞=⋅-n n M )800(πω2. 采用13折线A 率编码,设最小的量化级为1个单位,已知抽样脉冲值为+635单位。

试求此时编码器输出码组,并计算量化误差(段码用自然二进制码)解:I m =+635=512+36+27输出码组为:c1c2c3c4c5c6c7c8=11100011 量化误差为273. 采用13折线A 率编码,设最小的量化级为1个单位,已知抽样脉冲值为-95单位。

试求此时编码器输出码组,并计算量化误差(段码用折叠二进制码) 解:-95= -(64+74⨯+3) c5c6c7c8=0000输出码组为:c1c2c3c4c5c6c7c8=00110000 量化误差为74. 采用13折线A 率编码器电路,设接收端收到的码组为“01010011”,最小量化单位为1个单位,并已知段码为折叠二进码。

试问译码器输出为多少单位。

解:I 0= -(256+4.5⨯16)=-3285. 采用13折线A 率编码器电路,设接收端收到的码组为“01010011”,最小量化单位为1个单位,并已知段码为自然二进码。

试问译码器输出为多少单位 解:I 0= -(256+3.5⨯16)=-3126. 单路话音信号的最高频率为4KHz ,抽样速率为8kHz ,将所得的脉冲由PAM 方式或PCM 方式传输。

设传输信号的波形为矩形脉冲,其宽度为τ,且占空比为1。

北邮通信原理习题答案第七章 信源和信源编码

北邮通信原理习题答案第七章 信源和信源编码

(2)Rb=1.9375 bit/符号×1000 符号/秒 = 1937.5 bit/s
1 1 (3) H max X 6 log 2 log 2 6 2.585bit/symbol 6 6
7.错误!未定义书签。已知两个二进制随机变量 X 和 Y 服从 下列联合分布: P X Y 0 P X 0, Y 1 P X Y 1 1
1 13 1 23 1 23 log 2 log 2 log 2 3 13 3 13 3 13 2 bit 3 P X ,Y H X |Y E log P Y | X E log 2 2 P X P X , Y log 2
试求: (1) P Ai ? P B j ? (2) H A ? H B ? H A, B ?
(3) I A; B ? 解: (1) P(A1)=0.10+0.08+0.13=0.31,同理可得 P(A2)=0.17; P(A3)=0.31; P(A4)=0.21; P(B1)=0.31; P(B2)=0.27; P(B3)=0.42 (2)
如下图示:
取样值 x 落入 4 个区间的概率是 1 0.5 1 , P2 P3 0 p x dx 3 P 1 P 4 0.5 p x dx
8 8
因此:
2 4 1 2 3 3 2 1 3 1 3 2 Sq E y y P 2 2 1 3 i i 16 4 8 i 1 4 8 4 8 2 2 1 2 1 1 3 2 N q E y x 2 x 1 x dx x 1 x dx 0 12 4 4 1 3 在第一个积分中令 t x ,在第二个积分中令 t x ,得 4 4 1 4 1 4 1 4 3 1 N q 2 t 2 t dt t 2 t dt 2 t 2 1 2t dt 1 4 1 4 1 4 4 4 3 14 14 1 1 1 2 t 2 dt 4 t 2 dt 4 1 4 0 3 4 48

北京邮电大学通信原理软件实验报告

北京邮电大学通信原理软件实验报告

北京邮电大学实验报告题目:基于SYSTEMVIEW通信原理实验报告实验一:验证抽样定理一、实验目的1、掌握抽样定理2. 通过时域频域波形分析系统性能二、实验原理低通滤波器频率与m(t)相同三、实验步骤1. 要求三个基带信号相加后抽样,然后通过低通滤波器恢复出原信号。

2. 连接各模块完成系统,同时在必要输出端设置观察窗。

3. 设置各模块参数。

三个基带信号的频率从上到下分别设置为10hz、12hz、14hz。

抽样信号频率设置为28hz,即2*14hz。

(由抽样定理知,)将低通滤波器频率设置为14hz,则将恢复第三个信号(其频率为14hz)进行系统定时设置,起始时间设为0,终止时间设为1s.抽样率设为1khz。

3.观察基带信号、抽样后的信号、最终恢复的信号波形四、实验结果最上面的图为原基带信号波形,中间图为最终恢复的信号波形,最下面的图为抽样后的信号波形。

五、实验讨论从实验结果可以看出,正如前面实验原理所述,满足抽样定理的理想抽样应该使抽样后的波形图如同冲激信号,且其包络图形为原基带信号波形图。

抽样后的信号通过低通滤波器后,恢复出的信号波形与原基带信号相同。

由此可知,如果每秒对基带模拟信号均匀抽样不少于2次,则所得样值序列含有原基带信号的全部信息,从该样值序列可以无失真地恢复成原来的基带信号。

讨论:若抽样速率少于每秒2次,会出现什么情况?答:会产生失真,这种失真被称为混叠失真。

六、实验建议、意见增加改变抽样率的步骤,观察是否产生失真。

实验二:奈奎斯特第一准则一、实验目的(1)理解无码间干扰数字基带信号的传输;(2)掌握升余弦滚降滤波器的特性;(3)通过时域、频域波形分析系统性能。

二、实验原理在现代通信系统中,码元是按照一定的间隔发送的,接收端只要能够正确地恢复出幅度序列,就能够无误地恢复传送的信号。

因此,只需要研究如何使波形在特定的时刻无失真,而不必追求整个波形不变。

奈奎斯特准则提出:只要信号经过整形后能够在抽样点保持不变,即使其波形已经发生了变化,也能够在抽样判决后恢复原始的信号,因为信息完全恢复携带在抽样点幅度上。

北邮,信息工程,大二上,小学期,C语言,大作业,实验报告

北邮,信息工程,大二上,小学期,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);分别对应两种权限的使用者:采购员和实验室老师。

北邮通原课件8 彭涛

北邮通原课件8 彭涛

第七章信源与信源编码彭涛pengtao@7.1 引言信源编码:去掉信源输出中的冗余信息,提高有效性内容信源分类及其统计特性信息熵,信源剩余度互信息,各类熵与互信息的关系Huffman编码无失真/限失真信源编码定理率失真函数矢量量化、变换编码述信源分类连续/模拟信源离散/数字信源重点研究述单消息(符号)离散信源只输出一个离散符号统计特性描述()()()()()()()111,,,,,,,,11,2,,1i i i n i i n ni i i X x P x X x x x P x P x P x P x P x i n P x =⎡⎤⎡⎤=⎢⎥⎢⎥⎣⎦⎣⎦≤≤==∑L L L L L 用符号可能取值范围和符号取值的概率描述其中,0,,且述离散消息(符号)序列信源输出一个离散消息(符号)序列统计特性描述()()()()()()()()()()()()1111213211111,,,,,,,,,,,,||,|,,,,,,,,,,L Li L LLi L i L L L L i n i n L L X X X X x x x x n XP x P x x x P x P x x P x x x P x x x a a a X P a P a P a P x −====⎡⎤⎡⎤=⎢⎥⎢⎥⎢⎣⎦⎣⎦L L L L L L L L L L L L 离散消息序列由个符号组成,则消息序列可表示成维随机矢量,其可能取值有种可能性,构成取值集合则离散消息序列的统计特性表示为取值集合及其取值概率⎥述离散消息(符号)序列信源离散无记忆序列信源:序列中前后符号相互统计独立离散有记忆序列信源:序列中前后符号不是相互统计独立的可用马尔可夫链表示()()()11,,,,Ll L l l P x P x x x P x ===∏L L7.3 信息熵H(X)信息的基本特征:不确定性。

因此信息应该是概率P 的函数信息的两个特点随概率P 的递减性:概率越大,信息量越小可加性:两个独立消息的总信息量应是两个消息的信息量的和满足这两个条件的表示信息量的函数只有一种可能:对数函数()()P x I P x ↑↓⎡⎤⎣⎦,()()()()I P x P y I P x I P y =+⎡⎤⎡⎤⎡⎤⎣⎦⎣⎦⎣⎦7.37.3 信息熵H(X)单消息离散信源的信息度量两个单消息离散信源X,Y 的联合信息量()()()()()()|log ||log |,log ,i i i i i i i i i i i i i i i i i i x y I P y x P y x y x I P x y P x y x y I P x y P x y =−⎡⎤⎣⎦=−⎡⎤⎣⎦=−⎡⎤⎣⎦知道了消息的情况下,消息新带来的信息量:知道了消息的情况下,消息新带来的信息量:两个消息,一共带来的信息量:7.3 信息熵H(X)单消息离散信源的信息熵前面定义的是一个具体消息的信息量,因为信源输出的消息有多种可能性,所以可以把信息熵理解为这个输出消息(考虑多种可能性)的平均信息量信息熵也可以理解为对信源的不确定性的平均度量在各种可能性等概时,信源的信息熵最大(图7.3.1)()(){}()()()1log log ni i i i i H X E I P x E P x P x P x ===−=−⎡⎤⎡⎤⎣⎦⎣⎦∑7.3 信息熵H(X)信息量和熵的单位对数以2为底时,单位为比特(bit)对数以e为底时,单位为奈特(Nat)对数以10为底时,单位为笛特(Det) 1bit=0.693Nat=0.301Det7.3 信息熵H(X)两个单消息离散信源的联合熵和条件熵()()(){}()()()()()(){}()()()()(){}1111,/,,log ,,log ,/||log |,log |||log |n mi j i j i j i j i j n mj i j i i j j i i j i j i X Y H X Y E I P x y E P x y P x y P x y H Y X E I P y x E P y x P x y P y x H X Y E I P x y E P x ====⎡⎤⎡⎤==−=−⎣⎦⎣⎦⎡⎤⎡⎤==−=−⎣⎦⎣⎦⎡⎤==−⎣⎦∑∑∑∑联合熵两个符号带来的总信息熵平均信息量条件熵知道一个符号条件下,另一个符号带来的信息熵平均信息量()()()11,log |n mj i j i j i j y P x y P x y ==⎡⎤=−⎣⎦∑∑7.3 信息熵H(X)联合熵和条件熵的一些性质()()()()()()()()()()()()()()()()max 1,||Shannon ||,3,,H X Y H X H Y X H Y H X Y H X H X Y H Y H Y X X Y X Y H X Y H X H Y =+=+≥≥=+理解为两符号先后到达的过程:两个符号的总信息熵=一个符号的信息熵+知道这个符号的条件下另一个符号带来的信息熵2不等式:;理解:一个消息没有任何前兆时带来的信息肯定大于等于有前兆带来的信息当独立时,等号成立;否则都是大于号成立统计独立时,其联合熵取最大值两符号信息熵之和7.37.37.47.4 互信息I(X;Y)各种信息熵的关系7.5 无失真离散信源编码定理信源编码离散信源输出的是各种离散消息和符号模拟信源输出的是模拟信号(连续信号)为了进行数字通信,必须进行信源编码,将信源输出转变成数字信息信源编码中考虑的两个基本问题编码输出的信息速率(总是希望它尽可能小) 编码所造成的失真7.5 无失真离散信源编码定理无失真离散信源编码研究在无失真编译码条件下,传送离散信源发出信息的最小编码速率两种基本编码方法等长编码:编码输出的所有码字长度都相同 变长编码:编码输出码字长度不相同7.57.57.57.5 无失真离散信源编码定理等长编码和变长编码的比较等长编码将信源输出符号序列的任意一种取值(概率可能不同)都编码成相同长度的输出码字,没有利用信源的统计特性变长编码可以根据信源输出符号序列各种取值的概率大小不同,将他们编码成不同长度的输出码字,利用了信源的统计特性。

北邮通信电子电路实验指导书

北邮通信电子电路实验指导书

通信电子电路实验指导书电路实验中心2016年4月目录实验1 单调谐回路谐振放大器 (2)实验2 双调谐回路谐振放大器 (8)实验3 集成乘法器幅度调制电路 (15)实验4 振幅解调器(包络检波) (23)实验5 振幅解调器(同步检波) (28)附录高频信号发生器使用简介 (32)实验1 单调谐回路谐振放大器—、实验准备1.本实验时应具备的知识点(1)放大器静态工作点(2)LC并联谐振回路(3)单调谐放大器幅频特性2.本实验时所用到的仪器(1)①号实验板《小信号调谐放大器电路》板(2)⑤号实验板《元件库》板及库元件。

注意:元件库板与库元件一一对应,实验结束后,请对应放好,便于实验后检查。

(3)双踪示波器(模拟)(4)电源(5)高频信号发生器(6)万用表二、实验目的1.熟悉电子元器件和高频电子线路实验系统;2.掌握单调谐回路谐振放大器的基本工作原理;3. 熟悉放大器静态工作点的测量方法;4.熟悉放大器静态工作点和集电极负载对单调谐放大器幅频特性(包括电压增益、通频带、Q值)的影响;5.掌握测量放大器幅频特性的方法。

三、实验内容1.用万用表测量晶体管各点(对地)电压VB、VE、VC,并计算放大器静态工作点;2.用示波器测量单调谐放大器的幅频特性;3.用示波器观察静态工作点对单调谐放大器幅频特性的影响;4.用示波器观察集电极负载对单调谐放大器幅频特性的影响。

四、基本原理1.单调谐回路谐振放大器原理小信号谐振放大器是通信接收机的前端电路,主要用于高频小信号或微弱信号的线性放大和选频。

单调谐回路谐振放大器原理电路如图1-1所示。

图中,R B1、R B2、R E用以保证晶体管工作于放大区域,从而放大器工作于甲类。

C E是R E的旁路电容,C B、C C是输入、输出耦合电容,L、C是谐振回路,R C是集电极(交流)电阻,它决定了回路Q值、带宽。

为了减轻晶体管集电极电阻对回路Q值的影响,采用了部分回路接入方式。

图1-1 单调谐回路放大器原理电路图1-2 实验电路图(此图为典型原理图,图中标号与所用电路标号不一致)42.单调谐回路谐振放大器实验电路单调谐回路谐振放大器实验电路如图1-2所示。

C语言程序设计上机实验报告(精选5篇)

C语言程序设计上机实验报告(精选5篇)

C语言程序设计上机实验报告(精选5篇)第一篇:C语言程序设计上机实验报告黔南民族师范学院 C语言程序设计上机实验报告系部:计算机科学系年级:2013 级班级:姓名:学号:实验时间:实验成绩:2013年月日实验三顺序结构程序的设计一实验名称:顺序结构程序的设计二.实验环境:windows XP系统,VC++6.0软件三.实验目的:四.实验内容:五.算法描述流程图六.源程序七.测试数据及运行结果八.实验心得实验成绩评分要求1、原创性发现抄袭或雷同成绩为0分2、正确性程序正确60分3、可读性格式清楚,有注释,变量命名规范20分4、健壮性对特殊测试数据有考虑有测试10分5、效率程序运行效率高10分第二篇:《c语言程序设计》上机实验报告要求《c语言程序设计》上机实验报告要求1.实验环境:软件系统:使用的软件环境硬件系统:机型说明2.实验目的:掌握如何编辑、编译、链接调试运行c程序3.实验内容:(1)掌握顺序结构程序设计.P26 ,p49,p62 3.2~3.7(2)掌握选择结构程序设计(if 和switch语句的用法)p4.2~(3)循环结构程序设计(while, dowhile,for语句的用法)。

(4)掌握数组的定义、输入和输出的方法,字符数组、字符串函数的使用。

(5)了解函数的定义,熟悉函数实参与形参的“值传递”方式,掌握函数的嵌套调用和递归调用方法。

(6)熟悉指针含义及其使用。

(7)熟悉结构体和共用体的使用。

(8)熟悉文件的使用。

4.实验要求:(1)输入编写的源程序,检查程序有无错误(语法和逻辑错误),有则改之。

(2)编译和连接,仔细分析编译信息,如有错误应找出原因并改正。

(3)运行程序,输入数据,分析结果。

5.实验结果:输出程序清单和运行结果。

(要求把原题内容,调试好的程序和其结果一并打印),6.实验体会分析运行结果,本次调试程序取得的经验(遇到的问题,解决的方法等)。

第三篇:C程序设计上机实验报告10C程序设计实验报告实验名称:指针与数组学时安排:2课时实验类别:上机操作型实验要求:1人1组 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄一、实验目的1.理解指针、地址和数组间的关系;2.掌握通过指针操作数组元素的方法;3.掌握数组名作为参数的编程方式。

北邮c++实验7 绝对原创

北邮c++实验7 绝对原创

C++实践课第七章作业1、设计一个类用于对整数进行判别,并根据判断的结果分别统计所判断过的正整数和负整数的个数,并以合适的格式显示统计结果。

程序代码:#include<iostream>using namespace std;class assess{public:assess(int a){counts=fcounts=a;};void decide();void print(){cout<<"所判断的正整数个数为:"<<counts<<"负整数个数为:"<<fcounts;};private:int counts,fcounts;};void assess::decide(){int n;cout<<"判断的整数包含:"<<endl;do{cin>>n;if(n<0) fcounts++;else if(n>0) counts++;}while(n!=0);}void main(){assess hope(0);hope.decide();hope.print();}运行结果:2、编写一个程序,定义一个类。

要求输入彩电、冰箱、洗衣机当天所卖出的数量,程序将计算出百货商店家电部当天的总营业额。

程序代码:#include<iostream>using namespace std;class shophelper{private:int colorcast,fridge,washer,total;public:shophelper(int a,int b,int c){colorcast=a;fridge=b;washer=c;};int cal(int a,int b,int c){total=a*colorcast+b*fridge+c*washer;return total;}; };void main(){shophelper shop(4200,2800,1500);int a,b,c;cout<<"当日卖出彩电、冰箱、洗衣机数量分别为:";cin>>a>>b>>c;cout<<"当日总营业额为:"<<shop.cal(a,b,c)<<"元"<<endl;}运行结果:3、编写一个程序,定义一个汽车类,实现属性的显示和变更并测试。

C语言程序设计上机实验指导与习题参考答案(第四版)

C语言程序设计上机实验指导与习题参考答案(第四版)

C语言程序设计上机实验指导与习题参考答案(第四版)C 语言程序设计上机实验指导与习题参考答案(第四版)(学生改编)实验 1:C语言程序初步一、实验目的(1)了解所用的计算机系统的基本操作方法,学会独立使用该系统。

(2)了解在该系统上如何编辑、编译、连接和运行一个 C程序。

(3)通过运行简单的 C 程序,初步了解 C程序的特点。

(4)在教师的指导下,学会使用在线评判系统。

二、实验内容1.运行第一个 C 程序题目:ThefirstCProgram将下列程序输入visualc ,编译、连接和运行该程序。

includequotstdio.hquotmain printfquotThefirstCProgramnquot 具体操作步骤(1)在编辑窗口中输入程序。

(2)保存程序,取名为a1.c。

(3)按照第一章中介绍的方法,编译、连接和运行程序。

,则该题完成。

4按照第三章介绍的方法,将代码提交到在线评判系统,系统返回“通过”2.在在线评判系统中提交实现了计算 ab 功能的程序题目 1001:计算ab由键盘输入两个整数,计算并输出两个整数的和。

实现该功能的程序如下,inclu dequotstdio.hquotmain int ab scanfquotddquotampaampbprintfquotdquotab(1)在程序编辑窗口中输入程序。

(2)保存程序,取名为a2.c。

(3)按照前二章中介绍的方法,编译、连接和运行程序。

(4)在程序运行过程中,输入15 30↙↙表示输入回车符(5)如果看到如下输出结果,则表明1530 的结果正确,如果得不到如下结果,则需检查并更正程序。

45(6)按照第三章中介绍的方法进入在线评判系统。

(7)显示题目列表,点击题号为 1001,题名为“计算ab”的题目。

(8)查看完题目要求后,点击页面下端的“sumbit” ,参照第二章提交程序的方法提交程序a2.c。

(9)查看评判结果,如果得到“accepted”则该题通过,否则返回第一步检查程序是否正确。

北邮-通信工程-微机原理与接口技术-硬件实验-实验报告

北邮-通信工程-微机原理与接口技术-硬件实验-实验报告

北邮-通信工程-微机原理与接口技术-硬件实验-实验报告实验一I/O地址译码一、实验目的掌握I/O地址译码电路的工作原理。

二、实验原理和内容1、实验电路如图1-1所示,其中74LS74为D触发器,可直接使用实验台上数字电路实验区的D触发器,74LS138为地址译码器。

译码输出端Y0~Y7在实验台上“I/O 地址“输出端引出,每个输出端包含8个地址,Y0:280H~287H,Y1:288H~28FH,…… ,当CPU执行I/O指令且地址在280H~2BFH范围内,译码器选中,必有一根译码线输出负脉冲。

例如:执行下面两条指令MOV DX,2A0HOUT DX,AL(或IN AL,DX)Y4输出一个负脉冲;执行下面两条指令MOV DX,2A8HOUT DX,AL(或IN AL,DX)Y5输出一个负脉冲。

利用这个负脉冲控制L7闪烁发光(亮、灭、亮、灭、……),时间间隔通过软件延时实现。

2、接线:Y4/IO地址接CLK/D触发器Y5/IO地址接CD/D触发器D/D触发器接SD/D角发器接+5VQ/D触发器接L7(LED灯)或逻辑笔三、硬件接线图与软件程序流程图1、硬件接线图2、软件程序流程图开始Y4输出一个负脉冲调用延时子程序Y5输出一个负脉冲调用延时子程序否CX-1=0?是结束,返回DOS四、源程序DATA SEGMENTDATA ENDSSTACK SEGMENT STACK 'STACK'DB 100H DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKDELAY1 P ROC NEAR ;延时子程序MOV BX,500HPUSH CXLOOP2: MOV CX,0FFFHWAIT1: LOOP WAIT1DEC BXJNZ LOOP2POP CXRETDELAY1 E NDP;L7闪烁START: MOV CX,0FFFFH ;最大可循环次数LOOP1: MOV DX,2A0H ;灯亮OUT DX,ALCALL DELAY1MOV DX,2A8H ;灯灭OUT DX,ALCALL DELAY1LOOP LOOP1 ;循环闪烁CODE ENDSEND START五、实验结果灯L7闪烁,一段时间后停止。

北邮现代通信技术实验报告

北邮现代通信技术实验报告

信息与通信工程学院现代通信技术实验报告目录实验一路由器、交换机的基本配置 (3)实验目的: (3)实验内容: (3)实验设备: (3)实验过程 (3)实验二局域网实验 (9)实验目的: (9)实验内容: (9)实验设备: (9)实验原理: (9)实验过程: (11)实验三IP路由 (13)实验目的: (13)实验内容: (14)实验设备: (14)实验过程 (14)实验四IP路由协议 (18)实验目的: (18)实验内容: (18)实验设备: (18)实验过程 (18)实验总结 (21)实验一路由器、交换机的基本配置实验目的:全程全网通信专业实验室的设备都是实际应用设备,对设备的熟悉是做好实验的基础,本实验的目的就是认清不同种类线缆,了解其用途、特性,并通过配置设备来了解、掌握设备的基本特性,为后续实验做准备。

实验内容:(1)通过Console口访问以太网交换机、路由器(2)通过微机Telnet到以太网交换机、路由器(3)ftp访问路由器、交换机实验设备:华为QuidWay™系列交换机、华为QuidWay™系列路由器实验过程:(1)通过Console口访问以太网交换机、路由器打开超级终端,新建连接时进行设置连接终端后,设置属性打开路由器(或交换机),选择更改界面语言并键入?以查看命令尝试键入一些简单命令(2)通过微机Telnet到以太网交换机、路由器画出拓扑图,连线打开Windows Telnet,进行设置连接后进入路由器配置视图,操作命令与超级终端下相同实验二局域网实验实验目的:熟悉组成LAN的主要设备,了解掌握LAN的基本特点以及LAN中的常用技术。

实验内容:(1)VLAN的基本配置(2)中继(干道)链路(Trunk links)/接入链路(Access links)的使用(3)广播风暴及生成树(STP)的使用实验设备:华为QuidWay™系列交换机实验原理:1.程控交换机简介:程控交换机通常专指用于电话交换网的交换设备,属于全电子型,它是现代数字通信技术,计算机技术与大规模集成电路有机结合的产物。

C_上机实验(含作业)总的目的、要求和评分标准

C_上机实验(含作业)总的目的、要求和评分标准

上机实验(含作业)总的目的、要求和评分标准一、实验目的实验作为教学的一个重要环节,其目的在于更深入地理解和掌握课程教学中的有关基本概念,应用基本技术解决实际问题,从而进一步提高分析问题和解决问题的能力。

C程序设计课程实践性很强,即要求独立编写程序,学会独立上机调试程序。

学会独立上机调试程序。

也就是要善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行。

计算机技术是实践性很强的技术,要求从事这一领域的人不仅能了解和熟悉有关理论和方法,还要求自己动手实践。

对程序设计来说,要求会编写程序并上机调试通过。

因此调试程序本身是程序设计课程的一个重要的内容和基本要求,应给予充分的重视。

调试程序的经验固然可以借鉴他人的现成经验,但更重要的是通过自己的直接实践来积累,而且有些经验是只能“会意”难以“言传”。

因此,在实验时不但要达到通过程序完成每一次的实验任务,而且应当在已通过的程序基础上作进一步的修改、提高和完善。

甚至于“自设障碍”,即把正确的程序改为有错的(如用scanf函数为输入变量输入数据时,漏写“&”符号,double变量使用格式符“%f”;使数组下标出界;使整数溢出等等),观察和分析所出现的情况。

这样的学习才会有真正的收获。

实验目的可归纳如下:⒈验证自己已建立起来的概念或所编写的程序是否正确;⒉加深对课堂所学内容的理解和语法规则的记忆;⒊理解和掌握运用计算机高级语言进行编程的思想方法;⒋掌握常用算法的设计与应用实现;⒌熟悉Turbo C 2.0程序开发环境,掌握C程序常用的调试手段;⒍学会上机调试程序的方法,不断积累调试经验,提高排错能力;⒎使自己具有独立的应用编程和熟练的程序调试能力。

二、要求:⒈做好每一次上机前的准备以提高上机效率:①预先认真阅读相关实验内容,做到心中有明确的目的要求和任务,要有备而来;②按照实验内容规定的习题题目,事先在实验预习报告上编写好源程序及运行程序所需的典型数据,并经人工静态检查认为无误;手编程序应书写整齐,应在每个题目之间留出一定的空间,以备记录上机调试情况和运行结果等;对程序中自己有疑问的地方,应作出记号,以便上机时给以注意。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第七章实验题一.基础题1.#include <iostream>using namespace std;class CSample {double a;CSample(){a=2.5;};public:CSample(int val);~CSample(); };2.#include <iostream>using namespace std;class cube{public:cube();//构造函数~cube();//析构函数int volume(); //定义整形函数private:int height, width, depth;//定义私有数据成员};cube::cube(){height = 100;depth = 4;width = 2;cout<<"Constructor called."<<endl;}cube::~cube(){cout << "Destructor called." << endl;system("pause");}int cube::volume(){return height*width*depth;}void main(){cube cubeone; //定义对象cout<<"立方体的体积为:"<<cubeone.volume()<<endl;system("pause");}3.#include <iostream>using namespace std;class CCounter{int value;public:CCounter(){cout << "CCounter Constructor1" << endl;value = 0;}CCounter(int val){cout << "CCounter Constructor2" << endl;value = val;}~CCounter(){cout << "CCounter Destructor" << endl;system("pause");}};class CExample{int value;public:CCounter car;CExample(){cout << "CExample Constructor1" << endl;value = 0;}CExample(int val){cout << "CExample Constructor2" << endl;value = val;}~CExample(){cout << "CExample Destructor" << endl;system("pause");}void Display() { cout << "value=" << value << endl; } };void main(){CExample obj(350);obj.Display();system("pause");}//调用顺序:CCounter()-CExample(int val)-~CExample()-~CCounter()4.#include <iostream>using namespace std;class Point{protected:int x;public:int Getx(){ return x; }int Y;void init(int a, int b){ x = a; Y = b; } int Gety(){ return Y; }void Setx(int a){ x = a; }void Sety(int b){ Y = b; }};void main(){Point A, B;A.init(25, 27);B.init(29, 31);cout << "A.x=" << A.Getx() << endl;cout << "B.x=" << B.Getx() << endl;cout << "A.Y=" << A.Y << endl;cout << "A.y=" << A.Gety() << endl;cout << "B.y=" << B.Y << endl;cout << "B.y=" << B.Gety() << endl;system("pause");}5.#include <iostream>using namespace std;class base{private:int i;static int k; //定义静态变量k public:base() { i = 0; k++; } //定义构造函数void Display();};void base::Display(){k = k + 10;i++;cout << "i=" << i << ",k=" << k << endl; }int base::k = 0; //初始化k的值void main(){base a, b;a.Display();b.Display();system("pause");}运行结果为:i=1;k=12i=1;k=22二.编程题1.{if (x > 0){cout << "It's a positive number" << endl;positive++;}else if (x == 0){zero++;cout << "It's zero" << endl;}else{negative++;cout << "It's a negative number" << endl;}}int num::positive = 0; int num::negative = 0; int num::zero = 0; void main(){int n;while (cin >> n){num test(n);test.decision();test.print();}system("pause");}2.#include <iostream>using namespace std;class dianqi{public:void getprice(int x , int y, int z ) {colorcast = x;ridge = y;washer = z;};void total(int a , int b , int c ){int t = a*colorcast + b*ridge + c*washer;cout << t << endl;};private:int colorcast;int ridge;int washer;};void main(){dianqi dian;dian.getprice(4200, 2800, 1500);cout << "请分别输入彩电,冰箱,洗衣机的销售数量:";int a = 0, b = 0, c = 0;cin >> a;cout << " ";cin >> b;cout << " ";cin >> c;cout << endl;cout << "总营业额为:";dian.total(a, b, c);system("pause");}3.#include<iostream>#include<string>using namespace std;class car{public:void disp_parameters(){cout << "型号: " << type<< endl;cout << "颜色: " << colour << endl;cout << "车门数:" << door << endl;cout << "座位数:" << seat << endl;cout << "轴距: " <<distance << endl;}void change(string a, char b, int c, int d, int e) {type = a;colour = b;door = c;seat = d;distance = e;}private:string type;char colour;int door;int seat;int distance;};void main(){car gundam;gundam.change("Double O GUNDAM", 'b', 1, 5, 6);gundam.disp_parameters();system("pause");}4.#include <iostream>using namespace std;class student{public:int num;char name[20];char sex;int age;};void main(){student stu[5];student temp;for (int i = 0; i<5; i++){cout << "输入第" << i + 1 << "位学生的学号:";cin >> stu[i].num;cout << "输入第" << i + 1 << "位学生的:";cin >> stu[i].name;cout << "输入第" << i + 1 << "位学生的性别:";cin >> stu[i].sex;cout << "输入第" << i + 1 << "位学生的年龄:";cin >> stu[i].age;}for (int a = 1; a < 5; a++){for (int b =0 ; b < 5-a; b++){if (stu[b].age<stu[b + 1].age){temp.age = stu[b + 1].age;stu[b + 1].age = stu[b].age;stu[b].age = temp.age;}}}for (int i = 0; i<5; i++)cout << "num:" << stu[i].num << " name:" << stu[i].name << " sex:" << stu[i].sex << " age:" << stu[i].age << endl;system("pause");}5.#include <iostream>using namespace std;class ATM{public:void s_balance(void){cout << "The balance is " << balance << endl;}void deposit(float a){balance += a;}void withdraw(float a){balance -= a;}int checking(int a){if (key == a)return 1;elsereturn 0;}private:int key = 328;static float balance; };float ATM::balance = 0.0f; void main(){ATM sys1;int k,m;float num;cout << "Please input the key: ";cin >> k;if (sys1.checking(k) != 1)cout << "Error" << endl;else{cout << "Please choose the function:" << endl << "(1) Depositing money" << endl <<"(2) Withdrawing money" << endl <<"(3) Check the balance" << endl <<"(4) Return to the main interface"<<endl;while (cin >> m){switch (m){case 1:cout << "Please input how much you want to deposit: ";cin >> num;sys1.deposit(num);cout << "You have deposited " << num << endl;sys1.s_balance();cout << "Please choose the function:" << endl << "(1) Depositing money" << endl <<"(2) Withdrawing money" << endl <<"(3) Check the balance" << endl << "(4) Return to the main interface" << endl;break;case 2:cout << "Please input how much you want to withdraw: ";cin >> num;sys1.withdraw(num);cout << "You have withdrawed " << num << endl;sys1.s_balance();cout << "Please choose the function:" << endl << "(1) Depositing money" << endl <<"(2) Withdrawing money" << endl <<"(3) Check the balance" << endl << "(4) Return to the main interface" << endl;break;case 3:sys1.s_balance();cout << "Please choose the function:" << endl << "(1) Depositing money" << endl <<"(2) Withdrawing money" << endl <<"(3) Check the balance" << endl << "(4) Return to the main interface" << endl;break;case 4:cout << "Please choose the function:" << endl << "(1) Depositing money" << endl <<"(2) Withdrawing money" << endl <<"(3) Check the balance" << endl;break;default:cout << "Error1" << endl;break;}}}system("pause");}6.#include <iostream> #include<string> using namespace std; class student{public:friend void sort(student &a, student &b, student &temp);void change(string a, int b, float c){name=a;num = b;score = c;}float show(){return score;}private:int num;string name;float score;};void sort(student &a, student &b,student &temp){if (a.score < b.score){temp = a;a= b;b = temp;}}void main(){student stu[5];student temp;string q=" ";int w = 0;float e=0.0f;for (int i = 0; i<5; i++){cout << "输入第" << i + 1 << "位学生的,学号,成绩:"<<endl;cout << " :";cin >> q;cout << " 学号:";cin >> w;cout << " 成绩:";cin >> e;stu[i].change(q, w, e);cout << endl;}for (int i = 1; i<5; i++){for (int j = 0; j<(5 - i); j++){sort(stu[j], stu[j + 1], temp);}}cout << "最高分" << stu[0].show() << endl;cout << "最低分" << stu[4].show() << endl;system("pause");}。

相关文档
最新文档