资源描述
7
第4章 MATLAB程序流程控制
习题4
一、选择题
1.下列关于脚本文件和函数文件的描述中不正确的是( )。 A
A.函数文件可以在命令行窗口直接运行
B.去掉函数文件第一行的定义行可转变成脚本文件
C.脚本文件可以调用函数文件
D.函数文件中的第一行必须以function开始
2.下列程序的输出结果是( )。D
y=10;
if y==10
y=20;
elseif y>0
y=30
end
disp(y)
A.1 B.30 C.10 D.20
3.有以下语句:
a=eye(5);
for n=a(2:end,:)
for循环的循环次数是( )。C
A.3 B.4 C.5 D.10
4.设有程序段
k=10;
while k
k=k-1
end
则下面描述中正确的是( )。A
A.while循环执行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;
end
end
则m和n的值分别是( )。C
A.6 6 B.2 1 C.2 2 D.1 2
6.调用函数时,如果函数文件名与函数名不一致,则使用( )。A
A.函数文件名 B.函数名
C.函数文件名或函数名均可 D.@函数名
7.如果有函数声明行为“function [x,y,z]=f1(a,b,c)”,则下述函数调用格式中错误的是( )。B
A.x=f1(a,b,c) B.[x,y,z,w]=f1(a,b,c)
C.[x,b,z]=f1(a,y,c) D.[a,b]=f1(x,y,z)
8.执行语句“fn=@(x) 10*x;”,则 fn是( )。A
A.匿名函数 B.函数句柄 C.字符串 D.普通函数
9.执行下列语句后,变量A的值是( )。D
>> f=@(x,y) log(exp(x+y));
>> A=f(22,3);
A.22,3 B.22 C.3 D.25
10.程序调试时用于设置断点的函数是( )。A
A.dbstop B.dbclear C.dbcont D.dbstack
二、填空题
1.将有关MATLAB命令编成程序存储在一个扩展名为.m的文件中,该文件称为 。M文件
2.有语句“for k=[12;34]”引导的循环结构,其循环体执行的次数为 。1
3.MATLAB中用于控制不确定重复次数的循环语句为 ,若在循环执行过程中需要终止该循环时采用的语句为 。while…end,break
4.函数文件由 语句引导。在函数定义时,函数的输入输出参数称为 参数,简称 。在调用函数时,输入输出参数称为 参数,简称 。
function,形式,形参,实际,实参
5.在MATLAB中,函数文件中的变量是 变量。定义 变量是函数间传递信息的一种手段,可以用 命令定义。局部,全局,global
6.应用程序的错误有两类,一类是 错误,另一类是运行时的错误,即 错误。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
end
end
s
2.分别用if语句和switch语句实现以下计算,其中a、b、c的值从键盘输入。
if语句:
a=input('a=');
b=input('b=');
c=input('c=');
x=input('x=');
if 0.5<=x&x<1.5
y=a*x^2+b*x+c;
elseif 1.5<=x&x<3.5
y=a*(sin(b))^c+x;
elseif 3.5<=x&x<5.5
y=log(abs(b+c/x));
end
y
switch语句:
a=input('a=');
b=input('b=');
c=input('c=');
x=input('x=');
switch fix(x*10)
case num2cell(5:14)
y=a*x^2+b*x+c;
case num2cell(15:34)
y=a*(sin(b))^c+x;
case num2cell(35:54)
y=log(abs(b+c/x));
otherwise
disp('nsrdxcw')
end
y
3.产生20个两位随机整数,输出其中小于平均值的偶数。
x=fix(10+rand(20)*89);
a=sum(x)/20;
for i=1:20
if x(i)<a
if rem(x(i),2)==0
disp(x(i))
end
end
end
4.输入20个数,求其中最大数和最小数。要求分别用循环结构和调用MATLAB的max函数、min函数来实现。
循环结构:
for a=1:20
A(a)=input('请输入20个数:');
end
A
mi=A(1);ma=A(1);
for i=1:20
if mi>A(i)
mi=A(i);
end
if ma<A(i)
ma=A(i);
end
end
disp(ma)
disp(mi)
max、min函数:
for a=1:20
A(a)=input('请输入20个数:');
end
A
mi=min(A),ma=max(A)
5.已知
s=1+2+22+23+…+263
分别用循环结构和调用MATLAB的sum函数求s的值。
循环结构:
s=0;
for x=0:63
s=2^x+s;
end
disp(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:n
s=s+(-1)^(a+1)/a;
end
s
向量运算:
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);
end
s
向量运算:
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:n
s=s+(1/4)^a;
end
s
向量运算:
n=input('请输入n的值:');
a=1:n;
f=(1/4).^a;
s=sum(f)
(4):
循环结构:
n=input('请输入n的值:');
s=1;
for a=1:n
f=(2*a)^2/((2*a-1)*(2*a+1));
s=s*f;
end
s
向量运算:
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:n
if i==1
f=1;
elseif i==2
f=1;
else
f=Fibnacci(i-1)+Fibnacci(i-2);
end
end
n=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=n^m+xt4_10(m,n-1);
end
xt4_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 x
z=3*x;
x=x+z;
7
展开阅读全文