上机习题3教案_第3次上机习题

教案模板 时间:2020-02-28 02:28:38 收藏本文下载本文
【www.daodoc.com - 教案模板】

上机习题3教案由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“第3次上机习题”。

实验三 MATLAB7.0基本编程

实验目的:

① 掌握脚本和函数;

② 掌握matlab中的变量和M文件的流控制语句; ③ 掌握函数的设计和实现。

实验要求:给出程序和实验结果。实验内容:

一、一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数。输出全部水仙花数。

二、从键盘输入若干个数,当输入10时结束输入,求这些数的平均值和它们之和。

三、求[1000,2000]之间第一个能被17整除的整数。

四、若一个数等于它的各个真因子之和,则称该数为完数,如6=1+2+3,所以6是完数。求[1,10000]之间的全部完数。

五、Fibonacci数列定义如下:

f1=1 f2=1 fnfn1fn2,(n2)

求Fibonacci数列的第20项。

六、设计一个猜数游戏。首先由计算机产生[1,100]之间的随机整数,然后由用户猜测所产生的随机数。根据用户猜测的情况给出不同提示,如猜测的数大于产生的数,则显示“High”,小于则显示“Low”,等于则显示“You won”,同时退出游戏。用户最多可以猜7次。实验结果:

一、一个三位整数各位数字的立方和等于该数本身则称该数为水仙花数。输出全部水仙花数。

程序如下: for m=100:999 m1=fix(m/100);%求m的百位数字 m2=rem(fix(m/10),10);%求m的十位数字 m3=rem(m,10);%求m的个位数字 if m==m1*m1*m1+m2*m2*m2+m3*m3*m3 disp(m)end end 153 370 371 407

二、从键盘输入若干个数,当输入0时结束输入,求这些数的平均值和它们之和。程序如下: sum=0;cnt=0;val=input('Enter a number(end in 0):');while(val~=0)sum=sum+val;cnt=cnt+1;val=input('Enter a number(end in 0):');end if(cnt > 0)sum mean=sum/cnt end Enter a number(end in 0):45 Enter a number(end in 0):65 Enter a number(end in 0):342 Enter a number(end in 0):45 Enter a number(end in 0):67 Enter a number(end in 0):12 Enter a number(end in 0):0 sum = 576

mean =

三、求[100,200]之间第一个能被21整除的整数。程序如下: for n=100:200 if rem(n,21)~=0 continue end break end n n = 105

四、若一个数等于它的各个真因子之和,则称该数为完数,如6=1+2+3,所以6是完数。求[1,500]之间的全部完数。for m=1:500 s=0;for k=1:m/2 if rem(m,k)==0 s=s+k;end end if m==s disp(m);end end 6 28 496

五、Fibonacci数列定义如下:

f1=1 f2=1 fnfn1fn2,(n2)

求Fibonacci数列的第20项。编写程序为: for i=3:20;

f(1)=1;

f(2)=1;

f(i)=f(i-1)+f(i-2);end >> f f =

Columns 1 through 7 83 5 4

Columns 8 through 14

144

233

377

Columns 15 through 20

610

987

1597

2584

4181

6765

六、设计一个猜数游戏。首先由计算机产生[1,100]之间的随机整数,然后由用户猜测所产生的随机数。根据用户猜测的情况给出不同提示,如猜测的数大于产生的数,则显示“High”,小于则显示“Low”,等于则显示“You won”,同时退出游戏。用户最多可以猜7次。

命令如下:

a=fix(rand(1)*100+1);k=1;for k=1:7 n=input('输入一个1-100的整数:n=');if n>a disp('High');elseif n

补充:

例3-1 分别建立命令文件和函数文件,将华氏温度f转换为摄氏温度c。程序1:首先建立命令文件并以文件名f2c.m存盘。M文件建立如下:

clear;%清除工作空间中的变量 f=input('Input Fahrenheit temperature:');c=5*(f-32)/9 然后在MATLAB的命令窗口中输入f2c,将会执行该命令文件,执行情况为: Input Fahrenheit temperature:73 c = 22.7778 程序2:

首先建立函数文件f2c.m。function c=f2c(f)c=5*(f-32)/9 然后在MATLAB的命令窗口调用该函数文件。>> clear;y=input('Input Fahrenheit temperature:');x=f2c(y)Input Fahrenheit temperature:70 c =

21.1111

x =

21.1111 例3-2 输入x,y的值,并将它们的值互换后输出。程序如下:

x=input('Input x please.');

y=input('Input y please.');z=x;x=y;y=z;disp(x);disp(y);Input x please.34 Input y please.54 54 34 例3-3 求一元二次方程ax2 +bx+c=0的根。程序如下: a=input('a=?');b=input('b=?');c=input('c=?');d=b*b-4*a*c;x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)];disp(['x1=',num2str(x(1)),',x2=',num2str(x(2))]);a=?1 b=?7 c=?9 x1=-1.6972,x2=-5.3028 例3-4 计算分段函数的值。

程序如下:

x=input('请输入x的值:');if x

end y 请输入x的值:5 y =

1.1562 例3-5 输入一个字符,若为大写字母,则输出其对应的小写字母;若为小写字母,则输出其对应的大写字母;若为数字字符则输出其对应的数值,若为其他字符则原样输出。

c=input('请输入一个字符','s');if c>='A' & c='a'& c='0'& c

price

输入所售商品的价格,求其实际销售价格建立m文件且以eg.m命名: price=input('请输入商品价格');switch fix(price/100)case {0,1} %价格小于200 rate=0;case {2,3,4} %价格大于等于200但小于500 rate=3/100;case num2cell(5:9)% rate=5/100;case num2cell(10:24)% rate=8/100;case num2cell(25:49)% rate=10/100;otherwise % rate=14/100;end price=price*(1-rate)% eg 请输入商品价格390 price =

378.3000 >> eg 请输入商品价格23090 price =

价格大于等于500但小于1000 价格大于等于1000但小于2500 价格大于等于2500但小于5000 价格大于等于5000 输出商品实际销售价格 9 1.9857e+004 例3-7 矩阵乘法运算要求两矩阵的维数相容,否则会出错。先求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘。程序如下:

A=[1,2,3;4,5,6];B=[7,8,9;10,11,12];try C=A*B;catch C=A.*B;end C lasterr %显示出错原因 C = 16 27 40 55 72

ans =

Error using ==> mtimes Inner matrix dimensions must agree.n已知 y12i1,当n=100时,求y的值。i1 程序如下: y=0;n=100;for i=1:n y=y+1/(2*i-1);10 end y y =

3.2843

例3-10 写出下列程序的执行结果。s=0;a=[12,13,14;15,16,17;18,19,20;21,22,23];for k=a s=s+k;end disp(s');39 48 57 66 例3-14 编写函数文件求半径为r的圆的面积和周长。

编写m文件并命名为fcircle.m如下: function [s,p]=fcircle(r)%FCIRCLE calculate the area and perimeter of a circle of radii r %r 圆半径 %s 圆面积 %p 圆周长 s=pi*r*r;p=2*pi*r;circle(2)ans =

12.5664 例3-15 利用函数文件,实现直角坐标(x,y)与极坐标(ρ,θ)之间的转换。

函数文件tran.m:

function [rho,theta]=tran(x,y)rho=sqrt(x*x+y*y);theta=atan(y/x);在命令窗体输入命令: x=input('Please input x=:');y=input('Please input y=:');[rho,the]=tran(x,y);rho the Please input x=:5 Please input y=:7 rho =

8.6023

the =

0.9505 例3-16 利用函数的递归调用,求n!。n!本身就是以递归的形式定义的:

显然,求n!需要求(n-1)!,这时可采用递归调用。递归调用函数文件factor.m如下:

function f=factor(n)if n

f=factor(n-1)*n;%递归调用求(n-1)!end 在命令窗体输入: factor(9)ans =

362880

>> factor(67)ans =

3.6471e+094

例3-17 nargin用法示例。

函数文件charray.m: function fout=charray(a,b,c)if nargin==1 fout=a;elseif nargin==2 fout=a+b;elseif nargin==3 fout=(a*b*c)/2;end 在命令窗体中输入: x=[1:3];>> y=[1;2;3];>> charray(x)ans = 2 3

>> charray(x,y')ans = 4 6

>> charray(x,y,3)ans = 21 例3-18 全局变量应用示例。

先建立函数文件wadd.m,该函数将输入的参数加权相加。function f=wadd(x,y)global ALPHA BETA f=ALPHA*x+BETA*y;在命令窗口中输入: global ALPHA BETA ALPHA=1;BETA=2;s=wadd(1,2)s = 5 14

下载上机习题3教案word格式文档
下载上机习题3教案.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

    热门文章
      整站推荐
        点击下载本文