文档库 最新最全的文档下载
当前位置:文档库 › 实验6 函数及其调用

实验6 函数及其调用

实验6 函数及其调用
实验6 函数及其调用

数学实验练习六:函数

一、1)写一个MATLAB 函数piFun01.m 来计算下列级数:

f(n) = 4*(1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + ...)

其中n 为函数的输入,代表上述级数的项数,级数和f(n) 则是函数的输出。function piFun01(n)

y=0;

for i=1:n

y=y+(-1)^(i+1)*1/(2*i-1);

end

4*y

> piFun01(10)

y =

3.0418

ans =

3.0418

>> piFun01(1000)

y =

3.1406

ans =

3.1406

>> piFun01(10000)

y =

3.1415

ans =

3.1415

2)使用tic 和toc 指令来测量piFun01(100000) 的计算时间。如果你不知

道如何使用这两个指令,请使用help tic 及help toc 来查出它们的用法。

我的旧计算机是Pentium 450MHz,所得的计算时间约为 2 秒。请说明你的计算机规格以及其计算时间。

function piFun(n)

y=0;

tic

for i=1:n

y=y+(-1)^(i+1)*1/(2*i-1);

f(i)=4*y;

end

toc;

f(n)

t=toc

>> piFun(100000)

Elapsed time is 22.232845 seconds.

ans =

3.1416

t =

22.2333

二、写一个MATLAB 的递归函数fibo.m 来计算Fibonacci 数列,其定义如下:

fibo(n+2) = fibo(n+1)+fibo(n)

此数列的启始条件如下:

fibo(1) = 0, fibo(2) = 1.

a) fibo(25) 的返回的值是多少?

function fibo(n)

fibo(1)=0;fibo(2)=1;

if n==1

fibo(1)=0;

elseif n==2

fibo(2)=1;

else

for i=3:n

fibo(i)=fibo(i-2)+fibo(i-1);

end

end

fibo(n)

fibom(25)

ans =

46368

b) 使用tic 和toc 指令来测量fibo(25) 的计算时间。我的计算机是

Pentium 2GHz,所得的计算时间约为3.35 秒。请说明你的计算机规格

以及其计算时间。

function fibo(n)

fibo(1)=0;fibo(2)=1;

tic

if n==1

fibo(1)=0;

elseif n==2

fibo(2)=1;

else

for i=3:n

fibo(i)=fibo(i-2)+fibo(i-1);

end

end

toc;

fibo(n)

t=toc

> fibom(25)

Elapsed time is 0.000017 seconds.

ans =

46368

t =

7.6825e-005

c) 你们已学过离散数学,知道Fibonacci 数列的第n 项可以直接表示成

fibo(n)={[(1+a)/2]^(n-1)-[(1-a)/2]^(n-1)}/a

其中 a 是 5 的平方根。写利用上式一个MATLAB 的非递归函数

fibo2.m 来计算Fibonacci 数列。

function fibo2(n)

fibo2(n)=(((1+sqrt(5))/2)^(n-1)-((1-sqrt(5))/2)^(n-1))/sqrt(5);

fibo2(n)

> fibo2(25)

ans =

4.6368e+004

>> fibo3(25)

function fibo3(n)

tic;

a=sqrt(5);

fibo2(n)=(((1+a)/2)^(n-1)-((1-a)/2)^(n-1))/a;

toc;

t=toc

>> fibo2(25)

Elapsed time is 0.000010 seconds.

t =

2.4584e-005

d) fibo2(25) 的值为何?是否和fibo(25) 相同?

答:Fibo2(25)值为4.6368e+004;与fibo(25)相同.

e)请计算fibo2(25) 的计算时间,并和fibo(25) 比较。

答:Fibo2(25)的时间是2.4584e-005,和fibo(25)不同.

f)请比较并说明使用fibo.m 和fibo2.m 来计算Fibonacci 数列的优缺

点。

答:两个函数均可得到正确答案,fibo2.m比fibo.m的延时性更短,且计算时间也短.

三、假设在期中考后,我们用一个向量x 来储存每个人的考试成绩。请写一个

函数ranking01.m,输入为成绩向量x,输出则是此成绩的排名。例如,当x = [92, 95, 58, 75, 69, 82] 时,ranking(x) 回传的排名向量则是[2, 1, 6, 4, 5, 3],代表92 分是排名第2,95 分是排名第1,58 分是排名第6,等等。提示

你可以使用循环(如for-loop 和while-loop 等)完成此作业,但是程序代码会比较凌乱,执行效率也会变差。所以请尽量利用sort 指令,而不要用到循环。

function r=ranking01(x)

x=input('考试成绩x=')

[m,n]=sort(x);

k=length(x);

for i=1:k

r(n(i))=k-i+1;

end

>> ranking

考试成绩x=[92 95 58 75 69 82]

x =

92 95 58 75 69 82

ans =

2 1 6 4 5 3

>> ranking

考试成绩x=[45 10 6 78 92 88 84 77]

x =

45 10 6 78 92 88 84 77 ans =

6 7 8 4 1 2 3 5

实验6+过程_函数和程序...

实验6过程、函数和程序包 姓名:学号: 专业:班级: 同组人:无实验日期:2013/7/21 【实验目的与要求】 ?掌握过程的创建与调用 ?掌握PL/SQL函数的编写与调用 ?熟悉程序包的使用 【实验内容与步骤】 6.0.实验准备工作:PL/SQL程序文件的编辑与执行 1.使用文档编辑器编辑以下文件,并保存为aa.sql: 2.以scott身份登录,在SQ L Plus中执行@aa命令运行程序: 注:测试时,文件名请用全名(即包含路径,如:@c:\aa) 给出运行结果:

6.1.存储过程 1.最简单的存储过程编写与执行 (1)创建测试表 drop table Exam_Table; create table Exam_Table( e_id number(5), e_name varchar2(20), e_salary number(8,2) ); (2)创建存储过程 create or replace procedure insert_salary (v_id number,v_name varchar2,v_salary number) is begin insert into Exam_Table values (v_id,v_name,v_salary); commit; dbms_output.put_line('数据插入成功'); end; / (3) 执行(调用)存储过程 exec insert_salary(6,'g',2000); (4)查询执行结果

select * from Exam_Table; 给出执行的最后结果: 2.参数的使用:in/out/in out参数 阅读以下程序,理解不同类型参数使用的不同,运行程序,给出运行结果。 (1) 用两个参数:in ,out 传入一个姓名,输出:某某人你好: create or replace procedure mp(v_in varchar2,v_out out varchar2) is begin v_out:=v_in||'你好'; end; declare v_name varchar2(10); begin mp('scott',v_name); dbms_output.put_line(v_name); end;--输出:scott你好 给出运行结果:

excel基础应用实验报告

Excel电子表格实验报告 姓名(学号):________201302020112____ 年级(专业):_____ 电商1301 ________成绩:________ 实验时间:_______________________ _实验地点:__________________________ _ 实验1-1: 一、实验目的: 掌握使用Excel进行电子表格处理的基本操作,编辑与格式化工作表和单元格。 二、实验内容: 1.在Excel中新建一个空白工作簿,文件名为“学号.xls”,保存在文件夹“实验4”中; 学号姓名性别班级平时成绩期中成绩期末成绩 男一班85 72 80 女一班86 68 72 男二班76 80 84 女二班89 82 80 女一班92 94 91 女二班98 96 92 男二班60 59 60 女一班90 82 88 男一班71 74 70 65 58 54 男 二班 3.在工作表“成绩1”的最右侧插入两列,标题依次为“总评成绩”、“等级”; 4.调整“学号”、“姓名”、“性别”、“班级”、“等级”列的列宽为80个像素,调整“平时成绩”、“期中成绩”、“期末成绩”、“总评成绩”列的列宽为85个像素; 5.设置“平时成绩”只能为[60-100]的整数,“期中成绩”和“期末成绩”只能为[0-100]的整数; 6.设置标题行:行高为20磅,水平居中,垂直居中,字体为新宋体,字形为加粗,字号为12磅,底纹图案为25%灰色,颜色为浅橙色; 7.在工作表“成绩1”顶部插入一行,输入“学生成绩表”,字体为黑体,字号为20磅,颜色为蓝色,跨列居中(使它位于所制作表格的上方中央位置)。 8.为表格添加表格框线,内部为单实线,外部为双实线。 9.在“学号”列从上到下依次填充文本数据“2009001”至“2009010”,要求水平居中。10.在“姓名”列从上到下依次填充文本数据“某一”至“某十”,要求水平居中。11.要求“期末成绩”列能自动识别高于90分的成绩,并将其显示成蓝色粗体。 12.保存修改后的文件。 三、实验步骤:(学生自己填写) 1.桌面——右键——新建——文件夹——改名为“实验1”——Excel空白工作簿——改名为“20091060257”;

实验六 高层绘图操作答案

实验六 高层绘图操作 实验目的: 1. 掌握绘制二维图形的常用函数 2. 掌握绘制三维图形的常用函数 3. 掌握绘制图形的辅助操作 实验内容: 1. 1. 设x x x y cos 2^1sin 35.0????? ? ++=,在π 2~ 0=x 区间取101点,绘制函数曲 线。 x=0:pi/100:2*pi; y=(0.5+3*sin(x)./(1+x..^2)).*cos(x); plot(x,y); 2. 已知2 1x y = ,)2cos(2x y =,213y y y ?=,完成下列操作: (1) 在同一坐标系下用不同的颜色和线型绘制三条曲线。 (2) 以子图形式绘制三条曲线。 (3) 分别用条形图、阶梯图、杆图和填充图绘制三条曲线。 (1).在同一坐标系下用不同的颜色和线型绘制三条曲线。 x=0:pi/1000:2*pi; y1=x.^2; y2=cos(2*x); y3=y1.*y2;

plot(x,y1,'r',x,y2,'b-.',x,y3,'k--'); (2). 以子图形式绘制三条曲线。 x=0:pi/10:2*pi; y1=x.^2; subplot(2,2,1);plot(x,y1,'r'); title('y1=x^2'); y2=cos(2*x); subplot(2,2,2);plot(x,y2,'b-.'); title('y2=cos(2*x)'); y3=y1.*y2; subplot(2,2,3);plot(x,y3,'k--'); title('y3=y1.*y2'); (3). 分别用条形图、阶梯图、杆图和填充图绘制三条曲线。x=0:pi/10:2*pi; y1=x.^2; subplot(2,2,1);bar(x,y1,'r'); title('y1=x^2'); subplot(2,2,2);stairs(x,y1,'r'); title('y1=x^2'); subplot(2,2,3);stem(x,y1,'r'); title('y1=x^2'); subplot(2,2,4);fill(x,y1,'r');

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显示

电路实验二实验报告仪器仪表的使用

电路实验二实验报告 实验题目:仪器仪表的使用 实验内容: 1.熟悉示波器和函数信号发生器的使用; 2.测量示波器自带的校准信号; 3.用示波器测量函数信号发生器提供的正弦波、三角波和方波; 4.在面包板上搭接一个积分电路,用示波器观测其波形。 实验环境: 示波器DS1052E,函数发生器EE1641D,面包板SYB-130。 实验原理: 1.示波器是一种用途十分广泛的电子测量仪器。把肉眼看不见的电信号变换成看得见的 图象,便于研究各种电现象的变化过程。利用狭窄的、由高速电子组成的电子束,打在涂有荧光物质的屏面上,产生细小的光点。在被测信号的作用下,电子束就好像一支笔的笔尖,可以在屏面上描绘出被测信号的瞬时值的变化曲线。利用示波器能观察各种不同信号幅度随时间变化的波形曲线,还可以用它测试各种不同的电量,如电压、电流、频率、相位差、调幅度等等。 2.函数发生器是一种多波形的信号源。它可以产生正弦波、方波、三角波、锯齿波,甚

至任意波形。有的函数发生器还具有调制的功能,可以进行调幅、调频、调相、脉宽调制和VCO控制。 3.面包板是专为电子电路的无焊接实验设计制造的。由于各种电子元器件可根据需要随 意插入或拔出,免去了焊接,节省了电路的组装时间,而且元件可以重复使用,所以非常适合电子电路的组装、调试和训练。 实验记录及结果分析: 1.示波器自带的校准信号: 2.函数发生器提供正弦波: 3.函数发生器提供的方波: 最大值:2.40V 最小值:-2.64V 峰峰值:5.04V 频率:2.016kHz 周期:496.0μs 占空比:48.0% 4.函数发生器提供的三角波: 最大值:2.40V 最小值:-2.64V 峰峰值:5.04V 频率:2.016kHz 周期:496.0μs 实验总结: 示波器能够产生波形,把肉眼看不见的电信号转为我们很容易看见的图形,而函数发生器则会产生不同类型的电信号,这样利用示波器和函数发生器就可以对函数发生器所发

matlab 实验6 函数及其调用

数学实验练习六:函数 一、1)写一个 MATLAB 函数 piFun01.m 来计算下列级数: f(n) = 4*(1 - 1/3 + 1/5 - 1/7 + 1/9 - 1/11 + ...) 其中 n 为函数的输入,代表上述级数的项数,级数和 f(n) 则是函数的输出。 解:function f=pifun01(n) f=0; for i=1:n f=f+4*(-1)^(i+1)/(2*i-1); end >> piFun01(100000) ans = 3.1416 2)使用 tic 和 toc 指令来测量 piFun01(100000) 的计算时间。如果你不知道如何使用这两个指令,请使用 help tic 及 help toc 来查出它们的用法。我的旧计算机是 Pentium 450MHz,所得的计算时间约为 2 秒。请说明你的计算机规格以及其计算时间。

解:function f=pifun01(n) tic f=0; for i=1:n f=f+4*(-1)^(i+1)/(2*i-1); end f=toc 二、写一个 MATLAB 的递归函数 fibo.m 来计算 Fibonacci 数列, 其定义如下: fibo(n+2) = fibo(n+1)+fibo(n) 此数列的启始条件如下: fibo(1) = 0, fibo(2) = 1. a) fibo(25) 的返回的值是多少? 解:function f=fibo(n) if n==1 f=0; elseif n==2

f=1; else f=fibo(n-1)+fibo(n-2); end >> clear >> fibo(25) ans = 46368 b)使用 tic 和 toc 指令来测量 fibo(25) 的计算时间。我的计 算机是 Pentium 2GHz,所得的计算时间约为 3.35 秒。请说明你的计算机规格以及其计算时间。 解: function f=fibo(n) tic if n==1 f=0; elseif n==2 f=1; else f=fibo(n-1)+fibo(n-2); end

MATLAB程序设计实验报告

MATLAB实验报告 一、实验名称 实验4图形绘制(1) 二、实验目的: 熟悉和掌握MA TLAB基本的二维图形绘制函数。 三、实验内容: 1.绘制简单的二维图形 2.一个坐标系绘制多幅图形 3.图形标识和坐标控制 4.交互式图形指令 四、回答问题: (本次实验未预留问题) 五、遇到的问题及解决: 遇到了求y=lnx时,输入“y=ln(x)”不被软件识别的问题,查看常用数学函数表后改为y=log(x)成功解决。 在求10x时不知道用什么函数,函数表里也查不到,在老师的点拨下用“y=10.^x”解决。 在绘图时发现默认线型不够明显,查表后使用尖三角、叉号代替默认线型。 六、体会: 本次实验我学会了利用MATLAB绘制图形的基本方法,以及相应的备注方法。 难点是了解各种函数的具体作用并熟练掌握。 体会是:多学多练,孰能生巧,日积月累,必有提高。

思考题: 1.在同一坐标系绘制t3,-t2,t2sint在[0,2π]内的曲线图。 x=0:pi/50:2*pi; y1=t.*t.*t; y2=-t.*t; y3=t.*t.*sin(t); plot(t,y1,'^k',t,y2,'.k',t,y3,'xk'); legend('\ity=t^3','\ity=-t^2','\itt^2*sint'); 2.在一幅图中画出4幅子图,分别绘制sin2x,tanx,lnx,10x的图形,并加上适当的图形注释。注意:把函数变成MATLAB对应的形式。 x=0:pi/50:2*pi; y1=sin(2*t); y2=tan(x); y3=log(x); y4=10.^x; subplot(2,2,1) plot(x,y1); legend('y=sin2x'); subplot(2,2,2) plot(x,y2) legend('y=tanx'); subplot(2,2,3) plot(x,y3)

实验六、用窗函数法设计FIR滤波器分析解析

实验六 用窗函数法设计 FIR 滤波器 一、实验目的 (1) 掌握用窗函数法设计FIR 数字滤波器的原理和方法。 (2) 熟悉线性相位FIR 数字滤波器特性。 (3) 了解各种窗函数对滤波特性的影响。 二、实验原理 滤波器的理想频率响应函数为H d (e j ω ),则其对应的单位脉冲响应为: h d (n) = ?-π π ωωωπ d e e H n j j d )(21 窗函数设计法的基本原理是用有限长单位脉冲响应序列h(n)逼h d (n)。由于h d (n)往往是无 限长序列,且是非因果的,所以用窗函数。w(n)将h d (n)截断,并进行加权处理: h(n) = h d (n) w(n) h(n)就作为实际设计的FIR 数字滤波器的单位脉冲响应序列,其频率响应函数H(e j ω )为: H(e j ω ) = ∑-=-1 )(N n n j e n h ω 如果要求线性相位特性,则h (n )还必须满足: )1()(n N h n h --±= 可根据具体情况选择h(n)的长度及对称性。 用窗函数法设计的滤波器性能取决于窗函数w(n)的类型及窗口长度N 的取值。设计过程中,要根据对阻带最小衰减和过渡带宽度的要求选择合适的窗函数类型和窗口长度N 。 三、实验步骤 1. 写出理想低通滤波器的传输函数和单位脉冲响应。 2. 写出用四种窗函数设计的滤波器的单位脉冲响应。 3. 用窗函数法设计一个线性相位FIR 低通滤波器,用理想低通滤波器作为逼近滤波器,截止频率ωc =π/4 rad ,选择窗函数的长度N =15,33两种情况。要求在两种窗口长度下,分别求出h(n),打印出相应的幅频特性和相频特性曲线,观察3dB 带宽和阻带衰减; 4 用其它窗函数(汉宁窗(升余弦窗)、哈明窗(改进的升余弦窗)、布莱克曼窗) 设计该滤波器,要求同1;比较四种窗函数对滤波器特性的影响。 四、实验用MATLAB 函数 可以调用MATLAB 工具箱函数fir1实现本实验所要求的线性相位FIR-DF 的设计,调用一维快速傅立叶变换函数fft 来计算滤波器的频率响应函数。

实验六 函数

实验六 函数 一、实验目的 1.掌握自定义函数的一般结构及定义函数的方法。 2.掌握形参、实参、函数原型等重要概念。 3.掌握函数声明、函数调用的一般方法。 4. 了解函数的嵌套调用以及函数的递归调用的格式。 二、实验预习 1 .理解为什么要在程序中引入函数?函数的引入对程序的整体结构有什么样的影响? 2. 函数的定义格式,理解函数的类型说明符根据什么来确定? 3. 充分理解函数实参和形参的联系和区别,掌握单向值传递的意义。 4. 了解针对不同返回类型的函数返回值的应用,尤其是有无return 语句的区别。 5. 掌握函数调用与函数声明的格式,了解什么情况下需要进行函数声明?什么情况下不需要? 6. 了解函数嵌套调用和递归调用的原理及使用原则。 三、实验内容 (一)阅读并调试下列程序,根据要求给出程序结果。 1.求三角形面积函数。 ⑴ 编程分析 ① 设三角形边长为a 、b 、c ,面积area 的算法是s=(a+b+c)/2, area=))()((c s b s a s s --- ,其中 显然,要计算三角形面积,需要用到三个参数,面积函数的返回值的数据类型应为实型。 ② 尽管main()函数可以出现在程序的任何位置,但为了方便程序阅读,通常将主函数放在程序的开始位置,并在它之前集中进行自定义函数的原型声明。 ⑵ 参考程序 /* 定义和使用求三角形面积函数的程序 */ #include "math.h" #include "stdio.h" float area(float,float,float); /*函数的声明*/ void main() { float a,b,c; printf("请输入三角形的三个边长值:\n") scanf("%f,%f,%f",&a,&b,&c); if(a+b>c&&a+c>b&&b+c>a&&a>0.0&&b>0.0&&c>0.0) printf("Area=%-7.2f\n",area(a,b,c)); /* 以下是计算任意三角形面积的函数 */ float area(float a,float b,float c) { float s,area_s; s=(a+b+c)/2.0;

图的应用的实验报告

实验六图的应用及其实现 一、实验目的 1.进一步功固图常用的存储结构。 2.熟练掌握在图的邻接表实现图的基本操作。 3.理解掌握AOV网、AOE网在邻接表上的实现以及解决简单的应用问题。 二、实验内容 [题目一]:从键盘上输入AOV网的顶点和有向边的信息,建立其邻接表存储结构,然后对该图拓扑排序,并输出拓扑序列. 试设计程序实现上述AOV网的类型定义和基本操作,完成上述功能。 测试数据:教材图7.28 [题目二]:从键盘上输入AOE网的顶点和有向边的信息,建立其邻接表存储结构,输出其关键路径和关键路径长度。试设计程序实现上述AOE网类型定义和基本操作,完成上述功能。 测试数据:教材图7.29 三、实验步骤 ㈠、数据结构与核心算法的设计描述 基本数据结构: #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 typedef int Status; /* Status 是函数的类型,其值是函数结果状态代码,如OK 等*/ #define INFINITY INT_MAX //定义无穷大∞ #define MAX_VERTEX_NUM 20 typedef int V ertexType; typedef int InfoType; typedef struct ArcNode // 表结点定义 { InfoType info; int adjvex; //邻接点域,存放与V i邻接的点在表头数组中的位置ArcNode *nextarc; //链域,指示依附于vi的下一条边或弧的结点, }ArcNode; typedef struct VNode //表头结点 { int data; //存放顶点信息 struct ArcNode *firstarc; //指示第一个邻接点 }VNode,AdjList[MAX_VERTEX_NUM]; typedef struct { //图的结构定义

实验六 自定义函数

实验六自定义函数 实验目的:熟悉Matlab自定义函数的定义和调用方法 实验内容: 2. 编写程序,在主程序中提示用户输入一组数字,编写子程序文件 find_div2.m找出能被2整除的数字,find_max_min.m找出输入数字中的最大值和最小值之和,find_averag求出输入数字的平均值,sort_number对数字进行排序,在主程序中调用子程序并且把上述结果输出。例如输入的数字为1,2,3,4,5,要求输出格式为:输入数字中能被2整除的数为:2,4 输入数字中最大值与最小值之和为:5+1=6 输入数字的平均值为:3 输入数字从大到小排序为:5,4 3,2,1 主程序: clear,clc s=input('请输入一组数字:','s'); x=str2num(s); find_div2(x); find_max_min(x); find_averag(x); sort_number(x);

子程序: function find_div2(x) b=length(x); for i=1:b A(i)=x(i); end c=find(rem(A,2)==0); A=A(c); disp(['输入数字中能被2整除的数为:',num2str(A)]) 子程序: function find_max_min(x) a=max(x); b=min(x); c=a+b; disp(['输入数字中最大值与最小值之和为:',num2str(a),'+',num2str(b),'=',num2str(c) 子程序: function find_averag(x) a=mean(x); disp(['输入数字的平均值为: ',num2str(a)]) 子程序: f unction sort_number(x) a=sort(x); b=fliplr(a); disp(['输入数字从大到小排序为:',num2str(b)])

C语言程序设计II实验报告

C语言程序设计II实验报告题目:实验五函数应用 院系名称:计算机学院 专业名称:计算机科学与技术 班级: 学号: 学生姓名: 指导教师: 实验日期:2017年4月1日 报告提交截止日期:2017年4月11日

一、实验目的 1、掌握C语言函数的定义方法、函数的声明及函数的调用方法及 调用过程; 2、掌握主调函数和被调函数之间的参数传递方式; 二、实验内容与要求: 1、求两个整数的最大公约数和最小公倍数。用一个函数求最大公约数,用 另一个函数根据求出的最大公约数求最小公倍数。(提示:设两个整数是 a,b,最大公约数是p,最小公倍数是q,那么ab=pq) 2、用牛顿迭代法求方程f(x)=ax3+bx2+cx+d=0的根。系数a、b、c、d由主 函数输入。求根过程写成函数。(提示:牛顿迭代法是先给定方程f(x)=0 的一个较好的初始近似根x0,然后重复使用迭代公式: 求x的近似解,直至相邻两次的近似解相差很小为止,如差值的绝对值 小于1e-07。x0可以从键盘输入或直接设定。) 3、定义一个函数,功能是计算n个学生的成绩中高于平均成绩的人数,并 作为函数返回值。用主函数来调用它。统计30个学生成绩中高于平均成 绩的有多少人。 4、 ∑= + + + = = n i n p p p i p n s 1 ) ( )2( )1( )( ) (Λ Λ,! )(i i p= 5、编写和调用函数,给定圆筒的内径、外径和高,计算该圆筒的体积;给

定圆锥的高、底面半径,计算该圆锥的体积和表面积。 6、编写和调用函数,求出10000以内的所有素数、绝对素数、水仙花数、 完全数(或称完数)、互满数。 提示:一个素数经过任意次调换位,仍然为素数,则称其为绝对素数, 例如13和31就是一个绝对素数。水仙花数是指一个三位整数,其各位 数字立方之和等于该数。例如,153就是一个水仙花数:153=1*1*1+ 5*5*5+3*3*3。完全数是指一个数正好是它的所有约数(本身除外)之和。 例如,6就是一个完全数,因为6的因子有1、2、3,并且6=1+2+3。 如果有两个数,每一个数的所有约数(除它本身以外)之和正好等于对 方,则称这两个数为互满数。 三、实验结果

实验6函数习题及答案

实验6 函数 班级:学号: 姓名:日期: 一、实验目的 (1)掌握定义函数的方法; (2)掌握函数实参与形参的对应关系,以及“值传递”的方式; (3)掌握函数的嵌套调用和递归调用的方法; (4)掌握全局变量和局部变量、动态变量和静态变量的概念和使用方法; (5)学习对多文件的程序编译和运行。 二、实验内容 1.阅读下面程序,写出程序运行结果,并且上机进行验证。 (1)a1.cpp 变量的虚实耦合,实现的是值传递,是单向传递 #include "stdio.h" int swap(int a,int b) { int c,s; c=a; a=b; b=c; s=a+b; return s; } void main() { int a,b,s; a=3;b=4; s=swap(a,b); printf("a=%d b=%d s=%d\n",a,b,s); } (2)a2.cpp

将十进制数26的各位数字相乘 #include "stdio.h" int fun(int num) { int k=1; do { k*=num %10; / num/=10; }while(num); return(k); } void main() { int n=26; printf("%d\n",fun(n)); } (3)a3.cpp 变量的作用域,当在函数内定义了与全局变量同名的局部变量时,全局变量被屏蔽#include "stdio.h" int a=3,b=5,c; void f(int b) { c=a+b; printf("%d %d %d\n",a,b,c); } void main() { int a=8; f(3); printf("%d %d %d\n",a,b,c); } (4)a4.cpp 递归,将十进制11转换为二进制 #include "stdio.h" void dtob(int n) { int i;

函数程序设计 -C语言程序实验报告

安徽工程大学 高级语言程序设计实验报告 班级姓名同组者/ 成绩 日期2019\11\21 指导教师 实验名称函数程序设计 一、实验目的 1.掌握定义函数的方法。 2.掌握函数实参与形参的对应关系,体会“值传递”的方式。 3.掌握函数的嵌套调用和递归调用的方法。 4.掌握全局变量和局部变量、动态变量和静态变量的概念与使用方法。 5.理解数组作为函数参数的传递方式。 6.理解宏的概念,掌握宏的定义。 7.了解文件包含的概念,掌握其用法。 二、实验内容 1.完成程序,求解n! 具体要求:输入并完善源程序;对源程序进行编译、连接和运行;写出程序运行结果。 2.计算s=1的k次方+2的k次方+3的k次方+……+N的k次方。 具体要求:输入并完善源程序;对源程序进行编译、连接和运行;写出程序运行结果。 3.写出下面3个程序的输出结果,说明每个程序中的各个x有何不同。 4.阅读程序,理解程序的功能,写出预期结果并上机验证。 5.编程并上机调试运行。 (1)编写一个判断素数的函数,在主函数输入一个整数,输出是否为素数的信息。(2)输入一个整数,将它逆序输出。要求定义并调用函数rverse(number),它的功能是返回number的逆序数。如reverse(12345)的返回值是54321。 (3)用递归法求n阶勒让德多项式的值,递归公式为 P(x)=1,n=0;P(x)=x,n=1;P(x)= [(2n-1)*x-Pn-1(x)-(n-1)Pn-2(x)]/n, n>1 (4)编写一函数,由实参传递一个字符串,统计此字符串中字母、数字、空格和其他

字符的个数,在主函数中输入字符串并输出上述结果。 (5)带参数的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参。输出交换后的两个值。 (6)编写函数,实现两个字符串的连接,在主函数中输入两个字符串并输出连接后的结果(不要使用库函数中的strcat函数)。 (7)请编写函数fun,它的功能是:求出1~1000之内能被7或11整除,但不能同时被7和11整除的所有整数,并将它们放在a所指的数组中,通过n返回这些数的个数,在主函数中输出这些整数,并给出统计的总数。 (8)设有未完成的函数: char GetChar(char c) { char s[]="9038571426"; …… } 字符串s中无序地存储了10个数字字符,没有重复。函数的功能是: 如果字符c不是数字字符,函数原样返回该字符;否则,在s中查找字符C,并返回其在s 中的前一个字符。如果该字符位于s的最前面(字符'9') ,则返回最后一个字符6'。 如GetChar(4)得到字符'I', GetChar(T)得到字符T。请完成该函数并在主函数中调用。*思考题 1.请分析不返回值的函数定义与有返回值的函数定义有什么不同,思考这两类函数在实际编程中的作用。 2.请观察本次实验中使用的函数都有几个返回值,当个函数需要有多个返回值时,应该如何处理? 3.数组作为函数参数有哪几种方式?这些方式中有没有能解决之前“函数多值返回问题”的方法? 4.请分析下面程序的作用。 /*format.h*/ #define DIGIT(d) printf("整数输出:%d\n",d) #define FLOAT(f) printf("实数输出:%10.2f\n",f) #define STRING(s) printf("字符串输出:?号s\n",s) /*user's program*/

实验六 窗函数及其对信号频谱的影响

实验六窗函数 及其对信号频谱 的影响 一. 实验目的 1. 掌握几种典型窗函数的性质、特点,比较几种典型的窗函数对信号频谱的影响。 2. 通过实验认识它们在克服FFT 频谱分析的能量泄漏和栅栏效应误差中的作用,以便在实际工作中能根据具体情况正确选用窗函数 二. 实验原理 1. 信号的截断及能量泄漏效应 数字信号处理的主要数学工具是博里叶变换.应注意到,傅里叶变换是研究整个时间域和频率域的关系。然而,当运用计算机实现工程测试信号处理时,不可能对无限长的信号进行测量和运算,而是取其有限的时间片段进行分析。做法是从信号中截取一个时间片段,然后用观察的信号时间片段进行周期延拓处理,得到虚拟的无限长的信号,然后就可以对信号进行傅里叶变换、相关分析等数学处理。 图6.1 信号的周期延拓 周期延拓后的信号与真实信号是不同的,下面我们就从数学的角度来看这种处理带来的误差情况。设有余弦信号x(t)在时域分布为无限长(- ∞,∞),当用矩形窗函数w(t)与其相乘时,得到截断信号xT(t) =x(t)w(t)。根据博里叶变换关系,余弦信号的频谱X(ω)是位于ω。处的δ函数,而矩形窗函数w(t)的谱为sinc(ω)函数,按照频域卷积定理,则截断信号xT(t) 的谱XT(ω) 应为: 将截断信号的谱XT(ω)与原始信号的谱X(ω)相比较可知,它已不是原来的两条谱线,而是两段振荡的连续谱.这表明原来的信号被截断以后,其频谱发生了畸变,原来集中在f0处的能量被分散到两个较宽的频带中去了,这种现象称之为频谱能量泄漏(Leakage)。 信号截断以后产生的能量泄漏现象是必然的,因为窗函数w(t)是一个频带无限的函数,所以即使原信号x(t)是限带宽信号,而在截断以后也必然成为无限带宽的函数,即信号在频域的能量与分布被扩展了。又从采样定理可知,无论采样频率多高,只要信号一经截断,就不可避免地引起混叠,因此信号截断必然导致一些误差,这是信号分析中不容忽视的问题。

C++实验六 函数

实验名称:实验六函数 班级学号姓名 实验地点完成日期成绩 (一)实验目的与要求 1.掌握高级语言中定义和使用函数的方法; 2.掌握通过“值传送”调用函数的方法; 3. 掌握函数的嵌套调用和递归函数的设计方法; 4.进一步练习阅读检查与调试修改高级语言程序的方法。 (二)实验内容 1.调试运行如下二程序,分析调用函数前后程序1中a,b这二个变量的值是否发生改变?为什么?程序2中数组a的二个元素的值是否发生改变?为什么? 程序1(变量作函数实参) int main( ) { int a=3,b=6; printf("a=%d,b=%d¥n",a,b); exchange1(a,b); printf("a=%d,b=%d¥n",a,b); return 0; } void exchange1(int x,int y) { int t; t=x;x=y;y=t; printf("x=%d,y=%d¥n",x,y); } 程序2(数组名作函数实参) int main( ) { void exchange2(int x[2]); static int a[2]={3,6};

printf("a[0]=%d,a[1]=%d¥n",a[0],a[1]); exchange2(a); printf("a[0]=%d,a[1]=%d¥n",a[0],a[1]); return 0; } void exchange2(int x[2]) { int t; t=x[0];x[0]=x[1];x[1]=t; printf("x[0]=%d,x[1]=%d¥n",x[0],x[1]); } 2. 写一个判别素数的函数,在主函数输入一个整数,输出是否素数的信息。 本程序应当准备以下测试数据:17、2、1。分别输入数据,运行程序并检查结果是否正确。 3. 编写转换函数,将十进制整数n(-2^31<=n<=2^31-1)转换成k(2<=k<=16)进制数。字母请使用大写。(HLOJ 8001) (三)实验具体步骤 1.调试运行如下二程序,分析调用函数前后程序1中a,b这二个变量的值是否发生改变?为什么?程序2中数组a的二个元素的值是否发生改变?为什么? 程序1(变量作函数实参) int main( ) { int a=3,b=6; printf("a=%d,b=%d¥n",a,b); exchange1(a,b); printf("a=%d,b=%d¥n",a,b); return 0; } void exchange1(int x,int y) { int t; t=x;x=y;y=t; printf("x=%d,y=%d¥n",x,y); }

[中学教育]Excel 基础应用实验报告

实验四Excel电子表格实验报告 姓名(学号):__________________ 年级(专业):_____ ________成绩:________ 实验时间:_______________________ _实验地点:__________________________ _ 实验4-1: 一、实验目的: 掌握使用Excel进行电子表格处理的基本操作,编辑与格式化工作表和单元格。 二、实验内容: 1.在Excel中新建一个空白工作簿,文件名为“学号.xls”,保存在文件夹“实验4”中;2.将工作表“Sheet1”重命名为“成绩1”,输入下列内容: 学号姓名性别班级平时成绩期中成绩期末成绩 男一班85 72 80 女一班86 68 72 男二班76 80 84 女二班89 82 80 女一班92 94 91 女二班98 96 92 男二班60 59 60 女一班90 82 88 男一班71 74 70 男二班65 58 54 3.在工作表“成绩1”的最右侧插入两列,标题依次为“总评成绩”、“等级”; 4.调整“学号”、“姓名”、“性别”、“班级”、“等级”列的列宽为80个像素,调整“平时成绩”、“期中成绩”、“期末成绩”、“总评成绩”列的列宽为85个像素; 5.设置“平时成绩”只能为[60-100]的整数,“期中成绩”和“期末成绩”只能为[0-100]的整数; 6.设置标题行:行高为20磅,水平居中,垂直居中,字体为新宋体,字形为加粗,字号为12磅,底纹图案为25%灰色,颜色为浅橙色; 7.在工作表“成绩1”顶部插入一行,输入“学生成绩表”,字体为黑体,字号为20磅,颜色为蓝色,跨列居中(使它位于所制作表格的上方中央位置)。 8.为表格添加表格框线,内部为单实线,外部为双实线。 9.在“学号”列从上到下依次填充文本数据“2009001”至“2009010”,要求水平居中。10.在“姓名”列从上到下依次填充文本数据“某一”至“某十”,要求水平居中。11.要求“期末成绩”列能自动识别高于90分的成绩,并将其显示成蓝色粗体。 12.保存修改后的文件。 三、实验步骤:(学生自己填写) 1.桌面——右键——新建——文件夹——改名为“实验4”——Excel空白工作簿——改名为“20091060257”; 2.在“Sheet1”上右键——重命名为“成绩1”——在“成绩1”中输入指定内容; 3.在“成绩1”中的最右侧输入字段“总评成绩”和“等级”; 4.选中“学号”,“姓名”,“性别”,“班级”,“等级”列——将鼠标放在任意一列上——左右

C++上机实验报告实验六

实验六 实验目的 1.掌握运算符重载的方法 2.学习使用虚函数实现动态多态性 实验要求 1.定义Point类,有坐标_x,_y两个成员变量;对Point类重载“++”(自增)、“――”(自减)运算符,实现对坐标值的改变。 2.定义一个车(vehiele)基类,有Run、Stop等成员函数,由此派生出自行车(bicycle)类、汽车(motorcar)类,从bicycle和motorcar派生出摩托车(motorcycle)类,它们都有Run、Stop 等成员函数。观察虚函数的作用。 3. (选做)对实验4中的People类重载“==”运算符和“-”运算符,“==”运算符判断两个people类对象的id属性是否相等;“-”运算符实现People类对象的赋值操作。 实验内容及实验步骤 1.编写程序定义Point类,在类中定义整型的私有成员变量_x_y,定义成员函数Point& operator++();Point operator++(int);以实现对Point类重载“++”(自增)运算符,定义成员函数Point& operator--();Point operator--(int);以实现对Point类重载“--”(自减)运算符,实现对坐标值的改变。程序名:1ab8_1.Cpp #include using namespace std; class Point { public: Point(); Point(int x,int y); ~Point(){} //Point类析构函数 Point& operator++(); //公有成员函数 Point operator++(int); Point&operator--(); Point operator--(int); void Show(); private: int _x; //私有数据成员 int _y; }; Point::Point(){ //Point类构造函数 _x=0;_y=0;} Point::Point(int x,int y) //Point类构造函数 { _x=x; _y=y; }

实验1 示波器函数信号发生器的原理及使用(实验报告之实验数据表)

实验1 示波器、函数信号发生器的原理及使用 【实验目的】 1. 了解示波器、函数信号发生器的工作原理。 2. 学习调节函数信号发生器产生波形及正确设置参数的方法。 3. 学习用示波器观察测量信号波形的电压参数和时间参数。 4. 通过李萨如图形学习用示波器观察两个信号之间的关系。 【实验仪器】 1. 示波器DS5042型,1台。 2. 函数信号发生器DG1022型,1台。 3. 电缆线(BNC 型插头),2条。 【实验内容与步骤】 1. 利用示波器观测信号的电压和频率 (1)参照“实验1 示波器函数信号发生器的原理及使用(实验指导书)”相关内容,产生如图1-1所示的正余弦波形,显示在示波屏上。 图1-1 函数信号发生器生成的正、余弦信号的波形 学生姓名/学号 指导教师 上课时间 第 周 节

(2)用示波器对图1-1中所示的正余弦波形进行测量并填写下表 表1-1 正余弦信号的电压和时间参数的测量 电压参数(V)时间参数 峰峰值最大值最小值频率(Hz)周期(ms)正弦信号 3sin(200πt) 余弦信号 3cos(200πt) 2. 用示波器观测函数信号发生器产生的正余弦信号的李萨如图形 (1)参照“实验1 示波器函数信号发生器的原理及使用(实验指导书)”相关内容,产生如图1-2所示的正余弦波形的李萨如图形,调节并正确显示在示波屏上。 图1-2 正弦信号3sin(200πt)和余弦信号3cos(200πt)的李萨如图形 3. 观测相同幅值、相同频率、不同相位差条件下的两正弦信号的李萨如图形 (1)在函数信号发生器CH1通道产生的正弦信号3sin(200πt)保持不变的情况下,调节函数信号发生器CH2通道产生正弦信号3sin(200πt+45o),观测并记录两正弦信号的李萨如图形于图1-3中。 (2)在函数信号发生器CH1通道产生的正弦信号3sin(200πt)保持不变的情况下,调节函数信号发生器CH2通道产生正弦信号3sin(200πt+135o),观测并记录两正弦信号的李萨如图形于图1-3中。

相关文档