《2.實驗二 MATLAB程序設計 答案》由會員分享,可在線閱讀,更多相關《2.實驗二 MATLAB程序設計 答案(5頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、實驗二 MATLAB程序設計
1. 隨機產(chǎn)生0~100之間的20個數(shù),求其中最大數(shù)和最小數(shù)。要求:
方法1:采用循環(huán)結(jié)構實現(xiàn)
方法2:調(diào)用MATLAB的max函數(shù)、min函數(shù)來實現(xiàn)。
解:方法一:用循環(huán)結(jié)構
A=randint(1,20,[0,100])
for m=1:19
for n=m+1:20
if A(m)>A(n)
A(m)=A(m)+A(n);
A(n)=A(m)-A(n);
A(m)=A(m)-A(n);
end
end
end
2、disp(['max=',num2str(A(20))])
disp(['min=',num2str(A(1))])
方法二:用max、min函數(shù)
A=randint(1,20,[0,100])
a=max(A);
b=min(A);
disp(['max=',num2str(a)])
disp(['min=',num2str(b)])
2. 從屏幕輸入兩個正整數(shù),求它們的最小公倍數(shù)。
解:法一:
x=input('x=');
y=input('y=');
m=max(x,y);
n=min(x,y);
for k=m:m:x*y
if rem
3、(k,n)==0
disp(['最小公倍數(shù)是',num2str(k)]);
break
end
end
法二:直接調(diào)用函數(shù)
x=input('x=');
y=input('y=');
k=lcm(x,y);
disp(['最小公倍數(shù)是',num2str(k)]);
3. 編寫轉(zhuǎn)換成績等級的函數(shù)文件“cj”,考試成績在[80,100]分數(shù)段的顯示優(yōu)秀,在[70,80)分數(shù)段的顯示良好,[60,70)分數(shù)段的顯示及格,[0,60)分數(shù)段的顯示不及格,要求在命令行輸入“cj(X)”后,顯示相應的成績等級。
解:function
4、result=cj(x)
n=fix(x/10);
switch n
case {8,9,10}
disp('優(yōu)秀');
case 7
disp('良好');
case 6
disp('及格');
otherwise
5、 disp('不及格');
end
4. 生成一個10*10矩陣,矩陣元素為[0,100]的隨機整數(shù),求其中的最大和最小元素。
解:方法一:
A=randint(10,10,[0,100])
M1=max(A);
M2=min(A);
M11=max(M1);
M22=min(M2);
disp(['最大元素是',num2str(M11)])
disp(['最小元素是',num2str(M22)])
方法二:
A=randint(10,10,[0,100])
M1=max(A(:));
M2=min(A(:));
disp(
6、['最大元素是',num2str(M1)])
disp(['最小元素是',num2str(M2)])
5. 一球從100米高度自由落下,每次落地后反跳回原高度的一半,再落下,求它在第10次落地時,共經(jīng)過多少米?第10次反彈多高?
解:
x=100;
for m=1:9
a=100/2^m;
x=x+2*a;
end
disp(['第10次落地時共經(jīng)過',num2str(x),'米'])
disp(['第10次落地后反彈',num2str(100/2^10),'米'])
6. 找出1-10000范圍內(nèi)的完數(shù)。所謂完數(shù)即該數(shù)等于其真因數(shù)的和 如
7、:28=1+2+4+7+14
解:方法一:
clear;clc
k=0;
for m=1:10000
s=0;
for n=1:m/2
if rem(m,n)==0
s=s+n;
end
end
if s==m
k=k+1;
a(k)=m;
end
end
disp(['10000以內(nèi)的完數(shù)有:',num2str(a)])
方法二:巧用“find”函數(shù)
clear;clc
for m=1:10000
s=0;
for n=1:m/
8、2
if rem(m,n)==0
s=s+n;
end
end
if s==m
a(m)=m;
end
end
find(a>0);
disp(['10000以內(nèi)的完數(shù)有:',num2str(ans)])
7. 求【500,600】之間能被13整除的整數(shù)個數(shù),以及第一個和最后一個這樣的數(shù)。
解:
n=0;
for k=500:600
if rem(k,13)==0
n=n+1;
a(n)=k;
end
end
disp(['【500,600】之間能被13整除的整數(shù)有',num2str(n),'個'])
disp(['【500,600】之間能被13整除的第一個整數(shù)是',num2str(a(1))])
disp(['【500,600】之間能被13整除的最后一個整數(shù)是',num2str(a(n))])