邏輯運算和判斷選取控制_第1頁
邏輯運算和判斷選取控制_第2頁
邏輯運算和判斷選取控制_第3頁
邏輯運算和判斷選取控制_第4頁
邏輯運算和判斷選取控制_第5頁
已閱讀5頁,還剩32頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

邏輯運算和判斷選取控制第一頁,共三十七頁,編輯于2023年,星期五4.1.1關(guān)系運算符及其優(yōu)先次序

C語言提供6種關(guān)系運算符:

(1)<(小于)

(2)<=(小于或等于)

(3)>(大于)

(4)>=(大于或等于)〕(5)==(等于)

(6)!=(不等于)關(guān)于優(yōu)先次序:1.前4種關(guān)系運算符(<,<=,>,>=)的優(yōu)先級別相同,后兩種也相同。前4種高于后2種。例如,“>”優(yōu)先于“==”。而“>”與“<”優(yōu)先級相同。

2.關(guān)系運算符的優(yōu)先級低于算術(shù)運算符。

3.關(guān)系運算符的優(yōu)先級高于賦值運算符。高→低算術(shù)運算符關(guān)系運算符賦值運算符例如:c>a+b等效于c>(a+b)a>b!=c等效于(a>b)!=ca==b<c等效于a==(b<c)第二頁,共三十七頁,編輯于2023年,星期五4.1.2關(guān)系表達式用關(guān)系運算符將兩個表達式(可以是算術(shù)表達式或關(guān)系表達式、邏輯表達式、賦值表達式、字符表達式)連接起來的式子,稱關(guān)系表達式。例如,下面都是合法的關(guān)系表達式:a>b,a+b>b+c,(a=3)>(b=5),’a’<’b’,(a>b)>(b<c)關(guān)系表達式的值是一個邏輯值,即“真”或“假”。例如,關(guān)系表達式“5=3”的值為“假”“5>=0”的值為“真”。C語言沒有邏輯型數(shù)據(jù)(Pascal語言以True表示“真”,以Fa1se表示“假”。PASCAL和FORTRAN等語言都有邏輯型變量和邏輯型常量),以1代表“真”,以“0”代表“假”。例如,若a=3,b=2,c=1,則:

a>b的值為”真”,表達式的值為1。(a>b)==c的值為“真”(因為a>b的值為1,等于c的值),表達式的值為1。

b+c<a的值為“假”,表達式的值為0。如果有以下賦值表達式:

d=a>bd的值為1。

f=a>b>cf的值為0(因為“>”運算符是自左至右的結(jié)合方向,先執(zhí)行“a>b”,得值為1,再執(zhí)行關(guān)系運算:“1>c”得值0,賦給f第三頁,共三十七頁,編輯于2023年,星期五

4.2邏輯運算符和邏輯表達式用邏輯運算符將關(guān)系表達式或邏輯量連接起來就是邏輯表達式。下面介紹C語言中的邏輯運算符和邏輯運算。4.2.1邏輯運算符及其優(yōu)先次序

C語言提供三種邏輯運算符:

1.&&邏輯與(相當(dāng)于其它語言中的AND)

2.||邏輯或(相當(dāng)于其它語言中的OR)

3.!邏輯非(相當(dāng)于其它語言中的NOT)

&&和||”是“雙目(元)運算符”,它要求有兩個運算量(操作數(shù)),如(a>b)&&(x>y),(a>b)||(x>y)。“!”是“一目(元)運算符”,只要求有一個運算量,如?。╝>b)。邏輯運算舉例如下:

a&&b若a,b為真,則a&&b為真。

a||b若a,b之一為真,則a||b為真。

!a若a為真,則!a為假。第四頁,共三十七頁,編輯于2023年,星期五下表為邏輯運算的“真值表”。用它表示當(dāng)a和b的值為不同組合時,各種邏輯運算所得到的值。

ab!a!ba&&ba||bTTFFTTTFFTFF

在一個邏輯表達式中如果包含多個邏輯運算符,如!a&&b||x>y&&c優(yōu)先次序:高→低!→算術(shù)運算符→關(guān)系運算符→&&→||→賦值運算符!a&&b||x>y&&c((!a)&&b)||((x>y)&&c)(a>b)&&(x>y)可寫成:a>b&&x>y(a==b)||(x==y)可寫成:a==b||x>y(!a)||(a>b)可寫成:!a||a>b第五頁,共三十七頁,編輯于2023年,星期五4.2.2邏輯表達式如前所述,邏輯表達式的值應(yīng)該是一個邏輯量“真”或“假”。C語言編譯系統(tǒng)在給出邏輯運算結(jié)果時,以數(shù)值1代表“真”,以0代表“假”,但在判斷一個量是否為“真”時,以0代表“假”,以非0代表“真”。即將一個非零的數(shù)值認作為“真”。例如:①若a=4,則!a的值為0。因為a的值為非0,被認作“真”,對它進行“非”運算,得“假”,“假”以0代表。②若a=4,b=5,則a&&b的值為1。因為a和b均為非0,被認為是“真”,因此a&&b的值也為“真”,值為1。③a、b值同前,a||b的值為1。④a、b值同前,!a||b的值為1。⑤4&&0||2的值為1。通過這幾個例子可以看出,由系統(tǒng)給出的邏輯運算結(jié)果不是0就是1,不可能是其它數(shù)值。而在邏輯表達式中作為參加邏輯運算的運算對象(操作數(shù))可以是0(“假”)或任何非0的數(shù)值(按“真”對待)。如果在一個表達式中不同位置上出現(xiàn)數(shù)值,應(yīng)區(qū)分哪些是作為數(shù)值運算或關(guān)系運算的對象,哪些作為邏輯運算的對象,第六頁,共三十七頁,編輯于2023年,星期五例如

5>3&&2||8<4-!0表達式自左至右掃描求解。首先處理“5>3”(因為關(guān)系運算符優(yōu)先于&&)。在關(guān)系運算符兩側(cè)的5和3作為數(shù)值參加關(guān)系運算,”5>3”的值為:1。再進行”1&&2”的運算,此時1和2均是邏輯運算對象,均作“真”處理,因此結(jié)果為1。再往下進行“1||8<4-!0”的運算。根據(jù)優(yōu)先次序,先進行“!0”運算得1,因此,要運算的表達式變成:“1||8<4-1”,即“1||8<3”,關(guān)系運算符“<”兩側(cè)的8和3作為數(shù)值參加比較,“8<3”的值為0(“假”)。最后得到“1||0”的結(jié)果1。實際上,邏輯運算符兩側(cè)的運算對象不但可以是0和1,或者是0和非0的整數(shù),也可以是任何類型的數(shù)據(jù)。可以是字符型、實型或指針型等。系統(tǒng)最終以0和非0來判定它們屬于“真”或“假”。例如

‘c’&&’d’的值為1(因為’c’和’d’的Ascii值都不為0,按“真”處理)。在邏輯表達式的求解中,并不是所有的邏輯運算符都被執(zhí)行,只是在必須執(zhí)行下一個邏輯運算符才能求出表達式的解時,才執(zhí)行該運算符。例如:

1.a(chǎn)&&b&&c只有a為真(非0)時,才需要判別b的值,只有a和b都為真的情況下才需要判別c的值。只要a為假,就不必判別b和c,(此時整個表達式已確定為假)。如果a為真,b為假,不判別c。

第七頁,共三十七頁,編輯于2023年,星期五2.a(chǎn)||b||c只要a為真(非0)就不必判別b和c對&&運算符只有a≠0,才繼續(xù)進行右面的運算。對||運算符來說,只有a=0才繼續(xù)進行其右面的運算。因此,如果有下面的邏輯表達式:(m=a>b)&&(n=c>d)當(dāng)a=1,b=2,c=3,d=4,m和n的原值為1時,由于a>b的值為0,m=0,而n=c>d不被執(zhí)行,因此n的值不是0而仍保持原值1。這點請讀者注意。熟練掌握C語言的關(guān)系運算符和邏輯運算符后,可以巧妙地用一個邏輯表達式來表示一個復(fù)雜的條件。例如,判別某一年year是否閏年。閏年的條件是符合下面二者之一:①能被4整除,但不能被100整除。②能被4整除,又能彼400整除。可以用一個邏輯表達式來表示:

year%4==0&&year%100!=0||year%400==0

當(dāng)year為某一整數(shù)值時,上述表達式值為真(1),則year為閏年;否則為非閏年??梢约右粋€“!”用來判別非閏年:

!(year%4==0&&year%100!=0||year%400==0)

若表達式值為真(1),year為非閏年。也可以用下面邏輯表達式判別非閏年:(year%4!=0)||(year%100==0||year%400!=0)表達式為真,year為非閏年。請注意表達式中右面的括弧內(nèi)的不同運算符(%,!,&&、==)的運算優(yōu)先次序。第八頁,共三十七頁,編輯于2023年,星期五4.3if語句

if語句是用來判定所給定的條件是否滿足,根據(jù)判定的結(jié)果(真或假)決定執(zhí)行給出的兩種操作之一。4.3.1if語句的三種形式

C語言提供了三種形式的if語句:

1.if(表達式)語句例如:if(x>y)printf(”%d”,x);

這種if語句的執(zhí)行過程見圖0表達式語句1第九頁,共三十七頁,編輯于2023年,星期五2.if(表達式)語句1else語句2

例如:if(x>y)printf(”%d”,x);

elseprintf(”%d”,y);見圖表達式語句1語句2真假第十頁,共三十七頁,編輯于2023年,星期五3.

if(表達式1)語句1elseif(表達式2)語句2elseif(表達式3)語句3elseif(表達式m)語句melse語句n

流程圖表達式1FT表達式3FT表達式2FT表達式4FT語句4語句5語句3語句2語句1第十一頁,共三十七頁,編輯于2023年,星期五例如。

if(number>500)cost=0.15;

elseif(number>300)cost=0.10:

elseif(number>100)cost=0.075;

elseif(number>50)cost=0.05;elsecost=0;

說明:.三種形式的if語句中在if后面都有“表達式”,一般為邏輯表達式或關(guān)系表達式。例如,if(a==b&&.x==y)printf(”a=b,x=y”);系統(tǒng)對表達式的值進行判斷,若為0,按“假”處理,若為非0,按“真”處理,執(zhí)行指定的語句。假如有以下語句:if(3)printf(“ok.”);是合法的,執(zhí)行結(jié)果輸出”ok”。因為表達式的值為3,按“真”處理。由此可見,表達式的類型不限于邏輯表達式,可以是任意的數(shù)值類型(包括整型、實型、字符型、指針型數(shù)據(jù))。例如,下面的語句也是合法的:

if(’a’)printf(”%d”,’a’);執(zhí)行結(jié)果:輸出a的AscII碼97。第十二頁,共三十七頁,編輯于2023年,星期五

2.第二、第三種形式的討語句中,在每個else前面有一分號,整個語句結(jié)束處有一分號。例如:

if(x>0)printf(“%f”,x);elseprintf(“%f”,-x);

這是由于分號是C語句中不可缺少的部分,這個分號是讓語句中的內(nèi)臥語句所要求的。如果無此分號,則出現(xiàn)語法錯誤。但應(yīng)注意,不要誤認為上面是兩個語句(if語句和else語句)。它們都屬于同一個if語句。else子句不能作為語句單獨使用,它必須是if語句的一部分,與if配對使用。

3.在if和else后面可以只含一個內(nèi)嵌的操作語句(如上例),也可以有多個操作語句,此時用花括號“{}”將幾個語句括起來成為一個復(fù)合語句。如:

if(a+b>c&&b+c>a&&c+a>b){s=0.5*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));

printf(”area=%6.2f”,area);}

elseprintf(”itisnotatrilateral”);注意在{}外面不需要再加分號。因為{}內(nèi)是一個完整的復(fù)合語句,不需另附加分號。第十三頁,共三十七頁,編輯于2023年,星期五例4。1輸入兩個實數(shù),按代數(shù)值由小到大次序輸出這兩個數(shù)。

/*example4.1atpage53*/main(){floata,b,t;scanf("%f,%f",&a,&b);if(a>b){t=a;a=b;b=t;}printf("%5.2f,%5.2f",a,b);}運行情況如下。

3.6,-3.2一3.20.3.60第十四頁,共三十七頁,編輯于2023年,星期五[例4.2」輸入三個數(shù),按大小順序輸出。main(){floata,b,c,t;printf("Inputa,b,c\n");scanf("%f,%f,%f",&a,&b,&c);if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(b>c){t=b;b=c;c=t;}printf("%5.2f,%5.2f,%5.2f",a,b,c);}

運行情況如下:3,7,11.O0,3.00,7.00第十五頁,共三十七頁,編輯于2023年,星期五4.3.2語句的嵌套在if語句中又包含一個或多個if語句稱為if語句的嵌套。一般形式如下:

if()if()語句1else語句2elseif()語句3else語句4

應(yīng)當(dāng)注意if與else的配對關(guān)系。從最內(nèi)層開始,else總是與它上面最近的(未曾配對的)if配對。假如寫成:

1f()

if()語句1elseif()語句2else語句3編程序者把else寫在與第一個if(外層if)同一列上,希望else與第一個if對應(yīng),但實際上else是與第二個if配對,因為它們相距最近。因此最好使內(nèi)嵌if語句也包含else部分,這樣if的數(shù)目和else的數(shù)目相同,從內(nèi)層到外層一一對應(yīng),不致出措。第十六頁,共三十七頁,編輯于2023年,星期五如果if與else的數(shù)目不一樣,為實現(xiàn)程序設(shè)計者的企圖,可以加花括弧來確定配對關(guān)系。例如:

if(){if()語句1}

else

語句2這時if限定了內(nèi)嵌if語句的范圍,因此else與第一個讓配對?!咐?.3]有一函數(shù):

-1(x<0)y=0(x=0)1(x>0)編一程序,輸入一個x值,輸出y值。有以下幾種寫法,請讀者判斷哪些是正確的?第十七頁,共三十七頁,編輯于2023年,星期五程序1:

main()

{intx,y;scanf(”%d”,&x);

if(x<0)y=-1;

elseif(x==0)y=0;

elsey=1;

printf(”x=%d,y=%d\n”,x,y);}

程序2:將上面程序的if語句改為:

if(x>=0)

if(x>0)y=1;elsey=0;

elsey=一1;

第十八頁,共三十七頁,編輯于2023年,星期五程序3:將上述if語句改為:

y=一1;

if(x!=0)if(x>0)y=1:

elsey=0;程序4:

y=0;

if(x>=0)if(x>0)y=1;

elsey=-1;

只有程序1和2是正確的。一般把內(nèi)嵌的if語句放在外層的else子句中(如程序1那樣),這樣由于有外層的else相隔,內(nèi)嵌的else不會和外層的if配對,而只能與內(nèi)嵌的讓配對,從而不致搞混,如像程序3、4那樣就容易混淆。第十九頁,共三十七頁,編輯于2023年,星期五4.3.3條件運算符若if語句中,在表達式為“真”和“假”時,且都只執(zhí)行一個賦值語句給同一個變量賦值時,可以用簡單的條件運算符來處理。例如,若有以下if語句:

if(a>b)max=a;elsemax=b;可以用下面的條件運算符(?:)來處理:

max=(a>b)?a:b;其中”(a>b)?a:b”是一個“條件表達式”。它是這樣執(zhí)行的。如果(a>b)條件為真,則條件表式取值a,否則取值b.

條件運算符要求有三個操作對象,稱三目(元)運算符。條件表達式的一般形式為

表達式1?表達式2:表達式3

它的執(zhí)行過程見圖4.7。表達式1表達式2表達式3T(1)F(0)第二十頁,共三十七頁,編輯于2023年,星期五說明

1.條件運算符的執(zhí)行順序:先求解表達式1,若為非0(真)則求解表達式2,此時表達式2的值就作為整個條件表達式的值。若表達式1的值為0(假),則求解表達式3,表達式3的值就是整個條件表達式的值。

max=(a>b)?a:b執(zhí)行結(jié)果就是將條件表達式的值賦給max,也就是將a和b二者中大者賦給max。

2.條件運算符優(yōu)先于賦值運算符,因此上面賦值表達式的求解過程是先求解條件表達式,再將它的值賦給max。條件運算符的優(yōu)先級別比關(guān)系運算符和算術(shù)運算符都低。因此,

max=(a>b)?a:b括號可以不要,可寫成max=a>b?a:b如果有a>b?a:b+1相當(dāng)于a>b?a:(b十1),而不相當(dāng)于(a>b?a:b)+1。第二十一頁,共三十七頁,編輯于2023年,星期五3。條件運算符的結(jié)合方向為“自右至左”。如果有以下條件表達式:

a>b?a:c>d?c:d相當(dāng)于a>b?a:(c>d?c:d)a=1,b=2,c=3,d=4,則條件表達式的值等于4。

4.條件表達式不能取代一般的if語句,只有在if語句中內(nèi)嵌的語句為賦值語句(且兩個分支都給同一個變量賦值)時才能代替if語句。象下面的if語句就無法用一個條件表達式代替。

if(a>b)printf(“%d”,a);

elseprintf(“%d”,b);但可以用下面語句代替:printf(”%d”,a>b?a:b);即將條件表達式的值輸出。

5.條件表達式中,表達式1的類型可以與表達式2和表達式3的類型不同。如x?’a’:’b’x是整型變量,若x=0,則條件表達式的值為’b’。表達式2和表達式3的類型也可以不同,此時條件表達式的值的類型為二者中較高的類型。如x>y?1:1.5如x<=y,則條件表達式的值為1.5,若x>y值應(yīng)為1,由于1.5是實型,比整型高(見第二章2.7),因此,將1轉(zhuǎn)換成實型值1.0。第二十二頁,共三十七頁,編輯于2023年,星期五「例4.4」輸入一個字符,判別它是否大寫字母,如果是,將它轉(zhuǎn)換成小寫字母;如果不是,不轉(zhuǎn)換。然后輸出最后得到的字符。

/*example4.4atpage57*/main(){charch;scanf("%c",&ch);ch=(ch>='A'&&ch<='Z')?(ch+32):ch;printf("%c",ch);}

運行結(jié)果如下:條件表達式中的(ch+32),其中32是小寫字母和大寫字母ASCII碼的差值(請參閱附錄1)。第二十三頁,共三十七頁,編輯于2023年,星期五4.4switch語句

switch語句是多分支選擇語句。if語句只有兩個分支可供選擇,而實際問題中常常需要用到多分支的選擇。例如,學(xué)生成績分類(90分以為‘A’等,80~89分為‘B’等,70~79分為‘c’,等,……);人口統(tǒng)計分類(按年齡分為老、中、青、少、兒童);工資統(tǒng)計分類;銀行存款分類;……等。當(dāng)然這些都可以用嵌套的讓語句來處理,但如果分支較多,則嵌套的if語句層數(shù)多,程序冗長而且可讀性降低。C語言提供switch語句直接處理多分支選擇,它相當(dāng)于Pascal語言中的case語句。它的一般形式如下:

switch(表達式)

{case常量表達式1:語句1case常量表達式2:語句2case常量表達式n:語句ndefault:語句n十1}

第二十四頁,共三十七頁,編輯于2023年,星期五例如,根據(jù)考試成績的等級打印出百分制分數(shù)段:

switch(grade)

{case‘A’:printf(“85~100\n”);

case‘B’:printf(“70~84\n”);

case‘C’:printf(“60~69\n”);

case’D’:printf(“<60\n”);

default:printf(”error\n”);

}第二十五頁,共三十七頁,編輯于2023年,星期五說明:

1.switch后面括弧內(nèi)的“表達式”,可以是整型表達式或字符型表達式,也可以是枚舉型數(shù)據(jù)(見第十章)。對其它類型,原來的C標準是不允許的,而新的ANSI標準允許上述表達式和case常量表達式為任何類型。

2.當(dāng)表達式的值與某一個case后面的常量表達式的值相等時,就執(zhí)行此case后面的語句,若所有的case中的常量表達式的值都沒有與表達式的值匹配的,就執(zhí)行defau1t后面的語句。3。每一個case的常量表達式的值必須互不相同,否則就會出現(xiàn)互相矛盾的現(xiàn)象(對表達式的同一個值,有兩種或多種執(zhí)行方案)。

4.各個case的出現(xiàn)次序不影響執(zhí)行結(jié)果。例如,可以先出現(xiàn)case‘D’:…,然后是case‘A’:……5。執(zhí)行完一個case后面的語句后,流程控制轉(zhuǎn)移到下一個case繼續(xù)執(zhí)行。“case常量表達式”只是起語句標號作用,并不是在該處進行條件判斷。在執(zhí)行switch語句時,根據(jù)switch后面表達式的值找到匹配的人口標號,就從此標號開始執(zhí)行下去,不再進行判斷。第二十六頁,共三十七頁,編輯于2023年,星期五例如,上面的例子中,若grade的值等于‘A’,則將連續(xù)輸出:

85~10070~8460~69〈60error因此,應(yīng)該在執(zhí)行一個case分支后,使流程跳出switch結(jié)構(gòu),即終止switch語句的執(zhí)行,可以用了個break語句來達到此目的,將上面的switch結(jié)構(gòu)改寫如下:

switch(grade)

{case‘A’:printf(“85~100\n”);break;

case‘B’:printf(“70~84\n”);break;

case‘C’:printf(“160~69\n”);break;

case‘D’:printf(“<60\n”);break;defaultprintf(“error\n“);ABCD其它grade85~10070~8460~69<60error第二十七頁,共三十七頁,編輯于2023年,星期五最后一個分支(default)可以不加break語句。如果grade的值為‘B’,則只輸出“70~84。流程圖見圖4.8。在case后面中雖然包含一個以上執(zhí)行語句,但可以不必用花括弧括起來,會自動順序執(zhí)行本case后面所有的執(zhí)行語句。當(dāng)然加上花括弧也可以。

6.多個case可以共用一組執(zhí)行語句,如:

case‘A’:

case‘B’:

case‘C’:printf(“>60\n”);break;grade的值為‘A’、‘B’或‘C’時都執(zhí)行同一組語句。第二十八頁,共三十七頁,編輯于2023年,星期五4.5程序舉例[例4.5」寫程序,判某一年是否閏年。判別某一年year是否閏年。閏年的條件是符合下面二者之一:①能被4整除,但不能被100整除。②能被4整除,又能彼400整除。可以用一個邏輯表達式來表示:

year%4==0&&year%100!=0||year%400==0

當(dāng)year為某一整數(shù)值時,上述表達式值為真(1),則year為閏年;否則為非閏年。以變量Leap代表是否閏年的信息。若閏年,令leap=1。非閏年,leap=0。最后判斷l(xiāng)eap是否1(真);若是,則輸出“閏年”信息。程序如下:第二十九頁,共三十七頁,編輯于2023年,星期五

/*example4.5atpage60*/main(){intyear,leap;printf("Inputayear\n");scanf("%d",&year);if(year%4==0){if(year%100==0){if(year%400==0) leap=1; elseleap=0;}elseleap=1;}elseleap=0;第三十頁,共三十七頁,編輯于2023年,星期五

if(leap)printf("%dis",year);elseprintf("%disnot",year);printf("aleapyear\n");}/*if((year%4==0&&year%100!=0)||(year%400==0))leap=1

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論