版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
《C程序設(shè)計》實(shí)驗指導(dǎo)
《c程序設(shè)計》教研組
上機(jī)操作簡介
用TurboC上機(jī)過程
TurboC是一個集程序編輯、編譯、連接、調(diào)試為一體的C語言程序開發(fā)軟件,具有速度快、
效率高、功能強(qiáng)等優(yōu)點(diǎn),使用非常方便。C語言程序員可在TurboC環(huán)境下進(jìn)行全屏幕編輯,利
用窗口功能進(jìn)行編譯、連接、調(diào)試、運(yùn)行、環(huán)境設(shè)置等工作。
在DOS提示符下鍵入TC并回車;或在WINDOWS環(huán)境下,點(diǎn)擊“我的電腦”或“資源管理器”
圖標(biāo),找到TC.EXE文件,直接雙擊該文件,進(jìn)入TC屏和含本產(chǎn)品版本的框,當(dāng)擊任一鍵后,版
本信息即消失,全主屏仍然保持(按ALT+ENTER,轉(zhuǎn)入全屏顯示)。
TC主屏,由四部分組成:主菜單、編輯窗口、消息窗口和功能鍵提示行。
1.TC編輯器簡介
編輯窗口中插入(Insert)模式下輸入代碼時,可用回車鍵來結(jié)束一行(TC編輯器不自動
換行)。最大行寬為248個字符,編輯器窗口寬77歹lj,如打過77歹U,窗口隨著字符的鍵入滾動。
TC屏狀態(tài)行告訴光標(biāo)在文件中行、歹上
編輯窗口里如何操作源文件
如果在調(diào)用編輯窗口之前未裝入文件,即么TC編輯器將自動命名為NONAME.C,這時編輯器
具有一切特征,可以:
?建立名為N0NAME.C或別的名字的新源文件。
?裝入編輯器一己存在的文件。
?從源文件列表中選擇一個裝入窗口進(jìn)行編輯。
?保存編輯窗口中的文件。
?把編輯器里的文件寫入一個新文件。
?消息窗口和編輯窗口之間進(jìn)行切換。
創(chuàng)建和編輯源文件,但還未編譯時,勿需消息窗口,所以可用F5把編輯窗口擴(kuò)大到整個屏
幕,再按F5還原(回到分屏模式)。
1)創(chuàng)建源文件
可用下面兩種方法建立文件:
?主菜單中,選File/New,再按回車鍵,可打開編輯窗口,文件名為NONAME.C
?主菜單中,選File/Load,裝入文件名提示框打開,鍵入新源文件名。(任何時候按熱鍵
F3也可達(dá)到相同目的)。
File/Load或File/Pick可裝入編輯一己存在的文件。
主菜單中選File/Load后,可以:
?鍵入想編輯文件的名字;例如,路徑可以接受,C:\TURBOC\TESTFILE.C
?在裝入文件名字提示框中打入過通匹符(用DOS中*和?匹配符),然后按回車鍵。*.*
顯示當(dāng)前目錄中的所有文件和其它子目錄。目錄名后跟反斜杠(\)。選擇目錄將顯示其中
的文件。例如,鍵入C:\*.,只顯示根目錄中具有該擴(kuò)展名的文件。
按Up/Down及Left/Right光標(biāo)鍵把高亮長條移到所需文件的名字上,回車;即可裝入選擇
的文件,當(dāng)前的狀態(tài)是編輯狀態(tài)。
2
還有一個熱鍵可重裝入(加載)先前裝入的文件,按ALTF6(改變窗口內(nèi)容,切換當(dāng)前編
輯器里的文件與前次加載的文件)。
2)源文件存盤
?系統(tǒng)中任何時候,按F2
?主菜單中,選擇File/Save
3)寫輸出文件
可以把編輯器里的文件寫到一個新文件,也可重寫一個已存在文件。即可以寫到當(dāng)前(缺?。?/p>
目錄,也可以寫到另外一個驅(qū)動器和目錄里。
2.菜單命令簡介
主菜單中,選File/WriteTo,然后在新名字提示窗口中,鍵入新文件全名;例如:
C:\dir\subdir\filename.ext
主菜單中包含一些用戶主要使用的條目:裝入、編輯、編譯、連接、調(diào)試及運(yùn)行TurobC程
序。這八個菜單選擇包括:File、Edit>Run>Compile、Project、Options>Debug和Break/Watcho
這里給出它們的詳細(xì)描述。主菜單中的一些下拉菜單中的任選項是為高級編程服務(wù)的,第三章再
作詳述。
1)文件菜單
文件下拉菜單提供了裝入已存在文件;建立編輯器;然后,可將其存入任何一個目錄任何一
個文件名。另外,通過文件菜單中可以改變目錄;暫時退到命令解釋程序,或者說退出Turbo。
Load(力口載)
裝入一個文件,可用類似DOS的匹配符(如*.C)來進(jìn)行列表選擇,也可裝入某一個文件,
只要給出其文件名即可。
注:若驅(qū)動器或路徑給錯了,屏幕上將出現(xiàn)一錯誤框。確認(rèn)框是在未存一個修改過的文件前
又加載另一文件的情況下出現(xiàn)的。不論哪種情況,只有敲了所需鍵之后熱鍵才起作用。
Pick(選擇)
最近裝入進(jìn)編輯窗口的8個文件列成一個表,讓用戶選擇其一,選擇后又裝入編輯器,光標(biāo)
置在上次修改過的地方。若選了“一Loadfile—”條目,屏幕上將出現(xiàn)LoadFile相應(yīng)熱鍵是
ALT_X.
2)編輯命令
編輯命令調(diào)用內(nèi)部編輯器。編輯器中按F10可返回主菜單(或用ALT加所需主菜單命令的首
字母),這時仍然保持在屏幕上,主菜單中按ESC或E,即可回到編輯器(按ALT_E也可,且任何
時候都起作用)。
編輯命令簡要說明
下面是最常用的編輯命令的一個提要:
,Up/Down、Left/Right和Pgup/PgDn鍵翻滾正文。
?CTRL_Y刪除一行。
?CTRL_T刪除一個單詞。
?CTRL_KB設(shè)置(開始)
3
?CTRLKK設(shè)置(結(jié)尾)置塊標(biāo)塊。
?CTRL_KV塊移動。
?CTRL_KC塊拷貝。
?CTRL_KY塊刪除。
3)Run運(yùn)行
Run/Run運(yùn)行程序可用Options/Argument傳遞參數(shù)。若自上次編譯后源代碼有變動,則啟
用“make”來重編譯、連接程序。(“make”是集成開發(fā)環(huán)境里的一程序開發(fā)工具。)
若不想調(diào)試程序,編譯連接時Debug/SourceDebugging開關(guān)應(yīng)置為None或Standalone。
否則,產(chǎn)生的可執(zhí)行代碼中將包含調(diào)試信息,在下面幾個方面對程序的執(zhí)行效果有所影響:
若上次編譯后未修改過源代碼:
*若設(shè)有斷點(diǎn)則Run/Run使程序運(yùn)行到下一斷點(diǎn)。否則運(yùn)行到底。
若上次編譯后修改過源代碼:
*若已通過Run/StepOver(F8)或Run/TraceInto(F7)單步執(zhí)行程序,Run/Run將在屏幕
上詢問是否要重make程序。
*按Y,將重新編譯連接程序,再從頭開始運(yùn)行。
*按2則運(yùn)行至下一斷點(diǎn)?;蜻\(yùn)行到底(若無斷點(diǎn))。
若不是在單步執(zhí)行,則在重新編譯連接程序之后,從頭開始運(yùn)行。
調(diào)試命令及熱鍵
熱鍵菜單命令說明
F4Run/TotoCursor運(yùn)行程序到光標(biāo)所在行。將初始化?調(diào)試節(jié)。
CTRL_F2Run/ProgramReset結(jié)束當(dāng)前調(diào)試節(jié),釋放分配的內(nèi)存,關(guān)閉所有文件。僅在
調(diào)節(jié)有效。
F7Run/TraceInto運(yùn)行當(dāng)前函數(shù)中的下?條語句。若遇到更低一級的函數(shù)調(diào)
用,而該函數(shù)編譯時O/C/C/OBDebugInformation開關(guān)
為On,則跟蹤進(jìn)函數(shù)內(nèi)部。將初始化一調(diào)試節(jié)。
F8Run/StepOver運(yùn)行當(dāng)前函數(shù)中的下?條語句。不跟蹤宗函數(shù)。將初始化
一調(diào)試節(jié)。
CTRL_F9Run/Run運(yùn)行程序,有或沒有調(diào)試器,必要時將編譯、連接源文件,
如經(jīng)編譯了,而連接時
Debug/SourceDebugging和O/C/OBJDebugInformation
又置為On,則程序運(yùn)行至斷點(diǎn)或運(yùn)行完。
F5放大縮小活動窗口
ALT_F5顯示轉(zhuǎn)入用戶屏,擊任意鍵返回集成環(huán)境屏
F6循環(huán)激活編輯、監(jiān)視和消息窗口
ALT_F6若編輯窗口是活動的,則轉(zhuǎn)到上次裝入編輯器的文件,若
下面的那個窗口是活動的,則進(jìn)行監(jiān)視窗口與消息窗口間
的切換
CTRLJ9Run/Run運(yùn)行程序,有或沒有調(diào)試器,必要時將編譯、連接源文件,
如經(jīng)編譯了,而連接時
Debug/SourceDebugging和O/C/OBJDebugInformation
乂置為On,則程序運(yùn)行至斷點(diǎn)或運(yùn)行完。
Project/RemoveMessages刪除消息窗口中的內(nèi)容
4
4)編譯菜單
可用編譯菜單里的條目來將源文件編譯成OBJ文件(CompiletoOBJ);生成.EXE文件(Link
EXEFile);重建(BuildAll);設(shè)置PrinmaryCFile;運(yùn)行或顯示上次編譯的信息(GetInfo)。
CompiletoOBJ編譯生成目標(biāo)碼
此命令將一.C源文件編譯成.OBJ文件,同時顯示生成的文件的名字;例如C:
EXAMPLE.OBJ,.OBJ文件名由以下兩種方法依序產(chǎn)生:
-源.C文件名;或者,
?如沒說明時,上次裝入編輯窗口的文件名。
TurboC編譯時,彈出一窗口,顯示編譯結(jié)果。編譯/組裝(make)完之后,擊任一鍵去掉
編譯窗口。若發(fā)現(xiàn)錯,則轉(zhuǎn)到消息窗口的第一條錯誤上(高亮度標(biāo)志)。
此命令熱鍵為ALT_F9o
MakeEXEFile生成執(zhí)行文件
此命令調(diào)用Project_Make來生成一.EXE文件,顯示生成的.EXE文件名,例如:
C:EXAMPLE.EXE
5)消息窗口
編譯和調(diào)試源程序時都需要通過消息窗口(MessageWindow)來察看診斷消息。TC唯一的錯
誤跟蹤機(jī)制把所有編譯文件的警告和錯誤都更在消息窗口若懸河了,同時在編輯窗口中指出錯誤
在源文件中的相應(yīng)位置(依Option/Envionment菜單中的MessageTracking命令設(shè)置而定)。
上機(jī)實(shí)驗總的目的和要求
學(xué)習(xí)程序設(shè)計,上機(jī)實(shí)驗總的目的:
(1)加深對講授內(nèi)容的理解,尤其是一些語法規(guī)定,光靠課堂講授,很難記住,通過多次上機(jī),
就能自然地、熟練地掌握。
(2)熟悉所用的計算機(jī)系統(tǒng)的操作方法,也就是了解和熟悉C語言程序開發(fā)的環(huán)境。
(3)學(xué)會匕機(jī)調(diào)試程序,要善于發(fā)現(xiàn)程序中的錯誤,并能很快地排除這些錯誤,使程序能正確
運(yùn)行。計算機(jī)技術(shù)是實(shí)踐性很強(qiáng)的技術(shù),要求從事這一領(lǐng)域的人不僅能了解和熟悉有關(guān)理
論和方法,還要自己動手實(shí)現(xiàn)。對程序設(shè)計者來說,要求會編程序并上機(jī)調(diào)試通過。因此
調(diào)試程序本身是程序設(shè)計課程的一個重要的內(nèi)容和基本要求,應(yīng)充分重視。在實(shí)驗時千萬
不要在程序通過后就認(rèn)為萬事大吉、完成任務(wù),而應(yīng)當(dāng)在已通過的程序基礎(chǔ)上作一些改動,
再進(jìn)行編譯、連接和運(yùn)行,注意觀察和分析所出現(xiàn)的情況,這樣的學(xué)習(xí)才會有真正的收獲,
才是靈活主動地學(xué)習(xí)而不是呆板被動地學(xué)習(xí)。
上機(jī)實(shí)驗一般應(yīng)包括以下幾個步驟:
(1)準(zhǔn)備好上機(jī)所需的程序。手編程序應(yīng)書寫整齊,并經(jīng)人工檢查無誤后才能上機(jī),以提高
上機(jī)效率。以程序中自己有疑問的地方,應(yīng)作出記號,以便在上機(jī)時給予注意。
(2)上機(jī)輸入和調(diào)試自已所編的程序。上機(jī)過程中出現(xiàn)的問題,除了系統(tǒng)題以外,一般應(yīng)自
已獨(dú)立處理,不要輕易問教師。尤其對“出錯信息”,應(yīng)善于自己分析判斷。這是學(xué)習(xí)調(diào)試
程序的良好機(jī)會。
使用鍵盤時,最好采用正確的指法擊鍵,為今后提高輸入速度打下基礎(chǔ)。
(3)上機(jī)結(jié)束后,應(yīng)對運(yùn)行情況作出分析,總結(jié)本次調(diào)試程序所取得的經(jīng)驗,并由指導(dǎo)老師
登記成績,此成績將作為總評成績的一部分。
下面給出八個實(shí)驗內(nèi)容,供學(xué)生上機(jī)用。
5
實(shí)驗一
目的要求
1.了解所用的計算機(jī)系統(tǒng)的基本操作方法,學(xué)會獨(dú)立使用該系統(tǒng)。
2.熟悉并掌握在該系統(tǒng)上如何編輯、編輯、連接和運(yùn)行一個C程序。
3.通過運(yùn)行簡單的C程序,初步了解C源程序的特點(diǎn)。
4.掌握C語言數(shù)據(jù)類型,熟悉如何定義一個整型、字符型、實(shí)型變量,以及對它們賦值
的方法,了解以上類型數(shù)據(jù)輸出時所用的格式轉(zhuǎn)換符。
5.學(xué)會使用C的有關(guān)算術(shù)運(yùn)算符,以及包含這些運(yùn)算符的表達(dá)式,特別是自加(++)和
自減(")運(yùn)算符的使用。
二.實(shí)驗內(nèi)容
1.學(xué)習(xí)從開機(jī)開始的操作,包括如何建立子目錄、使用操作命令列目錄、刪除文件、復(fù)
制文件等。
2.調(diào)試編輯程序。
輸入程序,以testl.c為文件名保存,并進(jìn)行編譯和運(yùn)行。
main()
(
printf("Thisisabook..”);
printf("Thisisapen.");
}
應(yīng)了解所用的系統(tǒng)是用什么命令進(jìn)行編譯和連接運(yùn)行的。編譯和連接后所得到的目標(biāo)
程序的后綴是什么形式的?若將兩個語句分行輸出,應(yīng)怎樣修改程序?
3.輸入并運(yùn)行程序:
main()
{charcl,c2;
cl=97;c2=98;
printf("%c%c\n>>,cl,c2);
printf(“枇枇\n”,cl-32,c2-32);
printf(%c,%d,cl,c2);
)
在此基礎(chǔ)上:
1)加一個printf語句,并運(yùn)行之。
printf("%d,%d”,cl,c2);
2)再將第三行改為:
intcl,c2;
6
再使之運(yùn)行。
3)再將第四行改為:
c1=300;c2=400;
再使之運(yùn)行,分析其運(yùn)行結(jié)果。
4.輸入并運(yùn)行程序:
main()
(
inti,j,m,n;
i=8;>10;
m=++i;n=++j;
printf("%d,%d,%d,%d,%d,%d”,i,j,++i,++j,m,n);
)
分別作以下改運(yùn)并運(yùn)行:
1)將第5行改為:
m=i++;n=++j;
2)程序改為
main()
{inti,j;
i=8;j=10;
printf(K%d,%dM,i++,j++);
)
3)將2)程序第4行,改為:
printf("%d,%d",++i,++j);
4)自己作任意修改。
實(shí)驗評分—指導(dǎo)老師簽名
實(shí)驗二
目的與要求
消化教科書上第5、6章的內(nèi)容,并將之靈活地運(yùn)用到實(shí)際問題中去。
1.掌握C語言邏輯量的表示方法(以0代表“假”,1代表“真”)
2.學(xué)會正確地使用關(guān)系表達(dá)式和邏輯表達(dá)式
3.掌握各種形式的條件語句(注意()和{)的使用)
4.掌握switch語句
二.實(shí)驗內(nèi)容
編制程序,解決以下問題,然后上機(jī)調(diào)試運(yùn)行程序
7
2X2+3X+1y2-l
-Q-----------——x>O,y>0
4x+4x+2y~+1
2/+3%+1.
x>0,y<0
y2+i
kl+N
x<0,y<0
2x~+3x+1
要求對任意一組x,y的確定值,均能輸出相關(guān)的信息。
2.每噸貨物每公里運(yùn)費(fèi)p與運(yùn)輸距離s有關(guān)。路途愈遠(yuǎn),每噸公里運(yùn)價愈低。公式
如下:
108<100
8100<s<150
7150<s<200
6200<s<500
5500<s
若所付的總運(yùn)費(fèi)超過5000元時,再給予九五折優(yōu)待。從鍵盤輸入貨物噸數(shù)、運(yùn)輸公
里數(shù),用開關(guān)語句(switch)計算運(yùn)費(fèi)。
實(shí)驗評分指導(dǎo)老師簽名
實(shí)驗三
目的與要求:
循環(huán)是構(gòu)造C語言程序的一種十分重要的控制結(jié)構(gòu),稍微復(fù)雜一點(diǎn)的程序就可能必須
包含循環(huán)結(jié)構(gòu),所以,必須通過聽課、復(fù)習(xí)及上機(jī)熟練地掌握第七章的有關(guān)內(nèi)容。
1.熟練地掌握while、do-while及for語句實(shí)現(xiàn)循環(huán)的方法,了解它們各自的長處,
及相互轉(zhuǎn)換的方法。
2.掌握在程序設(shè)計中用循環(huán)的方法實(shí)現(xiàn)各種算法(如窮舉、迭代、遞推等算法)。
實(shí)驗內(nèi)容
1.編程并上機(jī)調(diào)試運(yùn)行以下程序
已知:F(N)=F(N—1)—2F(N—2)+F(N—3)
F(0)=F(1)=F(2)=1
求(1)F(50)
(2)F(0)+..+F(50)
8
2.編程求100以內(nèi)的勾股數(shù)組
說明:我國古代稱直角三角形的兩條直角邊為勾和股,斜邊為弦。早在“周髀算經(jīng)”
的第?篇內(nèi)就談到“勾廣三,股修四,弦隅五”。在公元263年,我國數(shù)學(xué)家劉徽寫的“九
章算術(shù)”中有:
32+42=5252+122=13272+242=25282+152=172
的記載,凡是滿足V+/=z2的正整數(shù)數(shù)組(x,%z)就叫做一個勾股數(shù)組。
如:(3,4,5)、(5,12,13)、(7,24,25)、(8,15,17)均為合法的勾股數(shù)組。
實(shí)驗評分指導(dǎo)老師簽名
實(shí)驗四
目的與要求:
①掌握編譯預(yù)處的文件包含(^include)命令,了解#include使用的環(huán)境、格式(兩
種)與作用
②掌握函數(shù)的有關(guān)知識,學(xué)會靈活地使用函數(shù)
③掌握函數(shù)的定義方法
④掌握函數(shù)形參與實(shí)參的對應(yīng)關(guān)系及“值傳遞”方法
⑤掌握函數(shù)的嵌套調(diào)用和遞歸調(diào)用方法
⑥掌握全局變量和局部變量、靜態(tài)存儲變量和動態(tài)存儲變量的概念與存儲方法。
二.實(shí)驗內(nèi)容:
編程解決下列問題,并上機(jī)調(diào)試運(yùn)行
1.用牛頓迭代法求方程的根,系數(shù)a,6,在主函數(shù)中輸入,求x
在1附近的一個實(shí)根。求出實(shí)根后,在主函數(shù)中輸出。
說明:牛頓迭代法的公式為
x=%-系署,設(shè)迭代到IO一時結(jié)束.
2.編程求任意兩個整數(shù)a,b的最大公約數(shù)和最小公倍數(shù)。用一個函數(shù)求最大公約數(shù),
另一函數(shù)求最小公倍數(shù)。
(1)用全局變量方法:將兩個整數(shù)的最大公約數(shù)、最小公倍數(shù)都設(shè)為全局變量。
(2)不用全局變量,兩個整數(shù)在主函數(shù)中輸入,并傳送給一個函數(shù),求出最大公約
數(shù)后返回主函數(shù),然后再與兩個整數(shù)一起作為實(shí)參傳給另一個函數(shù),以求出最小公倍數(shù)。
返回到主函數(shù)輸出最大公約數(shù)和最小公倍數(shù)。
3.下面的C程序?qū)崿F(xiàn)以下函數(shù)的計算,請將其中的錯誤更正。
sinxsinysinz
sum=----------;---------F—----------\--------+----------;--------
sin(x-y)sin(x-z)sin(y—z)+sin(y-x)sin(z-x)sin(z-y)
#include"math.h"
#include“stadio.h"
9
main()
{floatx,y,z,sum;
scanf("%d%d%d”,x,y,z)
sun=f(x,y,z)+f(y,z,x)+f(z,x,y);
printf(^sum=%fw,sun);
)
floatf(a,b,c)
{value=sin(a)sin(b)*sin(c)};
return(value);
)
實(shí)驗評分指導(dǎo)老師簽名
實(shí)驗五
目的與要求
1.掌握一維數(shù)組和二維數(shù)組的定義、賦值和輸入輸出的方法。
2.掌握字符數(shù)組和字符串函數(shù)的使用。
3.掌握與數(shù)組有關(guān)的算法(例如排序)。
二.實(shí)驗內(nèi)容
1.用選擇法對10個字母排序,10個字母用scanf函數(shù)輸入。
2.輸入下列程序,并編譯、連接并運(yùn)行。
main()
(
inti,j,k,score;
intscores[10][5];
for(i=0;i<10;i++)
{j=0;
while(j<5)
{printf("Pleaseenterscore#%d:"j);
scanf("%d”,score);
if(score<0)
break;
scores[i][++j]=score;
)
scores[i][0]=j;
}
}
10
3.上述程序統(tǒng)計十個學(xué)生四門課程成績(第一列為從1開始的順序號),當(dāng)輸入成績
為負(fù)數(shù)時,退出該運(yùn)行程序。現(xiàn)要求當(dāng)輸入負(fù)數(shù)時,只不計入該學(xué)生成績,并不退出
運(yùn)行,試將上述程序改寫,實(shí)現(xiàn)此功能。
實(shí)驗評分指導(dǎo)老師簽名
實(shí)驗六指針
目的要求
1.掌握指針的概念、指針變量的定義和使用方法。
2.學(xué)會使用數(shù)組的指針和指向數(shù)組的指針變量。
3.學(xué)會使用字符串的指針和指向字符串的指針變量。
4.學(xué)會使用指向函數(shù)的指針變量。
5.了解指向指針的指針的概念及其使用方法。
二.實(shí)驗內(nèi)容
1.編寫一個strcmp函數(shù)實(shí)現(xiàn)兩個字符串的比較:
strcmp(sl,s2)
如果sl=s2,則函數(shù)返回值為0;如果slws2,返回它們兩者之間第一個不同字符的ASCII
碼差值(如“B0Y”與“BAD”,第二個字母不同,“0”與“A”之差為79-65=14);如果
sl〉s2,則輸出正值;如果sl<s2,則輸出負(fù)值。
兩個字符串sl、s2在main函數(shù)中輸入,strcmp函數(shù)的返回值也在main函數(shù)中輸出。
請編寫程序并上機(jī)調(diào)試運(yùn)行。
2.下列程序求a數(shù)組中所有素數(shù)之和,函數(shù)isprime用來判斷自變量是否為素數(shù)。
請將程序補(bǔ)充完整并上機(jī)調(diào)試運(yùn)行。
#include"stdio.h"
main()
{inti,a[10],*p=a,sum=0;
printf(/zEnter10num:\nzz);
for(i=0;i<10;i++)scanf&a[i]);
for(i=0;i<10;i++)
if(isprime(*(p+))—1)
{printfC%d”,*(a+i));
)
printf(z/\nThesum=%d\n”,sum);
)
isprime(x)
11
intx;
{inti;
for(i=2;i<=x/2;i++)if(x%i==0)return0;
實(shí)驗評分—指導(dǎo)老師簽名
實(shí)驗七結(jié)構(gòu)體與共用體
目的要求
2.掌握結(jié)構(gòu)體類型變量的定義和使用方法。
3.掌握結(jié)構(gòu)體類型數(shù)組的概念和使用方法。
4.掌握共用體的概念與使用方法。
實(shí)驗內(nèi)容
1.有5個學(xué)生,每個學(xué)生的數(shù)據(jù)包括學(xué)號、姓名、三門課程的成績,從鍵盤輸入輸
出5個學(xué)生的數(shù)據(jù),要求打印出三門課程的總平均成績,以及最高分學(xué)生的數(shù)據(jù)
(包括學(xué)號、姓名、三門課程的成績、平均分?jǐn)?shù))。
請編寫程序并上機(jī)調(diào)試運(yùn)行。
2.下面程序運(yùn)行后的正確結(jié)果是7,2,5。但程序中有概念上的錯誤和鍵入錯誤,請
改正程序中的錯誤并上機(jī)調(diào)試運(yùn)行。
structks
{inta;
int*b;
};
main()
{structkss[4],*p;
intn=l,i;
for(i=0;i<4;i++)
{s[i].a=n;
s[i].b=&s[i].a;
n=n+2;
)
P=&s[0];
printf(,z%d,%d,%d\n,z,s[3]->a,++(*p->b),*s[2]->b);
)
實(shí)驗評分指導(dǎo)老師簽名
12
實(shí)驗八
目的與要求
1.掌握文件以及緩沖文件系統(tǒng)、文件指針的概念。
2.學(xué)會使用文件的打開與關(guān)閉、文件的讀寫等操作函數(shù)。
3.學(xué)會用緩沖文件系統(tǒng)對文件進(jìn)行簡單的操作。
實(shí)驗內(nèi)容
1.下述程序用于統(tǒng)計文件中的字符個數(shù),請補(bǔ)充程序。
#include<stdio.h>
main()
{FILE*FP;
longnum=0;
if((fp=fopen(“TEST”,“rt”))=NULL)
{printf("Can'topenfile.");
return;}
while((1))num++;
⑵;
printf("num=%Id”,num);)
2.假設(shè)文件A.DAT和B.DAT中的字符都按降序排列,下述程序?qū)⑦@兩個文件合并成
一個降序排列的文件C.DAT,請將程序補(bǔ)充完整。
#include<stdio.h>
main()
{FILE*fl,*f2,*out;
intflag1=1,flag2=l;
chara,b,c;
fl=fopen("A.DAT“,“r");
f2=fopen("B.DAT",“r”);
out=fopen("C.DAT”,"w");
if(!fl;;!f2||lout)
{printf("can'topenfile.");
return;
)
do
{if(!feof(fl)&&⑴)
{a=fgetc(fl);
if(⑵)
break;
}
13
if(!feof(f2)&&flag2)
{b=fget(f2);
if(⑵)
break;
)
if(a>b)
{c=a;flagl=l;flag2=0;
)
else
{c=b;flagl=0;flag2=l;
}
fputc((3))
while(1);
fclose(fl);
fclose(f2);
fclose(out);
)
3.有5個學(xué)生,每個學(xué)生有3門課的成績,從鍵盤輸入以上數(shù)據(jù)(包括學(xué)生號,姓
名,三門功課成績),計算出平均成績,將原始數(shù)據(jù)和計算出的平均成績存放在磁盤文件
“stud"中。
實(shí)驗評分指導(dǎo)老師簽名
14
常見編譯錯誤信息
TurboC編譯程序查出的源序錯誤分為三類:致命錯誤、一般錯誤和警告。
致命錯誤出現(xiàn)很少,它通常是內(nèi)部編譯出錯。在發(fā)生致命錯誤時,編譯立即停止,必
須采取一些適當(dāng)?shù)拇胧┎⒅匦戮幾g。
一般錯誤指程序的語法錯誤、磁盤或內(nèi)存存取錯誤或命令行錯誤等。編譯程序?qū)⑼瓿?/p>
現(xiàn)階段的編譯,然后停止。編譯程序在每個階段(預(yù)處理、語法分析、優(yōu)化、代碼生成)
盡可能多地發(fā)現(xiàn)源程序中的錯誤。
警告并不阻止編譯進(jìn)行。它指出一些值得懷疑的情況,而這些情況本身乂可以合理地
成為源程序的一部分。如果在源文件中使用了與機(jī)器有關(guān)的結(jié)構(gòu),編譯也將產(chǎn)生警告信息。
編譯程序首先輸出這三類錯誤信息:然后輸出源程序文件名和發(fā)現(xiàn)出錯的行號,最后
輸出信息的內(nèi)容。
下面按字母順序分別列出這三類錯誤信息。對每?條信息,提供可能產(chǎn)生的原因和糾
正方法。
請注意錯誤信息處有關(guān)行號的一個細(xì)節(jié):編譯程序只產(chǎn)生被檢測到的信息。因為C
并不限定在正文的某行放一語句,這樣,真正產(chǎn)生錯誤的行可能在編譯指出的前一行或幾
行。在下面的信息列表中,我們指出了這種可能。
致命錯誤
1.Badcallofin-linefunction內(nèi)部函數(shù)非法調(diào)用
在使用一個宏定義的,內(nèi)部函數(shù)時,沒能正確調(diào)用。一個內(nèi)部函數(shù)以兩個劃線(_一)
開始和結(jié)束。
2.Irreducibleexpressiontree不可約表達(dá)式樹
這種錯誤指的是文件行中的表達(dá)式使得代碼生成無法為它產(chǎn)生代碼。這種表達(dá)式必須
避免使用。如果編譯時總遇到這種情況,應(yīng)該通知Borland公司。
3.Registeralloctionfailure存儲器分配失效
這種錯誤指的是源文件行中的表達(dá)式太復(fù)雜,代碼生成程序無法為它生成代碼。此時
應(yīng)簡化這種繁雜的表達(dá)式或干脆避免使用它。如果編譯時總遇到這種錯誤,應(yīng)通知Borland
公司。
一般錯誤
1.ftoperatornotfollowedbymactoargumentname
#運(yùn)算符后沒跟宏變元名。在宏定義中,#用于標(biāo)識一宏變元名串,“#”后必須跟一
宏變元名。
2.'xxxxxxxx'notanargument
'xxxxxxxx'不是函數(shù)參數(shù)。在源程序是將該標(biāo)識符定義為一個函數(shù)參數(shù),但此標(biāo)識
符沒有函數(shù)表中出現(xiàn)。
3.Ambiguoussymbol'xxxxxxxx'
二義性符號'xxxxxxxx'。兩個或多個結(jié)構(gòu)的某一域名相同,但具有的偏移、類型不
15
同。在變量或表達(dá)式中引用該域而未帶結(jié)構(gòu)名時,將產(chǎn)生二義性,此時需修改某個域名或
在引用時加上結(jié)構(gòu)名。
4.Argument#missingname
參數(shù)#名丟失。參數(shù)名已脫離用于定義函數(shù)的函數(shù)原型。如果函數(shù)或原型定義必須包
含所有的參數(shù)名。
5.Argumentlistsyntaxerror
參數(shù)表出列語錯誤。函數(shù)調(diào)用的參數(shù)間必須以逗號隔開,并以?右括號結(jié)束。若源文
件中含有一個其后不是逗號也不是右括號的參數(shù),則出錯。
6.Arrayboundsmissing
數(shù)組的界線符'1'丟失。在源文件中定義了一個數(shù)組,但此數(shù)組沒有以一右方括號
結(jié)束。
7.Arraysizetoolarge
數(shù)組長度太大。定義的長度太大,可用內(nèi)存不夠。
8.Assemblerstatementtoolong
匯編語句太長。內(nèi)部匯編語句最長不能超過480字節(jié)。
9.Badconfigurationfile
配置文件不正確。TURBOC.CFG配置文件中包含不是合適命令行選擇項的非注解文字。
配置文件命令選擇必須以一短橫線(一)開始。
10.Badfilenameformatinincludedirective
包含指令中文件名格式不正確。包含文件名必須引用("filename』")或尖括號
(〈filename」〉)括起來,否則將產(chǎn)生本類錯誤。如果使用了宏,則產(chǎn)生的擴(kuò)展文本也不
正確(因為無引號)。
11.Badifdefdirectivesyntax
ifdef指令語法錯誤。#ifdef必須以單個標(biāo)識符(只此一個)作為該指令的體。
12.Badifndefdirectivesyntax
ifndef指令語法錯誤。#ifndef必須以單個標(biāo)識符(只此一個)作為該指令的體。
13.Badundefdirectivesyntax
undef指令語法錯誤。#undef指令必須以單個標(biāo)識符(只此一個)作為該指令的體。
14.Badfilesizesyntax
位字段長語法錯誤。一個位字段長必須是1?16位的常量表達(dá)式。
15.Callofnon-function
調(diào)用未定義函數(shù)。正被調(diào)用的函數(shù)無定義,通常是由于不正確的函數(shù)聲明或函數(shù)名拼
錯造成的。
16.Cannotmodifyaconstobject
不能修改個常量對象。對定義為常量的對象進(jìn)行不含法操作(如常量賦值)引起本
錯誤。
17.Caseoutsideofswitch
Case出現(xiàn)在switch外。編譯程序發(fā)現(xiàn)Case語句外面,通常是由于括號不匹配造成
的。
16
18.Casestatementmissing
Case語句漏掉。Case語句必須包含一以冒號終結(jié)的常量表達(dá)式。可能的原因是丟了
冒號或在冒號前多了別的符號。
19.Castsyntaxerror
Cast語法錯誤。Cast中包含了?些不正確的符號。
20.Characterconstanttoolong
字符常量太長。字符常量只能是個或兩個字符長。
21.Compoundstatementmissing
復(fù)合語句漏掉。編譯程序掃描到源文件末時,未發(fā)現(xiàn)結(jié)束大括號,通常是由于大括號
不匹配造成的。
22.Conflictingtypemodifiers
類型修飾符沖突。對同一指針,只能指定一種變址修飾符(如near或far);而對
于同?函數(shù),也只能給出,種語言修飾符(如cdecl、pascal或interrupt)。
23.Constantexpressionrequired
要求常量表達(dá)式。數(shù)組的大小必須是常量,本錯誤通常是由于#define常量的拼寫出
錯而引起的。
24.Couldnotfndfile'xxxxxxx.xxxx'
找不到'xxxxxxxx.xxx,文件。編譯程序找不到命令行上給出的文件。
25.Declarationmissing
說明漏掉在源文件中包含了一個struct或union域聲明,但后面漏掉了分號
(;)。
26.Declarationneedstypeorstorageclass
說明必須給出類型或存儲類。說明必須飲食?個類型或?個存儲類,以下說明是不正
確的:i,j;
27.Declarationsyntaxerror
聲明出現(xiàn)語法錯誤。在源文件中,某個聲明丟失了某些符號或有多余的符號。
28.Defaultoutsideofswitch
Default在switch外出現(xiàn)。編譯程序發(fā)現(xiàn)default語句出現(xiàn)在switch語句之外,通
常是由于括號不匹配造成的。
29.Definedirectiveneedsanidentifer
Define指令必須有一-個標(biāo)識符。#Define后面的第?個非空格符必須是?標(biāo)識符,若
編譯程序發(fā)現(xiàn)一些其它字符,則出現(xiàn)本錯誤。
30.DivisionbyZero
除數(shù)為零。源文件的常量表達(dá)式中,出現(xiàn)除數(shù)為零的情況。
31.Dostatementmusthavewhile
Do語句中必須有while。源文件中包含一無while關(guān)鍵字的do語句時,出現(xiàn)本錯誤。
32.Do-whilestatementmissing(
Do—while語句中漏掉了(o在do語句中,編譯程序發(fā)現(xiàn)while關(guān)鍵字后無左括號。
33.Do-whilestatementmissing)
17
Do-while語句中漏抻了)。在do語句中,編譯程序發(fā)現(xiàn)條件表達(dá)式后無右括號。
34.Do一whilestatementmissing;
Do-while語句中漏掉了分號。在do語句中的條件表達(dá)式中,編譯程序發(fā)現(xiàn)右括號
后面無分號。
35.DuplicateCase
Case的情況不唯一。Switch語句的每個case必須有一個唯一的常量表達(dá)式值。
36.Enumsyntaxerror
Enum語法出現(xiàn)錯誤。Enum說明的標(biāo)識符表的格式不對。
37.Enumerationconstantsyntaxerror
枚舉常量語法錯誤。賦給enum類型變量的表達(dá)式值不為常量。
38.ErrorDirective:xxxx
Error指令:xxxxo源文件處理指令時,顯示該指令指出的信息。
39.Errorwritingoutputfile
寫輸出文件出現(xiàn)錯誤。通常是由于磁盤空間滿造成的,盡量刪掉一些不必要的文件。
40.Expressionsyntax
表達(dá)式語法錯誤。當(dāng)編譯程序分析一表達(dá)式并發(fā)現(xiàn)一些嚴(yán)重錯誤時,出現(xiàn)本錯誤,通
常是由于兩個連續(xù)操作符、括號不匹配或缺少括號、前?語句漏掉了分號等引起的。
41.Extraparameterincall
調(diào)用時出現(xiàn)多余參數(shù)。調(diào)用函數(shù)時,其實(shí)際參數(shù)個數(shù)多于函數(shù)定義中的參數(shù)個數(shù)。
42.Extraparameterincalltoxxxxxxxx
調(diào)用xxxxxxxx函數(shù)時出現(xiàn)了多余的參數(shù)。其中該函數(shù)由原型定義。
43.Filenametoolong
文件名太長。#include指令給出的文件名太長,編譯程序無法處理。DOS下的文件
名不能超過64個字符。
44.Forstatenentmissing(
For語句漏掉"("。編譯程序發(fā)現(xiàn)在for關(guān)鍵字后缺少左括號。
45.Forstatemenmissing)
For語句缺少")在for語句中,編譯程序發(fā)現(xiàn)在控制表達(dá)式后缺少右括號。
46.Forstatementmissing;
For語句缺少":"。在for語句中,編譯程序發(fā)現(xiàn)在某個表達(dá)式后缺少分號。
47.Functioncallmissing)
函數(shù)調(diào)用缺少")函數(shù)調(diào)用的參數(shù)表有幾種語法錯誤,如左括號漏掉或括號不匹
配。
48.Functiondefinitionoutofplace
函數(shù)定義位置錯誤。函數(shù)定義不可出現(xiàn)在另函數(shù)內(nèi)。函數(shù)內(nèi)的任何說明,只要以類
似于帶有一個參數(shù)表的函數(shù)開始,就被認(rèn)為是一個函數(shù)定義。
49.Functiondoesn'ttakeavariablenumberofargument
函數(shù)不接受可變的參數(shù)個數(shù)。源文件中的某個函數(shù)內(nèi)使用了va-start宏,此函數(shù)不
能接受可變數(shù)量的參數(shù)。
18
50.Gotostatementmissinglabel
Goto語句缺少標(biāo)號。在goto關(guān)鍵字后面必須有一個標(biāo)識符。
51.Ifstaementmissing(
If語句缺少"在if語句中,編譯程序發(fā)現(xiàn)if關(guān)鍵字后面缺少左括號。
52.Ifstatementmissing)
If語句缺少“)在if語句中,編譯程序發(fā)現(xiàn)測試表達(dá)式后缺少右括號。
53.Illegalcharacter'('(oxXX)
z
非法字符'((oxXX)o編譯程序發(fā)現(xiàn)輸入文件中有一些非法字符。以十六進(jìn)制方式
打印該字符。
54.Illegalinitialization
非法初始化必須是常量表達(dá)式后?個全局變量extern或static的地址加減-常量。
55.Illegaloctaldigit
非法八進(jìn)制數(shù)。編譯程序發(fā)現(xiàn)在?個八進(jìn)制常數(shù)中包含了非八進(jìn)制數(shù)字(8或9)。
56.Illegalpointersubtraction
非法指針相減。這是由于試圖以一個非指針變量減去一?個指針變量而造成的。
57.Illegalstructureoperation
非法結(jié)構(gòu)操作。結(jié)構(gòu)只能使用(.)、取地址(&)和賦值(=)操作符,或作為函數(shù)的
參數(shù)傳遞。當(dāng)編譯程序發(fā)現(xiàn)結(jié)構(gòu)使用了其它操作符時,出現(xiàn)本錯誤。
58.Illegaluseoffloatingpoint
浮點(diǎn)運(yùn)算非法。浮點(diǎn)運(yùn)算操作數(shù)不允許出現(xiàn)在移位、按位置邏輯操作、條件(?:)、
間接(*)以及其它?些操作符中。編譯程序發(fā)現(xiàn)上述操作符中使用了浮點(diǎn)操作數(shù)時,出
現(xiàn)本錯誤。
59.Illegaluseofpointer
指針使用非法。指針只能在加、減、賦值、比較、間接(*)或箭頭(一)操作中使
用。如用其它操作符,則出現(xiàn)本錯誤。
60.Improperuseofatypedefsymbol
typedef符號使用不當(dāng)?源文件中使用了一個符號,符號變量應(yīng)在一個表達(dá)式中出現(xiàn)。
檢查一下此符號的說明和可能的拼寫錯誤。
61.In-lineassemblynotallowed
內(nèi)部匯編語句不允許。源文件中含有直接插入的匯編語句,若在集成環(huán)境下進(jìn)行編譯,
則出現(xiàn)本錯誤。必須使用TCC命令行編譯此源文件。
62.Incompatiblestorageclass
不相容的存儲類。源文件的一個函數(shù)定義中使用了extern關(guān)鍵字,而只有static(或
根本沒有存儲類型)是允許的。
63.Incompatibletypeconversion
不相容的類型轉(zhuǎn)換。源文件中試圖把一種類型轉(zhuǎn)換成另一種類型。但這兩種類型是不
相容的。如函數(shù)與非函數(shù)間轉(zhuǎn)換、?種結(jié)構(gòu)或數(shù)組與一種標(biāo)準(zhǔn)類型轉(zhuǎn)換、浮點(diǎn)數(shù)和指針間
轉(zhuǎn)換等。
64.Incorrectcommandlineargument:xxxxxxxx
19
不正確的命令行參數(shù):XXXXXXXXo編譯程序認(rèn)為此命令行參數(shù)是非法的。
65.Incorrectconfigurationfileargument:xxxxxxxx
不正確的配置文件參數(shù):XXXXXXXX(-),編譯程序認(rèn)為此配置文件是非法的。檢查一
下前面的短橫線(-)
66.Incorrectnumberformat
不正確的數(shù)據(jù)格式。編譯程序發(fā)現(xiàn)在十六進(jìn)制數(shù)中出現(xiàn)十進(jìn)制小數(shù)點(diǎn)。
67.Incoorectuseofdefault
default不正確使用。編譯程序發(fā)現(xiàn)default關(guān)鍵字后缺少分號。
68.Initializersyntaxerror
初始化語法錯誤。初始化過程缺少或多了操作符,括號不匹配或其它一些不正常情況。
69.Invalidindrection
無效的間接運(yùn)算。間接運(yùn)算操作符(*)要求非空指針作為操作分量。
70.Invatidmacroargumentseperator
無效的宏參數(shù)分隔符。在宏定義中,參數(shù)必須用逗號相隔。編譯程序發(fā)現(xiàn)在參數(shù)名后
面有其它非法字符,出現(xiàn)本錯誤。
71.Invalidpointeraddition
無效的指針相加。源程序中試圖把兩個指針相加。
72.Invaliduseofarray
箭頭使用錯。在箭頭(f)操作符后必須跟一標(biāo)識符。
73.Invaliduseofdot
點(diǎn)使用錯。在點(diǎn)(.)操作符后必須跟-標(biāo)識符。
74.Lvaluerequired
賦值請求。賦值操作符的左邊必須是一個地址表達(dá)式,包括數(shù)值變量、指針變量、結(jié)
構(gòu)引用域、間接指針和數(shù)組分量。
75.Macroargumentsyntaxerror
宏參數(shù)語法錯誤。宏定義中的參數(shù)必須是一個標(biāo)識符。編譯程序發(fā)現(xiàn)所需的參數(shù)不是
標(biāo)識符的字符,則出現(xiàn)本錯誤。
76.Macroexpansiontoolong
宏擴(kuò)展太長。一個宏擴(kuò)展不能多于4096個字符。當(dāng)宏遞歸擴(kuò)展自身時,常出現(xiàn)本錯
誤。宏不能對自身進(jìn)行擴(kuò)展。
77.Maycompileonlyonefilewhenanoutputfilenameisgiven
給出一個輸出文件名時,可能只編譯一個文件。在命令行編譯中使用-。選擇,只允許
一個輸出文件名。此時,只編譯第一個文件,其它文件被忽略。
78.Mismatchnumberofparametersindefinition
定義中參數(shù)個數(shù)不匹配。定義中的參數(shù)和函數(shù)原型中提供的信息不匹配。
79.Miaplacedbreak
break位置錯誤。編譯程序發(fā)現(xiàn)break語句在switch語句或循環(huán)結(jié)構(gòu)外。
80.Misplacedcontinue
Continue位置錯。編譯程序發(fā)現(xiàn)continue語句在循環(huán)結(jié)構(gòu)外。
20
81.Misplaceddecimalpoint
十進(jìn)制小數(shù)點(diǎn)位置錯。編譯程序發(fā)現(xiàn)浮點(diǎn)常數(shù)的指數(shù)部分有一個十進(jìn)制小數(shù)點(diǎn)。
82.Misplacedelse
else位置錯。編譯程序發(fā)現(xiàn)else語句缺少與之相匹配的if語句。本錯誤的產(chǎn)生,除
了由于else多余外,還有可能是由于有多余的分號、漏寫了大括號或前面的if語句出現(xiàn)
語法錯誤而引起。
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年人工智能合作協(xié)議協(xié)議標(biāo)的及合作范圍
- 2024年北京物業(yè)公司股權(quán)轉(zhuǎn)讓價格、流程及合同條件
- 2024證券合同模板范文
- 2024年城市軌道交通建設(shè)委托監(jiān)理合同
- 2024機(jī)械承包合同范文
- 2024年企業(yè)并購居間協(xié)議
- 2024贈與人能否任意撤銷贈與合同
- 2024年工商手續(xù)代辦全包合同
- 河北省2024年高考政治小題每日一練7
- 2024-2025學(xué)年高中歷史第二單元西方人文精神的起源及其發(fā)展第6課文藝復(fù)興和宗教改革課后作業(yè)含解析新人教版必修3
- 機(jī)關(guān)工作人員考勤表Excel模板
- 日照市重點(diǎn)支柱產(chǎn)業(yè)情況
- 兒童過敏性休克ppt課件
- 三級配電箱電路圖(共2頁)
- 安全生產(chǎn)文明施工措施費(fèi)用明細(xì)報表范文
- 江西省職業(yè)培訓(xùn)補(bǔ)貼范圍及標(biāo)準(zhǔn)-江西省職業(yè)技能鑒定指導(dǎo)中心
- 七年級生物上冊(濟(jì)南版)知識點(diǎn)歸納
- 腹腔鏡設(shè)備的使用和保養(yǎng)PPT課件
- D600變頻器說明書
- 上海英皇明星城初步設(shè)計(圖文)
- PRTV方案(完整范本)
評論
0/150
提交評論