《MATLAB基礎(chǔ)及應(yīng)用》課件 第3章 流程控制語句_第1頁
《MATLAB基礎(chǔ)及應(yīng)用》課件 第3章 流程控制語句_第2頁
《MATLAB基礎(chǔ)及應(yīng)用》課件 第3章 流程控制語句_第3頁
《MATLAB基礎(chǔ)及應(yīng)用》課件 第3章 流程控制語句_第4頁
《MATLAB基礎(chǔ)及應(yīng)用》課件 第3章 流程控制語句_第5頁
已閱讀5頁,還剩55頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

MATLAB基礎(chǔ)及應(yīng)用曹敦虔編著第3章流程控制語句本章學(xué)習(xí)重點掌握內(nèi)容:MATLAB分支語句MATLAB循環(huán)語句MATLAB函數(shù)MATLAB程序運行計時與優(yōu)化第3章流程控制語句3.1if語句3.2switch語句3.3while語句3.4for語句3.5函數(shù)3.6程序運行計時3.7養(yǎng)成良好的編程習(xí)慣3.1if語句分支結(jié)構(gòu)也稱選擇結(jié)構(gòu).有時程序需要根據(jù)一定的條件來決定執(zhí)行哪些指令,這就需要用到分支結(jié)構(gòu).MATLAB有兩個分支語句:if語句和switch語句.if語句功能全面,不管是簡單的還是復(fù)雜的分支流程,if語句都能實現(xiàn),所以應(yīng)用最為廣泛.3.1if語句if語句的語法格式1:if

(條件表達(dá)式)

語句組end此格式用于實現(xiàn)單分支語句.如果條件表達(dá)式為true,則執(zhí)行語句組;否則不執(zhí)行.false條件表達(dá)式語句組true單分支語句流程圖3.1if語句例3.1輸入一個日期,求該日期是當(dāng)年的第幾天.基本思路:假設(shè)年、月、日分別為y、m、d,首先計算該日期的前幾個月的總天數(shù),即1月,2月,?,m?1月的天數(shù)之和,再加上d即可.2月的天數(shù)與當(dāng)年是否是閏年有關(guān),若是閏年則為29天,若不是閏年則為28天.3.1if語句monthdays=[312831303130313130313031];date=input('請輸入日期(格式[年月日]):');if(mod(date(1),4)==0&&mod(date(1),100)~=0||mod(date(1),400)==0)monthdays(2)=29;%閏年2月份天數(shù)為29enddays=sum(monthdays(1:date(2)-1))+date(3);disp(['是當(dāng)年第',num2str(days),'天']);3.1if語句if語句的語法格式2:if

(條件表達(dá)式)

語句組1else

語句組2end格式2用于實現(xiàn)二分支語句.如果條件表達(dá)式為true,則執(zhí)行語句組1;否則執(zhí)行語句組2.truefalse語句組2語句組1條件表達(dá)式二分支語句流程圖3.1if語句例3.2輸入一個數(shù),如果該數(shù)大于等于0,則輸出1,否則輸出?1.x=input('請輸入一個數(shù):');if(x>=0)y=1;elsey=-1;endy3.1if語句if語句的語法格式3:if

(條件表達(dá)式1)

語句組1elseif(條件表達(dá)式2)

語句組2?else

語句組end格式3用于實現(xiàn)多分支語句.如果條件表達(dá)式1為true,則執(zhí)行語句組1;否則判斷條件表達(dá)式2,如果為true,則執(zhí)行語句組2;依次判斷各個elseif后面的條件表達(dá)式,如果為true,則執(zhí)行對應(yīng)的語句組;如果所有的條件表達(dá)式都為false,則執(zhí)行else后面的語句組.3.1if語句條件表達(dá)式1truefalse語句組2語句組1條件表達(dá)式2語句組n條件表達(dá)式n其他語句組?truetruefalsefalse多分支語句流程圖3.1if語句例3.3使用if語句實現(xiàn)輸入一個分?jǐn)?shù),按分?jǐn)?shù)輸出其等級.x=input('請輸入一個分?jǐn)?shù):');if(x>=90)y='優(yōu)';elseif(x>=80)y='良';elseif(x>=70)

y='中';elseif(x>=60)y='及格';elsey='不及格';enddisp(y);3.1if語句在if語句中,如果條件表達(dá)式的值是一個數(shù)組,則只有當(dāng)數(shù)組的所有元素的值都為true時,該條件才算為true,否則只要有其中一個元素為false,則該條件為false.x=[1,5,8];if(x>=5)%x>=5的結(jié)果是[0,1,1]y=1;elsey=0;endyy=03.2switch語句switch語句適合應(yīng)用于等待判斷的變量只取少數(shù)可能的值的情況,不同的取值執(zhí)行不同的流程.3.2switch語句switch語句的語法格式:switch(表達(dá)式)

case

常量1

語句組1

case

常量2

語句組2...

otherwise

其它語句組end執(zhí)行過程:計算表達(dá)式的值,按順序依次判斷表達(dá)式的值與case后面的常量是否相等,如果相等,則執(zhí)行相應(yīng)的語句組.如果都不相等,則執(zhí)行otherwise后面的語句,其執(zhí)行過程與多分支的if語句類似.一般來說,由于要判斷表達(dá)式是否與某個常量相等,所以switch只適合用在表達(dá)式的值為整數(shù)、字符等離散值的情況.3.2switch語句例3.4使用switch語句實現(xiàn)輸入一個分?jǐn)?shù),按分?jǐn)?shù)輸出其等級.基本思路:由于switch語句只能判斷有限種情形,所以不能直接使用原始分?jǐn)?shù)來判斷,這里先將百分制分?jǐn)?shù)變成十分制,分值為0,1,?,10共11種情形,然后再進(jìn)行判斷.3.2switch語句x=input('請輸入一個分?jǐn)?shù)(百分制):');switch(floor(x/10))%將百分制轉(zhuǎn)換成十分制

case10y='優(yōu)';

case9y='優(yōu)';

case8y='良';

case7y='中';

case6y='及格';

otherwisey='不及格';enddisp(y);3.3while語句當(dāng)某些運算需要重復(fù)多次執(zhí)行時,可以使用循環(huán)結(jié)構(gòu)來實現(xiàn).使用循環(huán)可以簡化程序,提高效率.MATLAB的循環(huán)語句有兩個,while語句和for語句.while語句適合用在循環(huán)次數(shù)事先無法確定,需要根據(jù)某個條件是否成立來決定還要不要繼續(xù)執(zhí)行循環(huán)體的情形.while循環(huán)也稱為當(dāng)型循環(huán).3.3while語句while語句的語法格式:while(條件表達(dá)式)

語句組end執(zhí)行過程:當(dāng)條件表達(dá)式為true時,執(zhí)行語句組,結(jié)束后又判斷條件表達(dá)式是否為true,如果為true,則執(zhí)行語句組.重復(fù)這個過程,直到條件表達(dá)式為false時結(jié)束條件表達(dá)式語句組falsetrue3.3while語句例3.5輸入兩個正整數(shù),求其最大公約數(shù).基本思路:求兩個數(shù)m和n的最大公約數(shù)可以用“輾轉(zhuǎn)相除法”,方法如下:(1)如下m<n,則交換m和n的值;(2)計算m除以n的余數(shù),記為r;(3)令m=n,n=r;(4)如果r=0,則m為最大公約數(shù),結(jié)束.否則轉(zhuǎn)到(2).3.3while語句x=input('請輸入兩個正整數(shù)(格式[x,y]):');if(x(1)<x(2))%如果x(1)<x(2)則交換x(1)和x(2)x([12])=x([21]);end%使用輾轉(zhuǎn)相除法計算最大公約數(shù)r=1;while(r~=0)r=mod(x(1),x(2));x(1)=x(2);x(2)=r;enddisp(['最大公約數(shù)是',num2str(x(1))]);3.4for語句for語句是遍歷型循環(huán),類似于C#中的foreach語句.語法格式:for

循環(huán)變量

=數(shù)組

語句組end執(zhí)行過程:如果數(shù)組是一個一維數(shù)組,則循環(huán)變量依次取數(shù)組中的每一個元素,每取一個就執(zhí)行一次語句組.總執(zhí)行次數(shù)就是數(shù)組元素個數(shù).如果數(shù)組是一個二維數(shù)組,則循環(huán)變量依次取數(shù)組中的每一列,每取一列就執(zhí)行一次語句組.總執(zhí)行次數(shù)就是數(shù)組的列數(shù).3.4for語句例3.6輸入一個正整數(shù)n,輸出其所有因子.基本思路:依次判斷1,2,?,n,如果是n的因子,則輸出.n=input('請輸入一個正整數(shù):');f=[];fori=1:n

if(mod(n,i)==0)f=[fi];

endenddisp([num2str(n),'的因子為',num2str(f)]);3.4for語句

3.4for語句x=input('請輸入一個正整數(shù):');f=true;if(x<=1||x~=2&&mod(x,2)==0)%1、2以及2的倍數(shù)單獨處理

f=false;endfori=3:2:floor(sqrt(x))

if(mod(x,i)==0)f=false;

endendif(f)disp([num2str(x),'是素數(shù)']);elsedisp([num2str(x),'不是素數(shù)']);end3.4for語句例3.8求2~n之間的所有素數(shù).方法一,對2~n之間的每一個整數(shù)依次使用上面的方法進(jìn)行判斷,如果是素數(shù),則輸出.3.4for語句n=input('請輸入一個正整數(shù):');y=[];forx=1:nf=true;

if(x<=1||x~=2&&mod(x,2)==0)f=false;

end

fori=3:2:floor(sqrt(x))

if(mod(x,i)==0)f=false;

end

end

if(f)y=[y,x];

endendy

綜合應(yīng)用實例綜合應(yīng)用實例n=input('請輸入一個正整數(shù):');y=2:n;

%y是待判斷的整數(shù)i=1;N=floor(sqrt(n));while(y(i)<=N)b=false(size(y));%生成一個與y同維的全false數(shù)組

%使用y(i)來篩除所有y(i)的倍數(shù)

forj=i+1:length(y)

if(mod(y(j),y(i))==0)b(j)=true;%如果y(j)是y(i)的倍數(shù),則設(shè)置b(j)=1

end

endy(b)=[];%將不是素數(shù)的整數(shù)從y中刪除

i=i+1;endy綜合應(yīng)用實例值得一提的是,MATLAB有很多本身具有“循環(huán)”功能的運算符和函數(shù),很多循環(huán)語句可以使用這些運算符和函數(shù)來代替,代碼非常簡潔,并且運算速度更快.例如:計算1+2+3+?+100,如果使用循環(huán)語句來實現(xiàn),程序如下:s=0;fori=1:100s=s+i;end下面的代碼也可以實現(xiàn)同樣的功能:s=sum(1:100);綜合應(yīng)用實例

t=linspace(0,2*pi);plot(cos(t),sin(t));%畫圓axis([-11-11]);%設(shè)置顯示范圍axisequal

%設(shè)置坐標(biāo)比例為等比例holdonn=200;%總投點數(shù)m=0;fori=1:nx=2*rand(1)-1;%隨機(jī)點x坐標(biāo)

y=2*rand(1)-1;%隨機(jī)點y坐標(biāo)

if(x*x+y*y<1)%如果隨機(jī)點在圓內(nèi)

m=m+1;%計數(shù)器增1plot(x,y,'b.');

elseplot(x,y,'r.');

endendholdoffS=4*m/n%計算面積程序一:t=linspace(0,2*pi);plot(cos(t),sin(t));axis([-11-11]);axisequal;holdon;n=200;x=2*rand(n,1)-1;%生成n個隨機(jī)x坐標(biāo)y=2*rand(n,1)-1;%生成n個隨機(jī)y坐標(biāo)c=x.*x+y.*y<1;%根據(jù)坐標(biāo)生成0-1數(shù)組,在圓內(nèi)的點對應(yīng)1,圓外的點對應(yīng)0m=sum(c);%統(tǒng)計1的個數(shù),即落在圓內(nèi)的點數(shù)plot(x(c),y(c),'b.',x(~c),y(~c),'r.');holdoffS=4*m/n程序二:綜合應(yīng)用實例例3.10如圖所示,多圓體是由多個圓組成的一個復(fù)合體,多個圓可能重疊,其周長是各圓露在外面部分的弧長之和.假設(shè)已知多圓體中各圓的中心坐標(biāo)和半徑,求該多圓體的周長.

x=[1231.52.4];%圓心x坐標(biāo)y=[011.232.5];%圓心y坐標(biāo)r=[24351];%圓的半徑%畫圓t=0:0.1:2*pi;fori=1:length(x)u=x(i)+r(i)*cos(t);v=y(i)+r(i)*sin(t);

%圓周上的點plot(u,v);holdonenda=cumsum(r);%對圓的半徑進(jìn)行累加a=a/a(end);

%歸一化,構(gòu)造輪盤賭選擇的刻度m=0;%初始化計算器n=1000;%總投點數(shù)fori=1:nq=find(rand(1)<a,1);%隨機(jī)選擇一個圓

theta=2*pi*rand(1);%產(chǎn)生一隨機(jī)數(shù)

u=x(q)+r(q)*cos(theta);v=y(q)+r(q)*sin(theta);

b=(u-x).^2+(v-y).^2<r.^2;b(q)=false;

if(any(b))%判斷隨機(jī)點是否在某個圓內(nèi)

plot(u,v,'go');

elsem=m+1;plot(u,v,'ro');

endendm*sum(2*pi*r)/naxisequal;holdoff;3.5函數(shù)函數(shù)是一段相對封閉獨立的程序段,用于完成一個特定的功能.函數(shù)有輸入(函數(shù)參數(shù))和輸出(返回值),在調(diào)用函數(shù)時,只需要知道函數(shù)名(或函數(shù)句柄)、函數(shù)參數(shù)以及返回值即可,不需要知道其內(nèi)部結(jié)構(gòu).使用函數(shù)可以大大提高代碼的可重用性,只需要定義一次,就可以多次調(diào)用.MATALB的大部分內(nèi)置功能和工具箱都是以函數(shù)的形式存在的.MATLAB有兩種函數(shù)定義方式:匿名函數(shù)和M函數(shù).匿名函數(shù)是一種臨時函數(shù),一般在其定義的后面進(jìn)行調(diào)用;M函數(shù)是以文件的形式存儲在磁盤文件中,只要存放在搜索路徑下或當(dāng)前文件夾下,所有程序都可調(diào)用.3.5函數(shù)1.匿名函數(shù)語法格式:函數(shù)句柄

=@(參數(shù)表)函數(shù)表達(dá)式匿名函數(shù)是一種輕量級的函數(shù),方便快捷,適合用于函數(shù)體簡單,能夠用一個表達(dá)式表示的函數(shù).一般是在需要使用它的時候定義,也只在該程序內(nèi)使用,不在多個程序之間共享.由于匿名函數(shù)沒有函數(shù)名,所以只能使用函數(shù)句柄來調(diào)用.3.5函數(shù)例3.11繪制函數(shù)y=xsin(x),x∈[?10,10]的圖形.f=@(x)x.*sin(x);%定義匿名函數(shù)x=linspace(-10,10);%對區(qū)間進(jìn)行均勻剖分y=f(x);%對每一個分點,計算函數(shù)值plot(x,y);%根據(jù)數(shù)據(jù)點(x,y)畫圖y=xsin(x)的圖形3.5函數(shù)2.M函數(shù)M函數(shù)是定義在獨立M文件中的函數(shù),與一般的M程序文件不同的是,M函數(shù)以關(guān)鍵字function開始,有輸入?yún)?shù)和函數(shù)值(返回值).M函數(shù)的函數(shù)名必需與文件名相同,并符合變量名命名規(guī)則.語法格式:function[函數(shù)值列表]=函數(shù)名(形式參數(shù)列表)函數(shù)體end3.5函數(shù)例3.12使用M函數(shù)定義f(x)=xsin(x).在編輯器中輸入下面程序,并保存為f.m.定義好f(x)后就可以在命令行或其它程序使用該函數(shù)了.functiony=f(x)y=x.*sin(x);end3.5函數(shù)說明:M函數(shù)通常用于實現(xiàn)一個相對完整的功能.當(dāng)遇到return語句或最后一條語句時,M函數(shù)的執(zhí)行過程結(jié)束,此時函數(shù)值列表中的變量取值就是函數(shù)值(返回值).值得注意的是,MATLAB允許有多個函數(shù)值.M函數(shù)屬于共享函數(shù),一旦定義好了,所有程序都可以調(diào)用.但要求M函數(shù)文件存放在MATLAB的工作目錄下,或者在MATLAB搜索路徑下.M函數(shù)具有獨立的內(nèi)部工作空間,函數(shù)外部的程序代碼是無法訪問函數(shù)內(nèi)部的變量的,M函數(shù)與外部交換數(shù)據(jù)一般是通過函數(shù)參數(shù)(輸入)和函數(shù)值(輸出)來進(jìn)行.也可以使用全局變量在M函數(shù)和外部代碼之間共享數(shù)據(jù).相比M程序文件,使用M函數(shù)可以在一定程度上提高程序的運行效率.MATLAB在執(zhí)行一般的M程序文件時,每次執(zhí)行都會重新加載到內(nèi)存,這部分的開銷比較大.而如果是M函數(shù),多次調(diào)用時只需要加載一次即可.3.5函數(shù)

functiony=myPiecewise1(x)%分段函數(shù)%x標(biāo)量,自變量%y標(biāo)量,與x對應(yīng)的函數(shù)值if(x<=0)y=0;elseif(x<=1)y=2*x;elsey=2;endend3.5函數(shù)上面的函數(shù)只能接受標(biāo)量作為參數(shù),也就是說一次只能計算一個函數(shù)值,這與MATLAB的數(shù)組運算習(xí)慣不相符,為此修改如下:functiony=myPiecewise2(x)%分段函數(shù)%x數(shù)組,自變量%y數(shù)組,與x對應(yīng)的函數(shù)值y=zeros(size(x));fori=1:numel(x)

if(x(i)>0&&x(i)<=1)y(i)=2*x(i);

elseif(x(i)>1)y(i)=2;

endendend3.5函數(shù)也可以使用向量化運算來實現(xiàn)這個過程,這種方式更加符合MATLAB的習(xí)慣.這種方式的一般格式是:(條件1).*(表達(dá)式1)+(條件2).*(表達(dá)式2)+?+(條件n).*(表達(dá)式n)functiony=myPiecewise3(x)%分段函數(shù)%x數(shù)組,自變量%y數(shù)組,與x對應(yīng)的函數(shù)值y=(0<x&x<=1).*(2*x)+(1<x).*2;3.5函數(shù)函數(shù)直接或間接調(diào)用函數(shù)本身,則稱該函數(shù)為遞歸函數(shù)。如果一個問題可以通過求解該問題的更小規(guī)模問題來求解,那么這個問題就可以使用遞歸法來求解.例如要求解an,可以通過求解an?1,an?2,?來求解,那么這個問題就可以使用遞歸法來求解.如果只使用an?1則稱為單遞歸,如果使用了an?1和an?2則稱為雙遞歸,以此類推.遞歸法可以通過遞歸函數(shù)來實現(xiàn).3.5函數(shù)例3.14使用遞歸法求兩個數(shù)的最大公約數(shù).functiona=gcd(a,b)if(a<b)t=a;a=b;b=t;endif(b~=0)a=gcd(b,mod(a,b));%調(diào)用函數(shù)自身end3.5函數(shù)

functionf=fibnacci(n)%遞歸法求斐波那契數(shù)列%n整數(shù)%f斐波那契數(shù)列的第n項if(n<=2)f=1;elsef=fibnacci(n-1)+fibnacci(n-2);%遞歸end3.5函數(shù)例3.16漢諾塔問題.相傳在古印度圣廟中,有一種被稱為漢諾塔(Hanoi)的游戲.該游戲是在一塊銅板裝置上,有三根桿(編號A、B、C),在A桿自下而上、由大到小按順序放置n(n≥3)個金盤.游戲的目標(biāo):把A桿上的金盤全部移到C桿上,并仍保持原有順序疊好.操作規(guī)則:每次只能移動一個盤子,并且在移動過程中三根桿上都始終保持大盤在下,小盤在上,操作過程中盤子可以置于A、B、C任一桿上.這個問題使用遞歸法求解.算法描述為:以C盤為中介,從A桿將1至n?1號盤移至B桿;將A桿中剩下的第n號盤移至C桿;以A桿為中介;從B桿將1至n?1號盤移至C桿.3.5函數(shù)functionhanoi(n,A,B,C)%求解漢諾塔問題%n盤子個數(shù)%A盤子原來所在的柱子%B中介柱子%C目標(biāo)柱子if(n==1)disp([A,'-->',C]);elsehanoi(n-1,A,C,B);disp([A,'-->',C]);hanoi(n-1,B,A,C);end3.5函數(shù)值得一提的是,雖然遞歸函數(shù)比較簡單,但是其運行效率是比較低的,尤其是出現(xiàn)多遞歸的時候,效率顯著降低.如果存在非遞歸方式能夠?qū)崿F(xiàn),建議盡量采用非遞歸方式.

例如,非遞歸的求fibnacci數(shù)列的函數(shù)如下:functionf=fibnacci2(n)%求斐波那契數(shù)列的非遞歸實現(xiàn)%n整數(shù)%f斐波那契數(shù)列的第n項if(n<=2)f=1;elsef1=1;f2=1;

fori=3:nf=f1+f2;f1=f2;f2=f;%更新

endend3.5函數(shù)MATLAB允許在調(diào)用M函數(shù)時實際參數(shù)少于形式參數(shù),并在M函數(shù)內(nèi)部使用nargin來獲取實際參數(shù)個數(shù),然后根據(jù)實參個數(shù)做相應(yīng)處理,常用于為函數(shù)參數(shù)提供默認(rèn)值.還可以使用nargout獲取實際輸出參數(shù)個數(shù),以便針對不同的調(diào)用方式返回不同的結(jié)果.另外,借助varargin、varargout還可以更靈活地處理參數(shù)和返回值.3.5函數(shù)例3.18定義函數(shù),對區(qū)間[a,b]進(jìn)行n等分,默認(rèn)a=0,b=1,n=50.functionx=IntervalDivision(a,b,n)%對區(qū)間[a,b]進(jìn)行n等分%[a,b]待劃分的區(qū)間%n等分?jǐn)?shù)%x等分點if(nargin<1),a=0;end

%當(dāng)實際參數(shù)少于1個時,置a=0if(nargin<2),b=1;end

%當(dāng)實際參數(shù)少于2個時,置b=0if(nargin<3),n=50;end%當(dāng)實際參數(shù)少于3個時,置n=50h=(b-a)/n;%小區(qū)間寬度x=a:h:b;%生成等分點,共有n+1個分點,與linspace(a,b,n+1)等價3.6程序運行計時在編寫程序時,經(jīng)常要分析一段代碼的運行時間,比較程序的多種實現(xiàn)方式,以提高代碼質(zhì)量.如何計算一段代碼的運行時間呢?MATLAB提供了多種計時方式,使用tic、toc命令;使用cputime命令;使用etime、clock命令;使用探查器.3.6程序運行計時tic和toc函數(shù)協(xié)同工作以測量經(jīng)過的時間.tic開始計時,而toc結(jié)束計時,并保存

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論