版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
C語言基礎(chǔ)教程歡迎參加C語言基礎(chǔ)教程學(xué)習(xí)!C語言作為現(xiàn)代編程的基石,以其高效、靈活和強(qiáng)大的特性成為眾多程序員的首選語言。本課程旨在帶領(lǐng)初學(xué)者系統(tǒng)掌握C語言的基本概念和編程技巧,從零基礎(chǔ)到能夠獨(dú)立編寫程序。無論您是計(jì)算機(jī)科學(xué)專業(yè)的學(xué)生,還是對編程感興趣的愛好者,這門課程都將為您打開編程世界的大門。通過理論結(jié)合實(shí)踐的學(xué)習(xí)方法,我們將一步步揭開C語言的神秘面紗。課程簡介C語言發(fā)展史詳細(xì)了解C語言從誕生到發(fā)展的完整歷程,掌握其在編程語言發(fā)展史上的重要地位和里程碑意義。透過歷史視角,理解C語言設(shè)計(jì)哲學(xué)和核心價(jià)值。應(yīng)用領(lǐng)域探索C語言在操作系統(tǒng)開發(fā)、嵌入式系統(tǒng)、游戲編程、應(yīng)用軟件等多個(gè)領(lǐng)域的廣泛應(yīng)用。通過具體案例,認(rèn)識C語言的實(shí)際價(jià)值和市場需求。課程學(xué)習(xí)目標(biāo)明確本課程的具體學(xué)習(xí)目標(biāo),包括基礎(chǔ)語法掌握、算法設(shè)計(jì)能力、問題解決思維和實(shí)際項(xiàng)目開發(fā)能力等多個(gè)維度的能力培養(yǎng)計(jì)劃。為什么學(xué)習(xí)C語言與操作系統(tǒng)、嵌入式結(jié)合直接操作硬件資源計(jì)算機(jī)核心技能理解計(jì)算機(jī)工作原理程序員必備基礎(chǔ)構(gòu)建堅(jiān)實(shí)編程思維C語言是連接高級編程語言與底層硬件的橋梁,學(xué)習(xí)C語言能夠幫助我們深入理解計(jì)算機(jī)的工作原理。它不僅是眾多現(xiàn)代編程語言的基礎(chǔ),更是進(jìn)入嵌入式開發(fā)、系統(tǒng)編程等領(lǐng)域的必經(jīng)之路。通過C語言學(xué)習(xí),您將獲得扎實(shí)的編程思維和問題解決能力,這些能力將在您未來的編程道路上發(fā)揮不可替代的作用。無論技術(shù)如何變革,C語言的核心價(jià)值始終不變。C語言發(fā)展簡史1972年誕生于貝爾實(shí)驗(yàn)室由丹尼斯·里奇(DennisRitchie)創(chuàng)造,最初用于開發(fā)UNIX操作系統(tǒng)。C語言融合了高級語言的效率和低級語言的能力,創(chuàng)造性地解決了系統(tǒng)編程的難題。ANSI標(biāo)準(zhǔn)C1989年,美國國家標(biāo)準(zhǔn)協(xié)會(huì)(ANSI)發(fā)布了C語言的第一個(gè)官方標(biāo)準(zhǔn),稱為ANSIC或C89。此后又有C99、C11等標(biāo)準(zhǔn)發(fā)布,不斷增強(qiáng)語言功能?,F(xiàn)代應(yīng)用如今,C語言廣泛應(yīng)用于操作系統(tǒng)、嵌入式系統(tǒng)、游戲引擎等領(lǐng)域,成為計(jì)算機(jī)科學(xué)教育的基礎(chǔ)課程,影響了眾多現(xiàn)代編程語言的設(shè)計(jì)。C語言編譯與平臺主流編譯器C語言程序需要通過編譯器轉(zhuǎn)換為機(jī)器碼才能執(zhí)行。當(dāng)前主流編譯器包括:GCC(GNUCompilerCollection):開源免費(fèi),跨平臺支持VisualStudio:微軟開發(fā),集成開發(fā)環(huán)境完善Clang:基于LLVM,編譯速度快,錯(cuò)誤提示友好跨平臺特性C語言的一大優(yōu)勢是跨平臺性能,同一份代碼經(jīng)過不同平臺的編譯器編譯后,可以在不同操作系統(tǒng)上運(yùn)行。這使得C語言成為開發(fā)跨平臺應(yīng)用的理想選擇。標(biāo)準(zhǔn)C庫的存在保證了跨平臺代碼的兼容性,但開發(fā)者需要注意平臺特定API的使用可能導(dǎo)致的兼容性問題。C語言開發(fā)環(huán)境介紹Windows環(huán)境Dev-C++:輕量級IDE,適合初學(xué)者VisualStudio:功能全面,調(diào)試工具強(qiáng)大Code::Blocks:跨平臺IDE,配置簡單MinGW:Windows下的GCC移植版本Linux環(huán)境GCC/G++:命令行編譯工具Vim/Emacs:強(qiáng)大的文本編輯器EclipseCDT:圖形化集成開發(fā)環(huán)境VSCode+插件:輕量級但功能強(qiáng)大MacOS環(huán)境Xcode:蘋果官方IDECLion:JetBrains開發(fā)的跨平臺IDETerminal+GCC:命令行編譯方式VSCode:配合C/C++插件使用環(huán)境搭建與基本配置GCC安裝方法Windows:下載MinGW或Cygwin安裝包Linux:使用包管理器(apt-getinstallgcc)MacOS:安裝Xcode命令行工具開發(fā)工具選擇建議初學(xué)者推薦使用VSCode+GCC組合或集成度高的IDE如Dev-C++。關(guān)鍵是確保工具鏈完整,包括編輯器、編譯器和調(diào)試器。選擇符合個(gè)人習(xí)慣的工具,降低學(xué)習(xí)曲線。配置第一個(gè)項(xiàng)目創(chuàng)建工作目錄,編寫簡單的HelloWorld程序,配置編譯器路徑和參數(shù),確保能夠成功編譯并運(yùn)行。熟悉項(xiàng)目結(jié)構(gòu)和基本操作流程,為后續(xù)學(xué)習(xí)打下基礎(chǔ)。第一個(gè)C語言程序HelloWorld代碼示例#includeintmain(){printf("Hello,World!\n");return0;}這是每個(gè)程序員學(xué)習(xí)新語言的第一個(gè)程序。它簡單但包含了C語言程序的基本結(jié)構(gòu)和組成部分。程序結(jié)構(gòu)詳解頭文件包含:#include主函數(shù):intmain()函數(shù)體:{}輸出函數(shù):printf()返回語句:return0;每個(gè)部分都有特定的語法和功能,是C語言程序的基礎(chǔ)組成。編寫與編譯程序流程編寫源代碼使用文本編輯器創(chuàng)建.c文件,編寫符合C語言語法的源代碼。這個(gè)階段需要注意代碼風(fēng)格和可讀性,避免語法錯(cuò)誤。源文件是編譯過程的輸入。編譯源文件使用編譯器(如GCC)將源代碼轉(zhuǎn)換為目標(biāo)文件。編譯過程包括預(yù)處理、編譯和匯編三個(gè)步驟。編譯器會(huì)檢查語法錯(cuò)誤并生成中間目標(biāo)文件(.o或.obj)。鏈接生成可執(zhí)行文件鏈接器將目標(biāo)文件與所需的庫文件鏈接,生成最終的可執(zhí)行文件。這個(gè)階段會(huì)解決函數(shù)調(diào)用、變量引用等外部依賴問題,生成可以直接運(yùn)行的程序。C語言的基本結(jié)構(gòu)main函數(shù)講解main函數(shù)是C程序的入口點(diǎn),所有C程序必須包含一個(gè)main函數(shù)。程序從main函數(shù)的第一條語句開始執(zhí)行,一直到main函數(shù)結(jié)束。main函數(shù)返回一個(gè)整數(shù)值,通常0表示程序正常結(jié)束。頭文件(#include)頭文件包含函數(shù)聲明和宏定義,使用#include指令導(dǎo)入。標(biāo)準(zhǔn)庫頭文件使用尖括號<>,自定義頭文件使用雙引號""。頭文件的正確使用對于程序的模塊化和可維護(hù)性至關(guān)重要。語句結(jié)束符C語言中每個(gè)語句必須以分號(;)結(jié)束,這是語法規(guī)則的一部分。忘記添加分號是初學(xué)者常見的錯(cuò)誤之一。復(fù)合語句(由{}括起來的多條語句)作為一個(gè)整體,不需要在}后加分號。注釋的使用單行注釋(//)//這是一個(gè)單行注釋inta=10;//變量初始化單行注釋以雙斜杠(//)開始,注釋內(nèi)容一直延續(xù)到行尾。這種注釋方式簡潔明了,適合簡短的說明和行內(nèi)注釋。在C99標(biāo)準(zhǔn)之前不被支持,現(xiàn)在已成為主流。多行注釋(/*...*/)/*這是一個(gè)多行注釋可以跨越多行*/多行注釋以/*開始,以*/結(jié)束,中間可以包含任意內(nèi)容,包括換行。這種方式適合較長的說明文檔、函數(shù)說明或臨時(shí)禁用代碼塊。是C語言最初支持的注釋方式。良好的注釋習(xí)慣能夠提高代碼可讀性和維護(hù)性。注釋應(yīng)該解釋代碼的"為什么"而不是"做了什么",因?yàn)楹笳咄ǔ拇a本身就能看出來。避免過度注釋或注釋與代碼不同步的情況。標(biāo)識符與關(guān)鍵字關(guān)鍵字列表C語言有32個(gè)關(guān)鍵字,它們是語言的保留字,不能作為標(biāo)識符使用:auto、break、case、char、const、continue、default、do、double、else、enum、extern、float、for、goto、if、int、long、register、return、short、signed、sizeof、static、struct、switch、typedef、union、unsigned、void、volatile、while合法標(biāo)識符命名規(guī)則只能由字母、數(shù)字和下劃線組成不能以數(shù)字開頭區(qū)分大小寫不能是C語言的關(guān)鍵字注意事項(xiàng)避免使用雙下劃線或下劃線加大寫字母開頭的標(biāo)識符標(biāo)識符應(yīng)當(dāng)有意義,反映其用途遵循一致的命名風(fēng)格變量與常量變量聲明/初始化數(shù)據(jù)的臨時(shí)存儲(chǔ)空間常量定義不可修改的固定值命名習(xí)慣清晰反映數(shù)據(jù)含義變量是程序中可以改變值的存儲(chǔ)單元,而常量是固定不變的值。C語言中,變量聲明指定了變量的類型和名稱,如:intcount;變量初始化則是在聲明的同時(shí)賦予初值,如:intcount=0;常量有兩種定義方式:使用const關(guān)鍵字(constintMAX=100;)或通過預(yù)處理器宏定義(#defineMAX100)。良好的命名習(xí)慣是使用小寫字母為變量命名,全大寫字母為常量命名,多個(gè)單詞用下劃線連接或使用駝峰命名法。數(shù)據(jù)類型概述基本數(shù)據(jù)類型C語言提供了多種基本數(shù)據(jù)類型,包括整型(int,short,long)、浮點(diǎn)型(float,double)、字符型(char)等。每種類型有特定的內(nèi)存占用和表示范圍。變量內(nèi)存分布每個(gè)變量在內(nèi)存中占據(jù)特定大小的空間,如int通常占4字節(jié),char占1字節(jié)。了解內(nèi)存分布有助于優(yōu)化程序性能和解決內(nèi)存相關(guān)問題。類型轉(zhuǎn)換不同類型數(shù)據(jù)之間可以進(jìn)行轉(zhuǎn)換,分為隱式轉(zhuǎn)換(自動(dòng)進(jìn)行)和顯式轉(zhuǎn)換(通過強(qiáng)制類型轉(zhuǎn)換操作符)。類型轉(zhuǎn)換需要注意可能的精度損失和溢出問題。整型與實(shí)型數(shù)據(jù)類型字節(jié)數(shù)取值范圍應(yīng)用場景short2-32768~32767節(jié)省內(nèi)存的小整數(shù)int4-2^31~2^31-1常用整數(shù)類型long4或8取決于系統(tǒng)大整數(shù)處理float46~7位有效數(shù)字一般精度浮點(diǎn)計(jì)算double815~16位有效數(shù)字高精度浮點(diǎn)計(jì)算整型變量用于存儲(chǔ)整數(shù),C語言提供不同大小的整型以適應(yīng)不同的需求。實(shí)型(浮點(diǎn)型)變量用于存儲(chǔ)帶小數(shù)點(diǎn)的數(shù)值,float提供單精度浮點(diǎn)數(shù),而double提供雙精度浮點(diǎn)數(shù)。在需要精確計(jì)算的場景下,需要注意浮點(diǎn)數(shù)的精度問題。字符型和枚舉類型char類型及處理char類型在C語言中用于存儲(chǔ)單個(gè)字符,實(shí)際上是一個(gè)小整數(shù),通常占用1個(gè)字節(jié)。字符常量用單引號括起來,如'A'。字符變量可以進(jìn)行算術(shù)運(yùn)算,因?yàn)樗鼈儗?shí)際上是ASCII碼值。chargrade='A';printf("%c的ASCII碼是%d\n",grade,grade);//輸出:A的ASCII碼是65ASCII碼表ASCII(美國信息交換標(biāo)準(zhǔn)代碼)是計(jì)算機(jī)中最常用的字符編碼系統(tǒng),定義了128個(gè)字符的編碼。常見的ASCII碼包括:數(shù)字0-9:48-57大寫字母A-Z:65-90小寫字母a-z:97-122枚舉類型enumWeek{Mon,Tue,Wed,Thu,Fri,Sat,Sun};enumWeektoday=Wed;//Wed的值為2(默認(rèn)從0開始計(jì)數(shù))枚舉類型用于定義一組具有離散值的常量,提高了代碼的可讀性和可維護(hù)性。C語言標(biāo)準(zhǔn)輸入輸出printf()格式化輸出printf("整數(shù):%d\n浮點(diǎn)數(shù):%f\n字符:%c\n",10,3.14,'A');printf函數(shù)用于格式化輸出,第一個(gè)參數(shù)是格式化字符串,包含普通文本和格式說明符。常用的格式說明符有:%d-十進(jìn)制整數(shù)%f-浮點(diǎn)數(shù)%c-字符%s-字符串scanf()基本用法intage;floatheight;scanf("%d%f",&age,&height);scanf函數(shù)用于從標(biāo)準(zhǔn)輸入讀取數(shù)據(jù),格式說明符類似printf。注意要傳遞變量的地址(使用&運(yùn)算符)而不是變量本身。當(dāng)讀取字符串時(shí),不需要使用&運(yùn)算符。輸入輸出是程序與用戶交互的基礎(chǔ)。合理使用格式說明符可以提高輸出的可讀性和美觀性。在處理用戶輸入時(shí),一定要進(jìn)行有效性檢查,防止非法輸入導(dǎo)致程序崩潰。轉(zhuǎn)義字符使用常見轉(zhuǎn)義字符轉(zhuǎn)義字符以反斜杠\開頭,用于表示特殊字符或控制字符。常見的轉(zhuǎn)義字符包括:\n(換行)、\t(制表符)、\r(回車)、\b(退格)、\'(單引號)、\"(雙引號)、\\(反斜杠)等。在字符串中的應(yīng)用轉(zhuǎn)義字符在字符串常量中經(jīng)常使用,用于格式化輸出或表示無法直接鍵入的字符。例如,使用\n來分行顯示文本,使用\t來對齊輸出內(nèi)容,使用\"在字符串中插入雙引號。格式化輸出案例通過組合使用轉(zhuǎn)義字符,可以創(chuàng)建格式化良好的輸出。例如,制作表格輸出時(shí)使用\t對齊列,使用\n分隔行;顯示路徑時(shí)使用\\表示反斜杠;顯示引用文本時(shí)使用\"包圍文本內(nèi)容。熟練掌握轉(zhuǎn)義字符的使用,可以使程序輸出更加美觀和專業(yè)。在調(diào)試和用戶交互中,合理的輸出格式能夠大大提高程序的可用性和用戶體驗(yàn)。運(yùn)算符初識C語言中的運(yùn)算符是執(zhí)行特定操作的符號。算術(shù)運(yùn)算符(+、-、*、/、%)用于執(zhí)行基本的數(shù)學(xué)運(yùn)算,其中%是取余運(yùn)算,只適用于整數(shù)。賦值運(yùn)算符(=)用于將值賦給變量,還有復(fù)合賦值運(yùn)算符(+=、-=、*=、/=、%=)用于簡化賦值和運(yùn)算的組合。關(guān)系運(yùn)算符(>、<、>=、<=、==、!=)用于比較兩個(gè)值,返回結(jié)果為真(1)或假(0)。在C語言中,任何非零值被視為真,而0被視為假。使用這些運(yùn)算符時(shí),要注意運(yùn)算優(yōu)先級和結(jié)合律,必要時(shí)使用括號明確表達(dá)式的計(jì)算順序。邏輯與位運(yùn)算符邏輯運(yùn)算符邏輯與(&&):兩邊都為真時(shí)結(jié)果為真邏輯或(||):至少一邊為真時(shí)結(jié)果為真邏輯非(!):真變假,假變真用于組合多個(gè)條件表達(dá)式,常用于if語句和循環(huán)控制。位運(yùn)算符按位與(&):對應(yīng)位都為1則結(jié)果為1按位或(|):對應(yīng)位有一個(gè)為1則結(jié)果為1按位異或(^):對應(yīng)位不同則結(jié)果為1按位取反(~):0變1,1變0移位運(yùn)算符左移(<<):位向左移動(dòng),右側(cè)補(bǔ)0右移(>>):位向右移動(dòng),左側(cè)補(bǔ)符號位或0左移n位相當(dāng)于乘以2^n,右移n位相當(dāng)于除以2^n(整數(shù)部分)。運(yùn)算符優(yōu)先級與結(jié)合性優(yōu)先級運(yùn)算符結(jié)合性1(最高)()、[]、->、.從左到右2!、~、++、--、+、-(單目)、*(指針)、&(地址)從右到左3*、/、%從左到右4+、-(雙目)從左到右5<<、>>從左到右6<、<=、>、>=從左到右7==、!=從左到右8-13&、^、|、&&、||、?:、=及復(fù)合賦值不同方向運(yùn)算符優(yōu)先級決定了表達(dá)式中運(yùn)算的執(zhí)行順序。優(yōu)先級高的運(yùn)算符先執(zhí)行,優(yōu)先級相同時(shí)按照結(jié)合性確定執(zhí)行順序。結(jié)合性有"從左到右"和"從右到左"兩種。使用括號可以改變運(yùn)算的優(yōu)先級,使表達(dá)式按照預(yù)期順序執(zhí)行。表達(dá)式與類型轉(zhuǎn)換1隱式類型轉(zhuǎn)換當(dāng)不同類型的數(shù)據(jù)進(jìn)行運(yùn)算時(shí),C編譯器會(huì)自動(dòng)進(jìn)行類型轉(zhuǎn)換,將較小類型提升為較大類型。這種轉(zhuǎn)換遵循特定規(guī)則,一般是向精度更高的類型轉(zhuǎn)換,例如整數(shù)與浮點(diǎn)數(shù)運(yùn)算時(shí),整數(shù)會(huì)被轉(zhuǎn)換為浮點(diǎn)數(shù)。強(qiáng)制類型轉(zhuǎn)換通過強(qiáng)制類型轉(zhuǎn)換運(yùn)算符,程序員可以明確指定轉(zhuǎn)換的目標(biāo)類型。語法為:(類型名)表達(dá)式。例如,(int)3.14將浮點(diǎn)數(shù)3.14轉(zhuǎn)換為整數(shù)3。強(qiáng)制類型轉(zhuǎn)換可能導(dǎo)致數(shù)據(jù)精度丟失或溢出。轉(zhuǎn)換注意事項(xiàng)類型轉(zhuǎn)換需要謹(jǐn)慎處理,特別是從高精度向低精度轉(zhuǎn)換時(shí)可能造成數(shù)據(jù)丟失。在進(jìn)行除法運(yùn)算時(shí)尤其要注意,整數(shù)除法會(huì)截?cái)嘈?shù)部分,例如5/2的結(jié)果是2而不是2.5。順序結(jié)構(gòu)程序設(shè)計(jì)語句執(zhí)行順序順序結(jié)構(gòu)是最基本的程序結(jié)構(gòu),程序按照語句的先后順序一條一條地執(zhí)行。每條語句執(zhí)行完后,控制自動(dòng)轉(zhuǎn)移到下一條語句。這是程序執(zhí)行的默認(rèn)流程方式。代碼實(shí)際流程演示在一個(gè)簡單的順序結(jié)構(gòu)程序中,從main函數(shù)開始,依次執(zhí)行聲明變量、賦值、計(jì)算、輸出等操作。程序流程是線性的,沒有跳轉(zhuǎn)或重復(fù)執(zhí)行的部分,執(zhí)行路徑是確定的。常見邏輯陷阱雖然順序結(jié)構(gòu)看似簡單,但仍有常見問題需要注意:語句執(zhí)行順序錯(cuò)誤導(dǎo)致的計(jì)算結(jié)果不正確、變量使用前未初始化、計(jì)算中的溢出或精度問題等。這些問題可能不會(huì)產(chǎn)生編譯錯(cuò)誤,但會(huì)導(dǎo)致程序運(yùn)行結(jié)果不正確。分支結(jié)構(gòu)if語句if語句基本格式最簡單的if語句由if關(guān)鍵字、條件表達(dá)式和執(zhí)行語句組成。當(dāng)條件表達(dá)式結(jié)果為真(非零值)時(shí),執(zhí)行相應(yīng)的語句;否則跳過這些語句。1if-else語句if-else語句提供了兩個(gè)分支。當(dāng)條件為真時(shí)執(zhí)行if后的語句,否則執(zhí)行else后的語句,從而確保兩個(gè)分支中有一個(gè)會(huì)被執(zhí)行。嵌套if語句if語句可以嵌套使用,即在一個(gè)if語句的執(zhí)行部分再包含另一個(gè)if語句,用于處理多條件判斷的復(fù)雜情況。3多分支if-elseif結(jié)構(gòu)通過if-elseif-else結(jié)構(gòu)可以實(shí)現(xiàn)多分支選擇,程序會(huì)從上到下檢查條件,執(zhí)行第一個(gè)條件為真的分支,然后跳出整個(gè)結(jié)構(gòu)。switch多分支選擇語法結(jié)構(gòu)switch(表達(dá)式){case常量1:語句塊1;break;case常量2:語句塊2;break;default:默認(rèn)語句塊;}switch語句根據(jù)表達(dá)式的值選擇執(zhí)行路徑。表達(dá)式的結(jié)果必須是整型(char、int等)。每個(gè)case后面跟一個(gè)常量值和冒號,當(dāng)表達(dá)式的值等于這個(gè)常量時(shí),執(zhí)行對應(yīng)的語句塊。break和defaultbreak語句用于跳出switch結(jié)構(gòu),如果沒有break,程序會(huì)繼續(xù)執(zhí)行下一個(gè)case中的語句,這稱為"落空"或"穿透"。default子句是可選的,用于處理所有case都不匹配的情況。適用場景switch語句適用于根據(jù)一個(gè)變量的不同值執(zhí)行不同代碼的情況,特別是當(dāng)這個(gè)變量有多個(gè)離散值時(shí)。相比于多個(gè)if-elseif語句,switch語句通常更清晰、效率更高。循環(huán)結(jié)構(gòu)for語句for循環(huán)基本格式for(初始化;條件表達(dá)式;更新表達(dá)式){循環(huán)體語句;}for循環(huán)首先執(zhí)行初始化語句,然后檢查條件表達(dá)式。如果條件為真,執(zhí)行循環(huán)體和更新表達(dá)式,然后重新檢查條件。這個(gè)過程重復(fù)進(jìn)行,直到條件為假。for循環(huán)執(zhí)行流程for循環(huán)的執(zhí)行流程:(1)執(zhí)行初始化表達(dá)式,通常用于初始化計(jì)數(shù)器;(2)判斷條件表達(dá)式,如果為假則退出循環(huán);(3)執(zhí)行循環(huán)體;(4)執(zhí)行更新表達(dá)式,通常用于更新計(jì)數(shù)器;(5)返回第2步繼續(xù)執(zhí)行。嵌套for循環(huán)for循環(huán)可以嵌套使用,即在一個(gè)循環(huán)體內(nèi)包含另一個(gè)循環(huán)。嵌套循環(huán)常用于處理多維數(shù)組、生成特定模式等任務(wù)。內(nèi)層循環(huán)的每次完整執(zhí)行只相當(dāng)于外層循環(huán)的一次迭代。while與do-while循環(huán)while循環(huán)while(條件表達(dá)式){循環(huán)體語句;}while循環(huán)首先檢查條件表達(dá)式,如果為真則執(zhí)行循環(huán)體,然后再次檢查條件。這個(gè)過程重復(fù)進(jìn)行,直到條件為假。如果初始條件就為假,循環(huán)體一次也不會(huì)執(zhí)行。while循環(huán)適用于不確定循環(huán)次數(shù),需要根據(jù)條件判斷是否繼續(xù)循環(huán)的情況,例如讀取用戶輸入直到特定值出現(xiàn)。do-while循環(huán)do{循環(huán)體語句;}while(條件表達(dá)式);do-while循環(huán)先執(zhí)行循環(huán)體,然后檢查條件表達(dá)式。如果條件為真,則重復(fù)執(zhí)行循環(huán)體和條件檢查。由于條件檢查在循環(huán)體之后,do-while循環(huán)至少會(huì)執(zhí)行一次循環(huán)體。do-while循環(huán)適用于需要至少執(zhí)行一次循環(huán)體的情況,例如至少要進(jìn)行一次有效性檢查的用戶輸入處理。跳轉(zhuǎn)語句break語句break語句用于:立即終止當(dāng)前循環(huán),跳出循環(huán)結(jié)構(gòu)在switch語句中結(jié)束case處理break只能跳出最內(nèi)層的循環(huán),對于嵌套循環(huán),它不能直接跳出外層循環(huán)。continue語句continue語句用于:跳過當(dāng)前循環(huán)的剩余語句直接進(jìn)入下一次循環(huán)迭代在for循環(huán)中,continue會(huì)跳到更新表達(dá)式;在while/do-while循環(huán)中,跳到條件判斷。goto語句goto語句可以無條件跳轉(zhuǎn)到程序中標(biāo)記的位置(標(biāo)簽),語法為:goto標(biāo)簽名;和標(biāo)簽名:語句;盡管goto語句功能強(qiáng)大,但它可能導(dǎo)致程序流程混亂,難以理解和維護(hù),一般推薦使用其他控制結(jié)構(gòu)替代。綜合練習(xí):流程結(jié)構(gòu)1猜數(shù)字游戲使用隨機(jī)數(shù)生成器產(chǎn)生1-100之間的數(shù)字,用戶輸入猜測值,程序告知是大了還是小了,直到猜對為止。統(tǒng)計(jì)猜測次數(shù)。2打印乘法表使用嵌套for循環(huán)打印九九乘法表。要求格式整齊,對齊方式合理。3判斷素?cái)?shù)接受用戶輸入的一個(gè)整數(shù),判斷它是否為素?cái)?shù)。一個(gè)數(shù)如果只能被1和自身整除,則為素?cái)?shù)。4尋找完數(shù)編寫程序找出1000以內(nèi)的完數(shù)。完數(shù)是指一個(gè)數(shù)等于它的所有因子(不包括自身)之和,如6=1+2+3。數(shù)組初步一維數(shù)組定義//聲明并初始化一個(gè)數(shù)組intscores[5]={85,92,78,90,88};//聲明一個(gè)數(shù)組,稍后初始化intnumbers[10];//省略數(shù)組大小(根據(jù)初始化元素確定)intdays[]={31,28,31,30,31,30,31,31,30,31,30,31};數(shù)組是同一類型的多個(gè)元素的集合,數(shù)組名表示第一個(gè)元素的地址。在C語言中,數(shù)組下標(biāo)從0開始,最后一個(gè)元素的下標(biāo)是數(shù)組大小減1。數(shù)組初始化與訪問數(shù)組元素可以在聲明時(shí)一次性初始化,也可以在程序執(zhí)行過程中一個(gè)一個(gè)地賦值。訪問數(shù)組元素通過下標(biāo)操作符[]進(jìn)行,例如scores[2]表示數(shù)組scores中下標(biāo)為2的元素(第三個(gè)元素)。數(shù)組遍歷與操作數(shù)組處理通常通過循環(huán)來完成。最常見的操作包括遍歷數(shù)組、查找特定元素、計(jì)算統(tǒng)計(jì)值(如總和、平均值、最大值、最小值)等。數(shù)組作為函數(shù)參數(shù)時(shí),傳遞的是數(shù)組的起始地址,而不是數(shù)組的完整副本。多維數(shù)組二維數(shù)組定義表格形式的數(shù)據(jù)結(jié)構(gòu)內(nèi)存存儲(chǔ)方式行優(yōu)先順序連續(xù)存儲(chǔ)常見矩陣操作轉(zhuǎn)置、相加、乘法等二維數(shù)組可以看作是"數(shù)組的數(shù)組",通常用于表示矩陣或表格數(shù)據(jù)。聲明二維數(shù)組的語法是:類型名數(shù)組名[行數(shù)][列數(shù)]。例如,intmatrix[3][4]聲明了一個(gè)3行4列的整型二維數(shù)組。二維數(shù)組可以通過嵌套花括號進(jìn)行初始化,如intmatrix[2][3]={{1,2,3},{4,5,6}};在內(nèi)存中,二維數(shù)組按行優(yōu)先順序連續(xù)存儲(chǔ)。訪問二維數(shù)組元素需要兩個(gè)下標(biāo):第一個(gè)指定行,第二個(gè)指定列,如matrix[1][2]表示第2行第3列的元素。處理二維數(shù)組通常使用嵌套循環(huán),外層循環(huán)遍歷行,內(nèi)層循環(huán)遍歷列。字符串及字符串操作字符串定義與表示C語言中,字符串是以空字符('\0')結(jié)尾的字符數(shù)組。字符串可以用字符數(shù)組或字符指針表示。字符串常量用雙引號括起來,如"Hello"。定義字符串時(shí)需要確保數(shù)組大小足夠容納所有字符和結(jié)束符。字符串輸入輸出字符串輸入可以使用scanf("%s",str),但它會(huì)在遇到空白字符時(shí)停止讀取。更安全的方法是使用fgets(str,size,stdin),它可以讀取包含空格的整行輸入。輸出字符串可以使用printf("%s",str)或puts(str)函數(shù)。字符串庫函數(shù)C標(biāo)準(zhǔn)庫提供了豐富的字符串處理函數(shù),包括strlen()(計(jì)算長度)、strcpy()(復(fù)制)、strcat()(連接)、strcmp()(比較)、strchr()/strstr()(查找)等。使用這些函數(shù)需要包含string.h頭文件。C語言標(biāo)準(zhǔn)庫介紹stdio.h標(biāo)準(zhǔn)輸入輸出庫,提供文件操作和控制臺輸入輸出功能。printf()/scanf()-格式化輸入輸出fopen()/fclose()-文件打開關(guān)閉fread()/fwrite()-文件讀寫sprintf()/sscanf()-字符串格式化stdlib.h標(biāo)準(zhǔn)工具庫,提供內(nèi)存管理、隨機(jī)數(shù)、字符串轉(zhuǎn)換等功能。malloc()/free()-動(dòng)態(tài)內(nèi)存分配/釋放rand()/srand()-隨機(jī)數(shù)生成atoi()/atof()-字符串轉(zhuǎn)換為數(shù)值exit()-終止程序執(zhí)行string.h字符串處理庫,提供字符串操作和內(nèi)存操作函數(shù)。strcpy()/strncpy()-字符串復(fù)制strcat()/strncat()-字符串連接strcmp()-字符串比較memcpy()/memmove()-內(nèi)存塊復(fù)制函數(shù)基礎(chǔ)函數(shù)定義函數(shù)定義包括返回類型、函數(shù)名、參數(shù)列表和函數(shù)體。函數(shù)體是由花括號括起來的一組語句,執(zhí)行特定的任務(wù)并可能返回一個(gè)值。函數(shù)聲明函數(shù)聲明告訴編譯器函數(shù)的名稱、返回類型和參數(shù)列表,但不包含函數(shù)體。聲明通常放在調(diào)用該函數(shù)的代碼之前,如果函數(shù)定義在調(diào)用之后或在另一個(gè)文件中。函數(shù)調(diào)用函數(shù)調(diào)用通過函數(shù)名和參數(shù)列表來執(zhí)行函數(shù)。當(dāng)函數(shù)被調(diào)用時(shí),程序流程轉(zhuǎn)到該函數(shù),執(zhí)行函數(shù)體中的語句,然后返回到調(diào)用點(diǎn)繼續(xù)執(zhí)行。C語言中的函數(shù)是組織代碼的基本單位。函數(shù)使程序模塊化,提高了代碼的可讀性、可維護(hù)性和重用性。函數(shù)可以有參數(shù)(輸入)和返回值(輸出),也可以沒有參數(shù)或沒有返回值(用void表示)。函數(shù)參數(shù)可以按值傳遞(傳遞參數(shù)的副本)或按地址傳遞(傳遞參數(shù)的地址)。變量作用域與生命周期局部變量局部變量在函數(shù)或代碼塊內(nèi)部聲明,只在該函數(shù)或代碼塊內(nèi)可見。它們在函數(shù)調(diào)用時(shí)創(chuàng)建,函數(shù)返回時(shí)銷毀。局部變量存儲(chǔ)在棧上,除非使用static關(guān)鍵字。每次調(diào)用函數(shù)時(shí),局部變量都會(huì)重新初始化,除非是靜態(tài)局部變量。1全局變量全局變量在所有函數(shù)外部聲明,對整個(gè)程序可見。它們在程序啟動(dòng)時(shí)創(chuàng)建,程序結(jié)束時(shí)銷毀。全局變量存儲(chǔ)在數(shù)據(jù)段中,默認(rèn)初始化為0。全局變量應(yīng)謹(jǐn)慎使用,因?yàn)樗鼈兛赡軐?dǎo)致代碼耦合和難以維護(hù)。靜態(tài)變量靜態(tài)變量使用static關(guān)鍵字聲明。靜態(tài)局部變量在函數(shù)內(nèi)部聲明,但在函數(shù)調(diào)用之間保持其值。靜態(tài)全局變量僅在聲明它的文件內(nèi)可見,無法從其他文件訪問。靜態(tài)變量存儲(chǔ)在數(shù)據(jù)段中,初始化為0(如果沒有顯式初始化)。頭文件和多文件程序1#include原理預(yù)處理器文本替換機(jī)制頭文件自定義函數(shù)聲明與宏定義集合多文件項(xiàng)目組織模塊化代碼結(jié)構(gòu)#include指令是C預(yù)處理器的一部分,它在編譯前將指定文件的內(nèi)容復(fù)制到當(dāng)前文件中。使用尖括號<>包含系統(tǒng)頭文件,使用雙引號""包含用戶自定義頭文件。預(yù)處理器會(huì)首先在當(dāng)前目錄查找雙引號包含的文件,然后在系統(tǒng)目錄查找。自定義頭文件通常包含函數(shù)聲明、宏定義、結(jié)構(gòu)定義等,以便在多個(gè)源文件之間共享。為防止頭文件被重復(fù)包含,應(yīng)使用條件編譯指令如#ifndef、#define和#endif創(chuàng)建頭文件防護(hù)。大型項(xiàng)目通常分為多個(gè).c文件和相應(yīng)的.h文件,提高了代碼的可讀性、可維護(hù)性和編譯效率。指針初步指針概念指針是一種特殊的變量,用于存儲(chǔ)另一個(gè)變量的內(nèi)存地址。指針使C語言能夠直接訪問和操作內(nèi)存,這是C語言強(qiáng)大功能的重要基礎(chǔ)。指針類型表示它指向的數(shù)據(jù)類型,如int*p表示p是一個(gè)指向整數(shù)的指針。指針的大小取決于系統(tǒng)架構(gòu),通常在32位系統(tǒng)上是4字節(jié),在64位系統(tǒng)上是8字節(jié),不論它指向的數(shù)據(jù)類型是什么。NULL指針(值為0)表示指針不指向任何有效的內(nèi)存地址。指針操作intx=10;int*p=&x;//取地址,p指向xprintf("x的值:%d\n",x);//10printf("x的地址:%p\n",&x);//地址值printf("p的值:%p\n",p);//與&x相同printf("p指向的值:%d\n",*p);//10*p=20;//通過指針修改x的值printf("修改后x的值:%d\n",x);//20指針與數(shù)組1數(shù)組名與指針在大多數(shù)上下文中,數(shù)組名可視為指向數(shù)組第一個(gè)元素的常量指針。即如果有數(shù)組intarr[5],則arr等價(jià)于&arr[0],都表示數(shù)組第一個(gè)元素的地址。2指針訪問數(shù)組元素指針可以通過算術(shù)運(yùn)算訪問數(shù)組元素。若p指向數(shù)組首元素,則p+i指向第i+1個(gè)元素,*(p+i)等價(jià)于arr[i]。指針訪問數(shù)組通常在需要?jiǎng)討B(tài)處理數(shù)組或函數(shù)間傳遞數(shù)組時(shí)使用。3數(shù)組與指針的區(qū)別盡管相似,數(shù)組和指針有本質(zhì)區(qū)別:數(shù)組是一段連續(xù)內(nèi)存的標(biāo)識符,不能被賦新值;指針是變量,可以指向不同地址。數(shù)組名的sizeof返回整個(gè)數(shù)組的大小,而指針的sizeof返回指針本身的大小。字符串與指針字符串常量與指針char*str="Hello";//str指向字符串常量chararr[]="Hello";//字符數(shù)組包含副本字符串常量存儲(chǔ)在內(nèi)存的只讀區(qū)域,因此通過指針不應(yīng)修改其內(nèi)容。字符數(shù)組則創(chuàng)建了字符串的可修改副本。字符串指針適合處理只讀字符串,節(jié)省內(nèi)存;字符數(shù)組適合需要修改內(nèi)容的情況。指針操作字符串chars[]="programming";char*p=s;//遍歷并打印每個(gè)字符while(*p!='\0'){printf("%c",*p);p++;//移動(dòng)到下一個(gè)字符}//重置指針p=s;//修改第一個(gè)字符*p='P';printf("\n%s\n",s);//"Programming"指針操作字符串時(shí)需要注意:字符串必須以空字符('\0')結(jié)尾;越界訪問可能導(dǎo)致未定義行為;修改字符串常量是不允許的,會(huì)導(dǎo)致運(yùn)行時(shí)錯(cuò)誤。字符串處理函數(shù)如strcpy()、strcmp()內(nèi)部都使用指針實(shí)現(xiàn)字符串操作,理解指針對于高效處理字符串至關(guān)重要。指針與函數(shù)指針作為函數(shù)參數(shù)//通過指針修改變量值voidchange(int*p){*p=20;//修改指針指向的值}intx=10;change(&x);//傳遞x的地址printf("%d\n",x);//輸出20指針參數(shù)使函數(shù)能夠修改調(diào)用者提供的變量值,實(shí)現(xiàn)"按引用傳遞"的效果。值傳遞與地址傳遞C語言函數(shù)參數(shù)默認(rèn)為值傳遞,即函數(shù)接收參數(shù)值的副本。使用指針可以實(shí)現(xiàn)地址傳遞,使函數(shù)能夠訪問和修改調(diào)用者的變量。大型數(shù)據(jù)結(jié)構(gòu)使用指針傳遞可以提高效率,避免數(shù)據(jù)復(fù)制。指針實(shí)現(xiàn)swap函數(shù)voidswap(int*a,int*b){inttemp=*a;*a=*b;*b=temp;}intx=5,y=10;swap(&x,&y);printf("x=%d,y=%d\n",x,y);//x=10,y=5動(dòng)態(tài)內(nèi)存分配動(dòng)態(tài)內(nèi)存分配函數(shù)malloc(size):分配指定字節(jié)的內(nèi)存,不初始化calloc(n,size):分配n個(gè)size字節(jié)的內(nèi)存,初始化為0realloc(ptr,size):調(diào)整之前分配的內(nèi)存大小free(ptr):釋放之前分配的內(nèi)存這些函數(shù)都位于stdlib.h頭文件中。內(nèi)存泄漏與防護(hù)內(nèi)存泄漏發(fā)生在分配了內(nèi)存但未釋放的情況下。長期運(yùn)行的程序中,內(nèi)存泄漏會(huì)導(dǎo)致內(nèi)存耗盡。防護(hù)措施包括:跟蹤所有分配的內(nèi)存;確保每個(gè)malloc都有對應(yīng)的free;分配失敗時(shí)進(jìn)行錯(cuò)誤處理;使用內(nèi)存調(diào)試工具。動(dòng)態(tài)數(shù)組實(shí)現(xiàn)//動(dòng)態(tài)分配整數(shù)數(shù)組int*arr=(int*)malloc(5*sizeof(int));if(arr==NULL){//內(nèi)存分配失敗處理exit(1);}//使用數(shù)組for(inti=0;i<5;i++){arr[i]=i*10;}//使用完畢后釋放內(nèi)存free(arr);arr=NULL;//避免懸空指針結(jié)構(gòu)體(struct)定義結(jié)構(gòu)體定義與聲明//定義結(jié)構(gòu)體類型structStudent{charname[50];intage;floatgpa;};//聲明結(jié)構(gòu)體變量structStudents1;structStudents2={"張三",20,3.85};//使用typedef簡化聲明typedefstruct{chartitle[100];charauthor[50];intyear;}Book;Bookb1={"C程序設(shè)計(jì)","譚浩強(qiáng)",2010};結(jié)構(gòu)體成員訪問使用點(diǎn)運(yùn)算符(.)訪問結(jié)構(gòu)體成員:strcpy(,"李四");s1.age=22;s1.gpa=3.67;printf("姓名:%s\n",);printf("年齡:%d\n",s1.age);printf("GPA:%.2f\n",s1.gpa);結(jié)構(gòu)體數(shù)組structStudentclass[40];//40個(gè)學(xué)生//初始化和訪問strcpy(class[0].name,"王五");class[0].age=19;結(jié)構(gòu)體與指針結(jié)構(gòu)體指針聲明與初始化structStudent{charname[50];intage;floatgpa;};structStudents={"張三",20,3.85};structStudent*ps=&s;//動(dòng)態(tài)分配結(jié)構(gòu)體structStudent*new_student=(structStudent*)malloc(sizeof(structStudent));箭頭運(yùn)算符與點(diǎn)運(yùn)算符//使用點(diǎn)運(yùn)算符(變量)printf("姓名:%s\n",);//使用箭頭運(yùn)算符(指針)printf("姓名:%s\n",ps->name);//等價(jià)于:(*ps).name//動(dòng)態(tài)分配的結(jié)構(gòu)體strcpy(new_student->name,"李四");new_student->age=22;new_student->gpa=3.67;結(jié)構(gòu)體作為函數(shù)參數(shù)//按值傳遞(復(fù)制整個(gè)結(jié)構(gòu)體)voidprintStudent(structStudents){printf("%s,%d,%.2f\n",,s.age,s.gpa);}//按地址傳遞(只傳遞指針)voidupdateAge(structStudent*ps,intnew_age){ps->age=new_age;}聯(lián)合體(union)與枚舉聯(lián)合體(union)//定義聯(lián)合體unionData{inti;floatf;charstr[20];};//聲明聯(lián)合體變量unionDatadata;//使用聯(lián)合體data.i=10;printf("data.i:%d\n",data.i);data.f=220.5;printf("data.f:%f\n",data.f);//此時(shí)data.i的值已不再有效strcpy(data.str,"C語言");printf("data.str:%s\n",data.str);//此時(shí)data.f的值已不再有效聯(lián)合體的所有成員共享同一塊內(nèi)存空間,任何時(shí)候只有一個(gè)成員是有效的。聯(lián)合體的大小等于其最大成員的大小。枚舉(enum)//定義枚舉類型enumWeekday{Monday,//0Tuesday,//1Wednesday,//2Thursday,//3Friday,//4Saturday,//5Sunday//6};//自定義枚舉值enumMonth{Jan=1,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec};//使用枚舉enumWeekdaytoday=Wednesday;if(today==Wednesday){printf("今天是周三\n");}枚舉為整型常量提供了有意義的名稱,提高了代碼的可讀性。枚舉常量默認(rèn)從0開始遞增,也可以顯式指定值。文件操作文件指針與打開/關(guān)閉文件FILE*fp;//打開文件(以寫入模式)fp=fopen("test.txt","w");if(fp==NULL){printf("無法打開文件!\n");return1;}//使用文件...//關(guān)閉文件fclose(fp);常用的文件模式:r(讀)、w(寫,覆蓋)、a(追加)、r+(讀寫)、w+(讀寫,覆蓋)、a+(讀寫,追加)。文本文件讀寫//寫入文本文件fprintf(fp,"Hello,%s!\n","world");fputs("WelcometoCprogramming.\n",fp);//讀取文本文件charbuffer[100];fp=fopen("test.txt","r");while(fgets(buffer,100,fp)!=NULL){printf("%s",buffer);}二進(jìn)制文件讀寫structPerson{charname[50];intage;};structPersonperson={"張三",25};//寫入二進(jìn)制文件fp=fopen("data.bin","wb");fwrite(&person,sizeof(structPerson),1,fp);//讀取二進(jìn)制文件fp=fopen("data.bin","rb");fread(&person,sizeof(structPerson),1,fp);錯(cuò)誤處理與調(diào)試常見錯(cuò)誤類型語法錯(cuò)誤:編譯器能夠檢測,如缺少分號、括號不匹配鏈接錯(cuò)誤:找不到函數(shù)定義、多重定義等運(yùn)行時(shí)錯(cuò)誤:導(dǎo)致程序崩潰,如除零、內(nèi)存訪問越界邏輯錯(cuò)誤:程序運(yùn)行但結(jié)果不正確,最難調(diào)試GCC調(diào)試參數(shù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年大連雙D高科產(chǎn)業(yè)發(fā)展有限公司公開選聘筆試備考試題及答案解析
- 2026江西贛州市章貢區(qū)社會(huì)組織黨委專職黨務(wù)工作者招聘1人考試備考題庫及答案解析
- 2026年浙江工業(yè)大學(xué)之江學(xué)院招聘高層次人才38人考試備考試題及答案解析
- 2026年福建省福州市閩侯縣第四中學(xué)春季招聘臨聘教師筆試參考題庫及答案解析
- 2026年亳州利辛縣張村鎮(zhèn)中心衛(wèi)生院臨時(shí)護(hù)士招聘2名考試備考題庫及答案解析
- 2026廣東廣州醫(yī)科大學(xué)附屬第五醫(yī)院人才招聘54人(一)考試參考試題及答案解析
- 2026年深圳市福田區(qū)嘉鑫幼兒園公開招聘教師、保安員備考題庫及答案詳解參考
- 2026年生物分子高效分離與表征研究組(1810組)事業(yè)編制外項(xiàng)目聘用人員招聘備考題庫及答案詳解一套
- 2026年海曙區(qū)集士港鎮(zhèn)招聘編外人員人員備考題庫及參考答案詳解
- 2026年?duì)I山發(fā)展投資(控股)有限責(zé)任公司招聘備考題庫有答案詳解
- 絞吸船清淤施工方案
- 2026屆新高考語文背誦篇目60篇(注音版)
- 220千伏輸變電工程投標(biāo)方案投標(biāo)文件(技術(shù)方案)
- 2024-2025學(xué)年度浙江特殊教育職業(yè)學(xué)院單招《語文》試卷附完整答案詳解(全優(yōu))
- 保護(hù)患者隱私培訓(xùn)課件
- 高職單招課件
- 私募基金設(shè)立流程與風(fēng)險(xiǎn)控制報(bào)告
- 非戰(zhàn)爭軍事行動(dòng)常識課件
- 北京市公路挖掘及路產(chǎn)損壞賠償指導(dǎo)標(biāo)準(zhǔn)2025
- 北京市通州區(qū)2024-2025學(xué)年八年級下學(xué)期學(xué)業(yè)質(zhì)量檢測生物考試題目及答案
- 工藝部年度計(jì)劃及目標(biāo)
評論
0/150
提交評論