第五章作业
1.选择题
(1)if结构的开始是“if”命令,结束是C命令。 A. End if B. end C. End D. else (2)下面的switch结构,正确的是C。 A. >>switch a B. >>switch a C. >>switch a D. >>switch a case a>1 case a=1 case 1 case =1 (3)运行以下命令: >>a=eye(5);
>>for n=a(2:end,:)
则for循环的循环次数是B。 A. 5 B. 4 C. 3 D. 1 (4)运行以下命令,则for循环的循环次数是C。 >>x=0:10; >>for n=x if n==5
continue end end A. 10 B. 5 C. 11 D. 10 (5)运行以下命令则B。 >>a=[1 2 3] >>keyboard K>>a=[1 2 4]; K>>return A. a=[1 2 3] B. a=[1 2 4] C. 命令窗口的提示符为“K>>” D. 出错 (6)关于主函数,以下说法正确的是D。 A. 主函数名必须与文件名相同
B. 主函数的工作空间与子函数的工作空间是嵌套的 C. 主函数中不能定义其他函数
D. 每个函数文件中都必须有主函数
(7)当在命令窗口中输入“sin(a)”时,则对“a”的搜索顺序是D。 A. 是否内部函数→是否变量→是否私有函数
B. 是否内部函数→是否搜索路径中函数→是否私有函数
C. 是否内部函数→是否搜索路径中函数→是否当前路径中函数 D. 是否变量→是否私有函数→是否当前路径中函数
?x2?x?6,x?0且x??3?22.求分段函数y??x?5x?6,0≤x<5且x?2及x?3的值。用if语句实现,分别输出x
?x2?x?1,其他?=-5.0,-3.0,1.0,2.0,2.5,3.0,5.0时的y值。
解:首先编写分段函数的函数m文件: function y=myfun(x)
if x==2||abs(x)==3||x>=5 y=x^2-x-1; elseif x<0 y=x^2+x-6;
else
y=x^2-5*x+6; end
然后计算分段函数的值:
x=[-5.0,-3.0,1.0,2.0,2.5,3.0,5.0]; l=length(x); y=zeros(1,l); for k=1:l
y(k)=myfun(x(k)); end
[x;y]
plot(x,y)
ans =
-5.0000 -3.0000 1.0000 2.0000 2.5000 3.0000 5.0000
14.0000 11.0000 2.0000 1.0000 -0.2500 5.0000 19.0000 20151050-5-5-4-3-2-1012345
此题也可以采用逻辑表达式定义分段函数,做法更简单。编程如下:x=[-5.0,-3.0,1.0,2.0,2.5,3.0,5.0]; y1=(x==2|abs(x)==3|x>=5).*(x.^2-x-1) y2=(x<0&x~=-3).*(x.^2+x-6);
y3=(x>=0&x<5&x~=2&x~=3).*(x.^2-5*x+6); y=y1+y2+y3; [x;y]
y1 =
0 11 0 1 0 5 19 ans =
-5.0000 -3.0000 1.0000 2.0000 2.5000 3.0000 5.0000
14.0000 11.0000 2.0000 1.0000 -0.2500 5.0000 19.0000
当然,本题主要是考查if结构的应用。
3.输入一个百分制成绩,要求输出成绩等级A、B、C、D、E。其中90分~100分为A,80分~89分为B,70分~79分为C,60分~69分为D,60分以下为E。要求:
(1)分别用if语句和switch语句实现。
(2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。 解:第一种方法:用if结构实现。编程如下:
x=input('输入一个百分制成绩(0~100):'); if x<0||x>100
error('成绩输入错误!'); elseif x<60
disp('你的成绩为E'); elseif x<70
disp('你的成绩为D'); elseif x<80
disp('你的成绩为C'); elseif x<90
disp('你的成绩为B'); else
disp('你的成绩为A'); end
第二种方法:用switch结构实现。编程如下:
x=input('输入一个百分制成绩(0~100):'); xd=fix(x/10); switch xd
case {0,1,2,3,4,5} disp('你的成绩为E'); case 6
disp('你的成绩为D');
case 7
disp('你的成绩为C'); case 8
disp('你的成绩为B'); case {9,10}
disp('你的成绩为A'); otherwise
error('成绩输入错误!'); end
注:此题建议编写两个M脚本文件,然后在MATLAB命令窗口运行。如果在Notebook中直接运行input指令会产生错误。
6123n果是多少?要求:分别用循环结构和向量运算(使用sum函数)来实现。
解:第一种方法:使用循环结构。编程如下: s=0;
for n=1:100 s=s+1/n^2; end
pai=sqrt(6*s)
pai =
3.1321
4.根据
?2?12?12?12???12,求π的近似值。当n分别取100、1000、10000时,结
s=0;
for n=1:1000 s=s+1/n^2; end
pai=sqrt(6*s)
pai =
3.1406 s=0;
for n=1:10000 s=s+1/n^2; end
pai=sqrt(6*s)
pai =
3.1415
第二种方法:使用向量运算。编程如下: n=1:100;
s=sum(1./n.^2); pai=sqrt(6*s)
pai =
3.1321 n=1:1000;
s=sum(1./n.^2); pai=sqrt(6*s)
pai =
3.1406 n=1:10000;
s=sum(1./n.^2); pai=sqrt(6*s)
pai =
3.1415
5.若两个连续自然数的乘积减1是素数,则称这两个连续自然数是亲密数对。该素数是亲密素数。例如2×3-1=5,由于5是素数,所以2和3是亲密数对,5是亲密素数。求[2,50]区间内: (1)亲密数对的对数。
(2)与上述亲密数对对应的所有亲密素数之和。
提示:在MATLAB中,判断一个正整数是否为素数的函数为isprime(n)。 解:首先编写判断亲密数的函数: function [flag,k]=qms(n) k1=n*(n+1)-1; if isprime(k1) flag=1;
k=[n,n+1,k1]; else
flag=0; k=[];
end
然后计算亲密数对的对数和所有亲密素数的和: clear clc k=[];
相关推荐: