中央电大计算机专业高级程序设计c语言参数详解手册_第1页
中央电大计算机专业高级程序设计c语言参数详解手册_第2页
中央电大计算机专业高级程序设计c语言参数详解手册_第3页
中央电大计算机专业高级程序设计c语言参数详解手册_第4页
中央电大计算机专业高级程序设计c语言参数详解手册_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、* * * * Mini-C Language reference * * * *index1:Mini-c初學者reference1.1:給初學寫程式的人1.2:用語說明1.2.1:所謂的變數1.2.2:所謂的函數1.2.3:所謂的常數1.2.4:所謂的運算子1.3:程式的控制文法及命令1.3.1:讓程式整體分岐 if-else文1.3.2:反覆執行相同的程式1 while文1.3.3:反覆執行相同的程式2 do-while文1.3.4:反覆執行相同的程式3 for文1.3.5:從反覆的命令中跳離1 break1.3.6:從反覆的命令中跳離2 continue1.3.7:跳離函數 retur

2、n1.3.8:範例程式說明1.4:程式後面;時有時無2:Mini-C programmers reference2.1:程式的構成要素2.1.1:compiler 識別的文字2.1.2:命令行2.1.3:Mini-C中 support的key word2.1.3.1:int2.1.3.2:return2.1.3.3:其他support的key word2.1.4:Mini-C不support的key word2.1.4.1:因資料型態的限制而刪除2.1.4.2:因scope等的限制而刪除2.1.4.3:因structure的限制而刪除2.1.4.4:因語言體係的簡略化而刪除2.1.5:參數2.

3、1.6:運算子2.1.6.1:Mini-C中support的運算子2.1.6.2:不support的運算子2.1.7:常數2.8:其他限制事項2.9:用語解說2.9.1:key word2.9.2:參數2.9.3:compiler2.9.4:資料型2.9.5:參數3:Mini-C常數reference4:Mini-C標準函數reference5:HR2 標準搭載程式reference* * 1:Mini-C初學者reference * *1.1:給初學寫程式的人此reference為介紹關於所謂的Mini-C程式語言。 Mini-C為根據C語言所開發出來HR2的原始 C語言。將市面上C語言具有

4、的功能,刪除一部分。Mini-C只能在HR2中控制機器人。理解Mini-C之後,只要稍微再進修,或許能成為會寫C語言的程式設計師?!使用Mini-C,了解程式的有趣之處實為一大樂事。程式及程式語言程式為讓電腦依照所想動作的命令集合。程式語言為紀錄程式的語言。就如同英國說英語、法國說法語,我們所處的日本說日語般,每個國家都有自己的語言,程式語言即為在電腦圖使用的語言。國中初學英語時,雖完全不懂,但畢業後至少應該了解一些。提起程式語言,不要持有我一定不行的想法。英語的規則(文法、句法結構等)雖很多,但如果決定學C語言,其規則比英語少很多。 C語言的規則綜合的話,大約占A4紙的一張。程式是將對電腦所

5、下的命令記錄下來。寫程式即為對電腦下命令。所謂的寫程式作業稱為programing,寫程式的人稱為程式設計師。寫程式時使用特殊的語言。此語言稱為程式語言。程式語言有各個種類。COBOLFORTRANC語言等。程式語言是以人們易於了解的方式寫成。如果是電腦無辨識的就必須翻譯成電腦可辨識的東西。進行翻譯作業的稱之為compiler。1.2:用語說明本章關於做程式說明,以受予必要的予備知識為目的,說明程式的編寫方法及必要的用語。對本章的說明或許會有疑問,對於此疑問請先將之視為是那種東西嗎進行下一步。進入下一步應該可以解決疑問點。1.2.1:所謂的變數請將變數視為代表輸入的某一數值,舉例說明的話,如同

6、水會自水龍頭中流出一樣,水如果流入排水溝即不能收回。但是,如果有茶杯的話,會如何呢?可用茶杯取水。此時,水為數值、茶杯為變數,亦即可保存輸入值的稱為變數,此外,變數(茶杯)使用之前,必須先準備好,準備變數(茶杯)稱之為宣告變數。變數宣告及變數名稱宣告變數時,在變數名稱之前加上int,變數名稱之後留空白,記述變數名稱,最後加上;。變數名稱最多可辨識10個文字,即使大小寫的錯誤也可以辨識。記述方法main() int cup ; 宣告變數cup cup = 7 ; 將7置入變數cup1.2.2:所謂的函數所謂的函數即做某些一定的處理,將其處理結果傳回的程式。函數中可將必要的要素傳達至某些一定的處理

7、。這些必要的要素稱之為參數。Mini-C中函數最多可傳達3個參數。傳回之處理結果稱之為傳回值。一般傳回值會傳回一定的處理成功或失敗。以自動販賣機為例說明,沒有將錢投入,自動販賣機不會運作。因此將錢投入後,和所投金額相同的鈕會亮燈,然後在欲購買東西的鈕上按一下,自動販賣機即會將該物放下。將這一連串的動作譬喻成函數,自動販賣機即為函數,錢即為叫出函數,按下按鈕即為參數,放出東西即為傳回值,某些一定的處理即為依據按的鈕不同,變化放出得東西。函數名稱可辨識10個文字,即使大小寫的錯誤也可以辨識。構成程式的要素一般為函數。Mini-C準備了讓機器人做基本動作的函數,此函數稱為標準函數。關於標準函數的詳細

8、說明請呼叫標準函數REFERENCE。記述的方法沒有參數時func() 函數func()的開始 int cup ; cup = 7 ; 函數func()的結束有參數時func( int value ) 函數func()的開始,參數VALUE的宣告 int cup ; cup = value+7 ; 函數func()的結束範例程式 0| main() 1| int a ; 2| a = func( 10 ) ; 3| print( a ) ; 4| 5| 6| func( int value ) 7| int cup ; 8| cup = value+7 ; 9| return( cup ) ;

9、10| 執行此範例程式,畫面右下方會出現17。第2行的參數10改變後,會顯現出變更後的值和7加起來之值。第6行的函數func()用於第2行,使用第2行的函數func(),稱之為呼叫函數。1.2.3:所謂的常數所謂的常數即為可將一定的數值輸入,常數和變數不同,一旦宣告即不能變更。Mini-C中標準函數的傳回值,完全回歸常數。宣告常數請在函數以外的行進行。記述的方法#define VAL 7 常數 VAL 的宣告func( int value ) int cup ; cup = value+VAL ; 增加常數 VAL 及變數之 value說明函數之地方為cup = value+7 ;因將7宣告為

10、常數,所以變成cup = value+VAL ;。1.2.4:所謂的運算子運算子用於數字的計算、數值的比較。以下說明Mini-C中使用的基本運算子。因尚有其它的運算子,詳細的內容請參照Mini-C REFERENCE。種類 特記事項及例子+ 加算運算子 10+7 = 17- 減算運算子 10-7 = 3* 乘算運算子 10*7 = 70/ 除算運算子 求出除算的答案 10/7 =1 21/7 =3% 餘數運算子 求出除算的餘數 10%7 = 14%7 =0= 代入運算子 代入一定從右至左進行 不等式左邊運算子 a 0 左邊比右邊小= 等式左邊不等運算子 a 不等式右邊運算子 a 0 右邊比左邊

11、小= 等式右邊不等運算子 a = 0 右邊比左邊小或相等= 等式運算子 a = 1 左邊和右邊相等!= 不等式運算子 a != 0 左邊和右邊不相等& 關係理論積運算子 ab & cb | cd a和b、c和d兩者有一成立+ 增加運算子 1加算,變數a為0時,a+的答案變成1。- 減少運算子 1減算,變數a為1時,a-的答案變成0。1.3:程式控制文法和命令主要是為了比較演算的結果,以下為命令的說明及使用例。最後則為範例程式的執行結果。1.3.1:讓整個程式分道執行 if-else文此文法為將程式控制的內容分成2個的命令。判定是否滿足if後面()中所寫的條件。滿足時,執行()之後用總括的程式。

12、範例1 0| main() 1| int a ; 2| int b ; 3| 4| a = buggage() ; 5| if( a = FAIL ) 6| do 7| b = seek( ERG ) ; 8| while( b = CONT ) ; 9| get() ;10| 11| else12| do13| b = seek( WALL ) ;14| while( b = CONT ) ;15| put() ;16| 17| 此程式第4行的函數buggage()的傳回值,歸在所謂的a變數中。因此,第5行變數a若為常數FAIL的話,會執行自第7行至第10行的函數get()。此外if els

13、e文為即使else的部份不寫,也不會產生格式錯誤。範例2 0| main() 1| int a ; 2| 3| a = move() ; 4| if( a = FAIL ) 5| round( RIGHT ) ; 6| 7| 此程式第4行的函數move()的傳回值,如果常數FAIL的話,會執行round()。不是常數FAIL時,不會做任何動作。1.3.2:反覆執行相同的程式1 while文此文法為如果滿足while後面()中所寫的條件,即執行其後開始為止中間的程式。範例3 0| main() 1| int a ; 2| 3| a = SUCCESS ; 4| while( a = SUCCES

14、S ) 5| a = move() ; 6| 7| snooze() ; 8| 此程式當變數a為常數SUCCESS時,連續執行函數move()。跳離重覆,函數move()的傳回值變為1時即結束。另,while文中將()中的評價進行最初化,函數a的值在第3行定義為常數SUCCESS,將之初期化。若在while之後的()中寫入1,將不斷地反覆執行;相反地,寫入0反覆的命令一次也不會執行,沒有任何意義。範例4 不斷地執行反覆命令 0| main() 1| int a ; 2| 3| a = 1 ; 4| while( 1 ) 5| a = move() ; 6| 7| 範例5 反覆的命令一次也不會執

15、行 0| main() 1| int a ; 2| 3| a = 1 ; 4| while( 0 ) 5| a = move() ; 6| 7| 1.3.3:反覆執行相同的程式2 do-while文此文法為和while如同兄弟般的東西,while文在最初會進行條件的判斷,但do-while則在最後判斷條件。亦即無條件執行一次do之後所寫 開始while之前 程式為止。試著將範例3用do-while改寫看看。範例6 0| main() 1| int a ; 2| 3| do 4| a = move() ; 5| while( a = SUCCESS ) ; 6| snooze() ; 7| 此程

16、式和範例3相同,變數a連續執行常數SUCCESS 之反覆函數MOVE()。另亦和WHILE文一樣,於 WHILE之後的()中寫入1,將不斷的反覆執行,相反地,寫入0,只執行一次反覆命令,即結束反覆命令。1.3.4:反覆執行相同的程式3 FOR文以上說明WHILE文和 DO-WHILE文()中指定的條件不成立時,即結束反覆,此文法執行反覆命令的次數可事先指定。FOR之後寫3個式子。第1為給予初值的式子,第2為條件判斷,第3為演算式子。FOR文為第2的條件判斷成立時,執行 中的程式。範例7 0| main() 1| int a ; 2| 3| for( a=1 ; a10 ; a+ ) 4| mo

17、ve() ; 5| 6| 7| 此程式為先將變數a給予1的初值。再進行第2的條件判斷。若條件成立時即執行FOR之後 中的程式。在第2次以後的反覆中不再給予初值。第2次以後先進行第3的演算式子,再進行第2的條件判斷。如果成立,即執行反覆的程式。,執行式此程式,變數a即從1開始,執行比10小 中的程式,因此函數MOVE()合計為執行9次。1.3.5:自反覆的命令中跳離1BREAK此為命令反覆的命令結束之指令。即使反覆命令的條件成立,反覆中也可從中跳離。能跳離反覆命令的只有1。範例8 0| main() 1| int a ; 2| int b ; 3| for( a=0 ; a20 ; a+ ) 4

18、| do 5| b = move() ; 6| if( b = FAIL ) 7| round( RIGHT ) ; 8| break ; 9| 10| while( 1 ) ;11| 12|13| 此程式為當函數MOVE()的傳回值為常數FAIL時,執行ROUND()、跳離DO-WHILE文的反覆命令。但是FOR文的反覆,必須當變數A的值變成20時才能跳離。1.3.6:自反覆的命令中跳離2 CONTINUE此命令為中斷反覆命令 中的程式,直接跳至反覆命令的 之處。範例9 0| main() 1| int a ; 2| int b ; 3| do 4| a = move() ; 5| if(

19、a = FAIL ) 6| round( RIGHT ) ; 7| 8| b = check( FRONT ) ; 9| if( b != ERG )10| continue ;11| 12| break ;13| while( 1 ) ;14| snooze() ;15| 此程式為函數FIND() 的傳回值為常數FAIL時,因第10行的CONTINUE命令變有效,不執行第12行的BREAK命令,而進行 WHILE嵾?)的條件判斷。將反覆停止,函數CHECK()傳回值必須為常數ERG的值。1.3.7:跳離函數 RETURN此命令若在函數內,在任何地方函數自動結束之前,可強制將函數結束的命令。R

20、ETURN只有值為1時,才可將函數結束。範例10 0| main() 1| int a ; 2| 3| do 4| a = seek( ERG ) ; 5| while( a = CONT ) ; 6| return( a ) ; 7| 此程式為當函數SEEK()的傳回值介於常數CONT時,執行DO-WHILE的反覆命令。-1以外的傳回值,用RETURN命令將函數SEEK()的傳回值反還。1.3.8:範例程式說明以上說明所寫的範圍程式,若在HR2 EDITOR中編寫,將如以下說明動作。初學寫程式的人試著寫寫看如何。範例1機器人持有ERG時,找到作成牆壁的命令,移動至該場所,放置ERG。未持有E

21、RG時,不易取得ERG。範例2讓機器人前進。因障礙物等,機器人前進失敗時,讓機器人轉換至右方。範例3反覆所謂讓機器人前進1次的動作,以障礙物讓機器人變得不能前進為止。變得不移動時,機器人即睡覺。範例4讓所謂讓機器人前進1次的動作,無論怎麼樣皆會反覆。範例5在該地不動,不執行反覆命令。範例6和範例3相同範例7將所謂讓機器人前進1次的動作反覆9次。範例8反覆20次讓機器人在因障礙物而不能前進之前,使其前進。不能前進時,讓其轉向右方的動作。範例9a:讓機器人前進1次,前進失敗即向右方轉。機器人不能發現眼前喜歡顏色的ERG時, 即反覆a:的動作。 若能發現即跳離反覆命令,睡覺。範例10機器人在抵達有E

22、RG地點之前,持續呼叫函數seek(),未能發現erg或沒有能抵達的道路,即在該地不動。以return回到變數a的值(函數seek()的傳回值)。1.4:程式後面的;時有時無程式1行之後的;時有時無;密切注意載於前項的範例程式的話,或許有人已經察覺到或的後面不加上;。變數的宣告或函數的呼叫之後加上;,使用if或while的命令不加;do-while之後的while部份加上;可說是例外。此乃因為do-while的while部份完全在被關閉 ,不得不加上;,最後do-while的;或許不太容易理解,但只要知道有此東西即可。* * 2:Mini-C PROGRAMMERS REFERENCE * *

23、此REFERENCE以C語言和M的不同為中心,解說Mini-C的功能。對初學C語言的人而言,有一些難的用語,請參考用語解說。2.1:程式的構成要素2.1.1:電腦識別的文字compiler及editor識別的文字,雖以ASCII碼為準據,但也有不少沒有對應的東西。對以文字標示或escape 沒有對應。只能使用以下的文字 0x00 NULL 0x2d - 0x09 TAB 0x2f / 0x0a LineFeed 0x30-0x39 0-9 0x0d CarrigeReturn 0x3a : 0x1a EOF 0x3b ; 0x20 0x3c 0x25 % 0x41-0x5a A-Z 0x26

24、& 0x5f _ 0x28 ( 0x61-0x7a a-z 0x29 ) 0x7b 0x2a * 0x7c | 0x2b + 0x7d 0x2c ,上述以外的文字雖為錯誤的文字,但也有例外,在命令行內無論寫什麼皆可識別。2.1.2:註解行對C語言中所用的 /* */ 註解,Mini-C沒有對應。註解以/標示,該行/的右側即為註解(C+型)。註解最多為48文字,因註解行被視為一空白文字,其中無論為何種文字列,電腦皆忽視。2.1.3:Mini-C中support的key word因Mini-C不support一部分的命令、資料型;因此,key word的數目和標準C語言相較比較少。Mini-C中s

25、upport的key word 如下:break continue do else for int return while但是,int被視為定義的變數使用,不具有指定型態的意思。以其和C語言之不同為中心做解說。2.1.3.1:intMini-C中,變數的資料型態加上符號只有16bit。因此,能表達的數自為-3276832767。Mini-C中,一個INT只能定義一個變數。 X int aaa,bbb ; /在C語言中雖會被識別,但在 /Mini-C中是錯誤的。 int aaa ; int bbb ;此外,也不可在定義變數時給予初值,初值設定為宣告文,請用別的命令執行。 X int aaa =

26、 0 ; /在C語言中雖會被識別,但在 /Mini-C中是錯誤的。 int aaa ; aaa = 0 ;2.1.3.2:return用於指定函數的傳回值,在Mini-C中,因函數皆會變成int的型態,可當傳回值使用的為-3276832767。 X return(40000) ; 因比32767大,所以不正確。 return(100) ;return之指定,也會使用計算式。 reutrn (aaa+bbb*2) ;沒寫return時,傳回值為不定值。2.1.3.3:其它support的key word以下的key word之使用方法完全和C語言一樣。break,continue,do,for,

27、while2.1.4:Mini-C中不support的key word以下所列的key word在Mini-C中不supportauto char case const default double enumextern float goto long registershort signed sizeof static struct switchtypedef union unsigned void volatile 以下為詳細的說明2.1.4.1:因資料型的限制而刪除變數加上符號只有16bit,因此,無以下的key word。double,long,float,short,unsigned

28、,signed,void若使用上面的key word即會產生錯誤。2.1.4.2:因scope的限制而刪除變數只在檔案中存在scope的static型或函數內具有scope的local變數有限定。另亦無register變數的概念。auto,static,const,extern,register2.1.4.3:因 struct 的限制而刪除因 struct 的概念不support,所以以下的字沒有。typedef,union,sizeof,struct2.1.4.4:因語言體系的簡略化而刪除因語言體系的簡略化,而將以下的key word刪除。case,default,enum,goto,swi

29、tch,volatile 2.1.5:變數Mini-C中的變數,外部變數、內部變數最多皆為10個文字。起首的文字一定須為非數字。2.1.6:運算子2.1.6.1:Mini-C中support的運算子和原本C語言的方式一樣,有優先順位(+、-等),在Mini-C中對於優先順位有詳細的規定。下記的表中,愈上方的優先順位愈高(先判定)。 () 式 + increment(增加運算子) - decrement(減少運算子) + 正號 - 負號 * 乘算運算子 / 除算運算子 % 除算餘數運算子 + 加算運算子 - 減算運算子 不等式左邊運算子 不等式右邊運算子 = 等式右邊不等式運算子 = 等式運算子

30、 != 不等式運算子 & 關係理論積運算子 | 關係理論和運算子 = 代入運算子2.1.6.2:不support的運算子關於未support的運算子如下: 因沒有陣列 . - sizeof 因沒有struct & * 因沒有point ! 因沒有bit演算 (型別轉換) 因只有一個型 & 因沒有bit演算 ?: 因comhiler簡略化 += -= = 因comhiler簡略化 &= |= = 因comhiler簡略化 ) 因沒有進行順序評價2.1.7:常數Mini-C中support的常數只有10進位的整位數。型態也只有signed short而已。總之,常數所能定義的值從-32768至32

31、767。不定小數點常數、列舉常數、文字常數不support。2.8:其他的限制事項尤其是在Mini-C中不具任何意義的記號,不support。因陣列本身不存在,所以沒有文字陣列(文字字串)。一一只為#define的support。2.9:用語解說2.9.1:key word所謂的key word是使用C語言compiler具有特殊意義的單字。2.9.2:名稱不能使用和key word相同名稱的變數名稱或函數名稱(將這些合起來,稱之為名稱)。2.9.3:compiler電腦不能執行C語言等程式語言。電腦能處理的如B8 00 10 C3 .的數字羅列而已,這稱為機器碼。compiler為將C語言等

32、程式轉換成機器碼的程式。Mini-C也進行同樣的處理。2.9.4:資料型C語言中具有將處理的資料形式表示成資料型的概念。以變數為例,short型可處理-3276832767的值。char型可處理-128127。Mini-C所有的變數皆限制為short型,因此沒有資料型的概念。2.9.5:參數程式中,為了識別各種變數和函數,因此必須具備各種不同的名稱。這些名稱稱之為參數。此外,因必須和key word區別。因此成為key word的名稱不能當做參數。下例的main和aa即為參數。 main() /函數名稱為main int aa ; /定義變數aa aa = 0 ; * * 3:Mini-C常數

33、REFERENCE * *此REFERENCE說明已經宣告過的常數。初學者REFERENCE的範例程式中也使用了幾個已經宣告過的參數。另外,BG REFERENCE中的標準搭載程式也使用了很多。此為程式設計時必須記住一定程度的項目。常數的宣告全部為大寫。 意思 重要-方向UP 1 上LEVEL 0 水平DOWN -1 下LEFT 2 左 FRONT 0 正面 RIGHT -2 右 BACK -4 後面 -方位NORTH 0 北EAST 1 東SOUTH 2 南WEST 3 西-結果SUCCESS 1 成功 FAIL 0 失敗 CONT -1 持續 -對象物的種類SPACE 0 普通的空間ERG

34、 10 ERGERG_SPACE 11 放置ERG的空間ETC 255 牆壁、地板等-樓梯的種類STEP 6 樓梯Y_STEP 7 黃色樓梯B_STEP 8 青色樓梯-命令的種類ORDER 20 命令STAIR 21 樓梯建造完成命令 FLOOR 22 地板建造完成命令 PILAR 23 柱子建造完成命令 WALL 24 牆壁建造完成命令 WINDOW 25 窗戶建造完成命令 GATE 26 門建造完成命令 -標識的種類SIGN 30 標識TURN 31 TURN指示的標識STOP 32 停止的標識R_PYLON 33 紅的標識 G_PYLON 34 綠的標識 R_FLAG 35 紅色旗子 G

35、_FLAG 36 綠色旗子 Y_FLAG 37 黃色旗子 -機器人號碼ROBOT 40 機器人ROBOT1 41 機器人1號ROBOT2 42 機器人2號ROBOT3 43 機器人3號ROBOT4 44 機器人4號ROBOT5 45 機器人5號ROBOT6 46 機器人6號ROBOT7 47 機器人7號ROBOT8 48 機器人8號ROBOT9 49 機器人9號ROBOT10 50 機器人10號ROBOT11 51 機器人11號ROBOT12 52 機器人12號ROBOT13 53 機器人13號ROBOT14 54 機器人14號ROBOT15 55 機器人15號ROBOT16 56 機器人16

36、號-顏色種類WHITE 1 白色 L_GRAY 2 淺灰色 D_GRAY 3 深灰色 YELLOW 4 黃色 BLUE 5 青色 -* * 4:Mini-C標準函數REFERENCE * *Mini-C的標準函數。使用搭配這些基本函數,即可編成程式。雖有將範例揭載,但實際的使用例子請參照BG directory中有血型的程式。標準函數一覽4.1:move(), 4.2:round( dir ),4.3:get(), 4.4:put(),4.5:receive(), 4.6:present(),4.7:buggage(), 4.8:check( dir ),4.9:code( dir ), 4.10:erg( dir ),4.11:order( dir ), 4.12:sign( dir ),4.13:robot( dir ), 4.14:peak(),4.15:seek( item ), 4.16:go( pos_level,pos_hig

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论