第4章--MATLAB程序流程控制-习题答案.doc
精品文档,仅供学习与交流,如有侵权请联系网站删除第4章 MATLAB程序流程控制习题4一、选择题1下列关于脚本文件和函数文件的描述中不正确的是( )。 AA函数文件可以在命令行窗口直接运行B去掉函数文件第一行的定义行可转变成脚本文件C脚本文件可以调用函数文件D函数文件中的第一行必须以function开始2下列程序的输出结果是( )。Dy=10;if y=10 y=20;elseif y>0 y=30enddisp(y)A1 B30 C10 D203有以下语句:a=eye(5);for n=a(2:end,:)for循环的循环次数是( )。CA3 B4 C5 D104设有程序段k=10;while k k=k-1end则下面描述中正确的是( )。AAwhile循环执行10次 B循环是无限循环C循环体语句一次也不执行 D循环体语句执行一次5有以下程序段:x=reshape(1:12,3,4);m=0;n=0;for k=1:4 if x(:,k)<=6 m=m+1; else n=n+1; endend则m和n的值分别是( )。CA6 6 B2 1 C2 2 D1 26调用函数时,如果函数文件名与函数名不一致,则使用( )。AA函数文件名 B函数名C函数文件名或函数名均可 D函数名7如果有函数声明行为“function x,y,z=f1(a,b,c)”,则下述函数调用格式中错误的是( )。BAx=f1(a,b,c) Bx,y,z,w=f1(a,b,c)Cx,b,z=f1(a,y,c) Da,b=f1(x,y,z)8执行语句“fn=(x) 10*x;”,则 fn是( )。AA匿名函数 B函数句柄 C字符串 D普通函数9执行下列语句后,变量A的值是( )。D>> f=(x,y) log(exp(x+y);>> A=f(22,3);A22,3 B22 C3 D2510程序调试时用于设置断点的函数是( )。AAdbstop Bdbclear Cdbcont Ddbstack二、填空题1将有关MATLAB命令编成程序存储在一个扩展名为.m的文件中,该文件称为 。M文件2有语句“for k=12;34”引导的循环结构,其循环体执行的次数为 。13MATLAB中用于控制不确定重复次数的循环语句为 ,若在循环执行过程中需要终止该循环时采用的语句为 。whileend,break4函数文件由 语句引导。在函数定义时,函数的输入输出参数称为 参数,简称 。在调用函数时,输入输出参数称为 参数,简称 。function,形式,形参,实际,实参5在MATLAB中,函数文件中的变量是 变量。定义 变量是函数间传递信息的一种手段,可以用 命令定义。局部,全局,global6应用程序的错误有两类,一类是 错误,另一类是运行时的错误,即 错误。MATLAB程序调试方法有两种,一是利用 进行程序调试,二是利用 进行程序调试。语法,逻辑,调试函数,调试工具三、应用题1写出下列程序的输出结果。s=0;a=12,13,14;15,16,17;18,19,20;21,22,23;for k=a for j=1:4 if rem(k(j),2)=0 s=s+k(j); end endends2分别用if语句和switch语句实现以下计算,其中a、b、c的值从键盘输入。if语句:a=input('a=');b=input('b=');c=input('c=');x=input('x=');if 0.5<=x&x<1.5y=a*x2+b*x+c;elseif 1.5<=x&x<3.5y=a*(sin(b)c+x;elseif 3.5<=x&x<5.5y=log(abs(b+c/x);endyswitch语句:a=input('a=');b=input('b=');c=input('c=');x=input('x=');switch fix(x*10)case num2cell(5:14)y=a*x2+b*x+c;case num2cell(15:34)y=a*(sin(b)c+x;case num2cell(35:54)y=log(abs(b+c/x);otherwisedisp('nsrdxcw')endy3产生20个两位随机整数,输出其中小于平均值的偶数。x=fix(10+rand(20)*89);a=sum(x)/20;for i=1:20if x(i)<aif rem(x(i),2)=0disp(x(i)endendend4输入20个数,求其中最大数和最小数。要求分别用循环结构和调用MATLAB的max函数、min函数来实现。循环结构:for a=1:20A(a)=input('请输入20个数:');endAmi=A(1);ma=A(1);for i=1:20if mi>A(i)mi=A(i);endif ma<A(i)ma=A(i);endenddisp(ma)disp(mi)max、min函数:for a=1:20A(a)=input('请输入20个数:');endAmi=min(A),ma=max(A)5已知 s=1+2+22+23+263分别用循环结构和调用MATLAB的sum函数求s的值。循环结构:s=0;for x=0:63s=2x+s;enddisp(s)sum函数:i=0:63;f=2.i;sum(f)6当n分别取100、1000、10000时,求下列各式的值:(1) (2) (3) (4) 要求分别用循环结构和向量运算(使用sum或prod函数)来实现。(1):循环结构:n=input('请输入n的值:');s=0;for a=1:ns=s+(-1)(a+1)/a;ends向量运算:n=input('请输入n的值:');a=1:n;f=(-1).(a+1)./a;s=sum(f)(2):循环结构:n=input('请输入n的值:');s=0;for a=1:n;s=s+(-1)(a+1)/(2*a-1);ends向量运算:n=input('请输入n的值:');a=1:n;f=(-1).(a+1)./(2*a-1);s=sum(f)(3):循环结构:n=input('请输入n的值:');s=0;for a=1:ns=s+(1/4)a;ends向量运算:n=input('请输入n的值:');a=1:n;f=(1/4).a;s=sum(f)(4):循环结构:n=input('请输入n的值:');s=1;for a=1:nf=(2*a)2/(2*a-1)*(2*a+1);s=s*f;ends向量运算:n=input('请输入n的值:');a=1:n;f=(2*a).2./(2*a-1).*(2*a+1);s=prod(f)7编写一个函数文件,求小于任意自然数n的斐波那契(Fibnacci)数列各项。斐波那契数列定义如下:function f=Fibnacci(n)for i=1:nif i=1f=1;elseif i=2f=1;elsef=Fibnacci(i-1)+Fibnacci(i-2);endendn=input('n=');f=Fibnacci(n)8编写一个函数文件,用于求两个矩阵的乘积和点乘,然后在脚本文件中调用该函数。function C,D=CJ(A,B)C=A*B;D=A.*B;A=1 2 3;4 5 6;7 8 9;B=1 1 1;1 1 1;1 1 1;C,D=CJ(A,B)9先用函数的递归调用定义一个函数文件求,然后调用该函数文件求。function f=xt4_10(m,n)if n<1 f=0;else f=nm+xt4_10(m,n-1);endxt4_10(1,100)+xt4_10(2,50)+xt4_10(-1,10)10写出下列程序的输出结果。脚本文件exe.m:global x x=1:2:5;y=2:2:6; sub(y); x y 函数文件sub.m:function fun=sub(z) global xz=3*x; x=x+z;【精品文档】第 7 页