




已閱讀5頁,還剩698頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第一章緒論 清華大學鄭莉 C 語言程序設(shè)計 本章主要內(nèi)容 計算機程序設(shè)計語言的發(fā)展面向?qū)ο蟮姆椒嫦驅(qū)ο蟮能浖_發(fā)信息的表示與存儲程序的開發(fā)過程 計算機程序 計算機的工作是用程序來控制的程序是指令的集合 指令是計算機可以識別的命令 計算機語言的發(fā)展 機器語言與匯編語言 由計算機硬件系統(tǒng)可以識別的二進制指令組成的語言稱為機器語言 計算機發(fā)展的初期 軟件工程師們只能用機器語言來編寫程序 這一階段 在人類的自然語言和計算機編程語言之間存在著巨大的鴻溝 匯編語言將機器指令映射為一些可以被人讀懂的助記符 如ADD SUB等 此時編程語言與人類自然語言間的鴻溝略有縮小 但仍與人類的思維相差甚遠 因為它的抽象層次太低 程序員需要考慮大量的機器細節(jié) 計算機語言的發(fā)展 高級語言 高級語言屏蔽了機器的細節(jié) 提高了語言的抽象層次 程序中可以采用具有一定涵義的數(shù)據(jù)命名和容易理解的執(zhí)行語句 這使得在書寫程序時可以聯(lián)系到程序所描述的具體事物 計算機語言的發(fā)展 面向?qū)ο蟮恼Z言 出發(fā)點 更直接地描述客觀世界中存在的事物 對象 以及它們之間的關(guān)系 特點 是高級語言 將客觀事物看作具有屬性和行為的對象 通過抽象找出同一類對象的共同屬性和行為 形成類 通過類的繼承與多態(tài)實現(xiàn)代碼重用 計算機語言的發(fā)展 面向?qū)ο蟮恼Z言 優(yōu)點 使程序能夠比較直接地反問題域的本來面目 軟件開發(fā)人員能夠利用人類認識事物所采用的一般思維方法來進行軟件開發(fā) 計算機語言的發(fā)展 程序設(shè)計方法的發(fā)展歷程 面向過程的程序設(shè)計方法 程序的目的 用于數(shù)學計算主要工作 設(shè)計求解問題的過程缺點 對于龐大 復雜的程序難以開發(fā)和維護 面向?qū)ο蟮姆椒?程序設(shè)計方法的發(fā)展歷程 面向過程的結(jié)構(gòu)化程序設(shè)計方法 設(shè)計思路自頂向下 逐步求精 采用模塊分解與功能抽象 自頂向下 分而治之 程序結(jié)構(gòu) 按功能劃分為若干個基本模塊 形成一個樹狀結(jié)構(gòu) 各模塊間的關(guān)系盡可能簡單 功能上相對獨立 每一模塊內(nèi)部均是由順序 選擇和循環(huán)三種基本結(jié)構(gòu)組成 其模塊化實現(xiàn)的具體方法是使用子程序 面向?qū)ο蟮姆椒?程序設(shè)計方法的發(fā)展歷程 面向過程的結(jié)構(gòu)化程序設(shè)計方法 優(yōu)點 有效地將一個較復雜的程序系統(tǒng)設(shè)計任務(wù)分解成許多易于控制和處理的子任務(wù) 便于開發(fā)和維護 面向?qū)ο蟮姆椒?程序設(shè)計方法的發(fā)展歷程 面向過程的結(jié)構(gòu)化程序設(shè)計方法 缺點 可重用性差 數(shù)據(jù)安全性差 難以開發(fā)大型軟件和圖形界面的應用軟件把數(shù)據(jù)和處理數(shù)據(jù)的過程分離為相互獨立的實體 當數(shù)據(jù)結(jié)構(gòu)改變時 所有相關(guān)的處理過程都要進行相應的修改 每一種相對于老問題的新方法都要帶來額外的開銷 圖形用戶界面的應用程序 很難用過程來描述和實現(xiàn) 開發(fā)和維護也都很困難 面向?qū)ο蟮姆椒?程序設(shè)計方法的發(fā)展歷程 面向?qū)ο蟮姆椒?將數(shù)據(jù)及對數(shù)據(jù)的操作方法封裝在一起 作為一個相互依存 不可分離的整體 對象 對同類型對象抽象出其共性 形成類 類通過一個簡單的外部接口 與外界發(fā)生關(guān)系 對象與對象之間通過消息進行通訊 面向?qū)ο蟮姆椒?程序設(shè)計方法的發(fā)展歷程 面向?qū)ο蟮姆椒?優(yōu)點 程序模塊間的關(guān)系更為簡單 程序模塊的獨立性 數(shù)據(jù)的安全性就有了良好的保障 通過繼承與多態(tài)性 可以大大提高程序的可重用性 使得軟件的開發(fā)和維護都更為方便 面向?qū)ο蟮姆椒?面向?qū)ο蟮幕靖拍?對象 一般意義上的對象 是現(xiàn)實世界中一個實際存在的事物 可以是有形的 比如一輛汽車 也可以是無形的 比如一項計劃 是構(gòu)成世界的一個獨立單位 具有 靜態(tài)特征 可以用某種數(shù)據(jù)來描述動態(tài)特征 對象所表現(xiàn)的行為或具有的功能 面向?qū)ο蟮姆椒?面向?qū)ο蟮幕靖拍?對象 面向?qū)ο蠓椒ㄖ械膶ο?是系統(tǒng)中用來描述客觀事物的一個實體 它是用來構(gòu)成系統(tǒng)的一個基本單位 對象由一組屬性和一組行為構(gòu)成 屬性 用來描述對象靜態(tài)特征的數(shù)據(jù)項 行為 用來描述對象動態(tài)特征的操作序列 面向?qū)ο蟮姆椒?面向?qū)ο蟮幕靖拍?類 分類 人類通常的思維方法分類所依據(jù)的原則 抽象忽略事物的非本質(zhì)特征 只注意那些與當前目標有關(guān)的本質(zhì)特征 從而找出事物的共性 把具有共同性質(zhì)的事物劃分為一類 得出一個抽象的概念 例如 石頭 樹木 汽車 房屋等都是人們在長期的生產(chǎn)和生活實踐中抽象出的概念 面向?qū)ο蟮姆椒?面向?qū)ο蟮幕靖拍?類 面向?qū)ο蠓椒ㄖ械?類 具有相同屬性和服務(wù)的一組對象的集合為屬于該類的全部對象提供了抽象的描述 包括屬性和行為兩個主要部分 類與對象的關(guān)系 猶如模具與鑄件之間的關(guān)系 一個屬于某類的對象稱為該類的一個實例 面向?qū)ο蟮姆椒?面向?qū)ο蟮幕靖拍?封裝 把對象的屬性和服務(wù)結(jié)合成一個獨立的系統(tǒng)單元 盡可能隱蔽對象的內(nèi)部細節(jié) 對外形成一個邊界 或者說一道屏障 只保留有限的對外接口使之與外部發(fā)生聯(lián)系 面向?qū)ο蟮姆椒?面向?qū)ο蟮幕靖拍?繼承 繼承對于軟件復用有著重要意義 是面向?qū)ο蠹夹g(shù)能夠提高軟件開發(fā)效率的重要原因之一 定義 特殊類的對象擁有其一般類的全部屬性與服務(wù) 稱作特殊類對一般類的繼承 例如 將輪船作為一個一般類 客輪便是一個特殊類 面向?qū)ο蟮姆椒?面向?qū)ο蟮幕靖拍?多態(tài)性 多態(tài)是指在一般類中定義的屬性或行為 被特殊類繼承之后 可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為 這使得同一個屬性或行為在一般類及其各個特殊類中具有不同的語義 例如 數(shù)的加法 實數(shù)的加法 復數(shù)的加法 面向?qū)ο蟮姆椒?面向?qū)ο蟮能浖こ?面向?qū)ο蟮能浖こ淌敲嫦驅(qū)ο蠓椒ㄔ谲浖こ填I(lǐng)域的全面應用 它包括 面向?qū)ο蟮姆治?OOA 面向?qū)ο蟮脑O(shè)計 OOD 面向?qū)ο蟮木幊?OOP 面向?qū)ο蟮臏y試 OOT 面向?qū)ο蟮能浖S護 OOSM 面向?qū)ο蟮能浖_發(fā) 系統(tǒng)分析 系統(tǒng)分析階段應該扼要精確地抽象出系統(tǒng)必須做什么 但是不關(guān)心如何去實現(xiàn) 面向?qū)ο蟮南到y(tǒng)分析 直接用問題域中客觀存在的事物建立模型中的對象 對單個事物及事物之間的關(guān)系 都保留他們的原貌 不做轉(zhuǎn)換 也不打破原有界限而重新組合 因此能夠很好地映射客觀事物 面向?qū)ο蟮能浖_發(fā) 設(shè)計 針對系統(tǒng)的一個具體實現(xiàn)運用面向?qū)ο蟮姆椒?其中包括兩方面的工作 把OOA模型直接搬到OOD 作為OOD的一部分針對具體實現(xiàn)中的人機界面 數(shù)據(jù)存儲 任務(wù)管理等因素補充一些與實現(xiàn)有關(guān)的部分 面向?qū)ο蟮能浖_發(fā) 編程 OOP工作就是用一種面向?qū)ο蟮木幊陶Z言把OOD模型中的每個成分書寫出來 是面向?qū)ο蟮能浖_發(fā)最終落實的重要階段 面向?qū)ο蟮能浖_發(fā) 測試 測試的任務(wù)是發(fā)現(xiàn)軟件中的錯誤 在面向?qū)ο蟮能浖y試中繼續(xù)運用面向?qū)ο蟮母拍钆c原則來組織測試 以對象的類作為基本測試單位 可以更準確的發(fā)現(xiàn)程序錯誤并提高測試效率 面向?qū)ο蟮能浖_發(fā) 維護 將軟件交付使用后 工作并沒有完結(jié) 還要根據(jù)軟件的運行情況和用戶的需求 不斷改進系統(tǒng) 使用面向?qū)ο蟮姆椒ㄩ_發(fā)的軟件 其程序與問題域是一致的 因此 在維護階段運用面向?qū)ο蟮姆椒梢源蟠筇岣哕浖S護的效率 面向?qū)ο蟮能浖_發(fā) 信息的表示和存儲 信息的分類計算機的數(shù)字系統(tǒng)程序設(shè)計中常用的數(shù)制不同進位計數(shù)制間的轉(zhuǎn)換信息的存儲單位二進制數(shù)的編碼表示小數(shù)的表示方法非數(shù)值信息的表示 信息的分類 指令 控制信息 控制字信息 定點數(shù) 數(shù)值信息 數(shù)據(jù)信息 浮點數(shù) 字符數(shù)據(jù) 非數(shù)值信息 邏輯數(shù)據(jù) 信息的表示與存儲 計算機的數(shù)字系統(tǒng) 計算機采用的是二進制數(shù)字系統(tǒng) 基本符號 0 1進位原則 逢二進一優(yōu)點 易于物理實現(xiàn)二進制數(shù)運算簡單機器可靠性高通用性強缺點 對人來說可讀性差 信息的表示與存儲 程序設(shè)計中常用的數(shù)制 信息的表示與存儲 不同進位計數(shù)制間的轉(zhuǎn)換 R進制 十進制 各位數(shù)字與它的權(quán)相乘 其積相加 例如 11111111 11 2 1 27 1 26 1 25 1 24 1 23 1 22 1 21 1 20 1 2 1 1 2 2 255 75 10 3506 2 8 3 83 5 82 0 81 6 80 2 8 1 1862 25 10 0 2A 16 2 16 1 10 16 2 0 1640625 10 信息的表示與存儲 不同進位計數(shù)制間的轉(zhuǎn)換 十進制 R進制 十進制整數(shù)轉(zhuǎn)換成R進制的整數(shù) 除R取余 法 例如 268余數(shù)234 0低位217 028 124 022 021 00 1高位所以6810 10001002 信息的表示與存儲 不同進位計數(shù)制間的轉(zhuǎn)換 十進制 R進制 十進制小數(shù)轉(zhuǎn)換成R進制小數(shù) 乘R取整 法 例如 高位0 3125 2 0 6250 625 2 1 250 25 2 0 50 5 2 1 0所以0 312510 0 01012 信息的表示與存儲 不同進位計數(shù)制間的轉(zhuǎn)換 二 八 十六進制的相互轉(zhuǎn)換 每位八進制數(shù)相當于三位二進制數(shù)每位十六進制數(shù)相當于四位二進制數(shù) 1011010 10 2 001011010 100 2 132 4 8 1011010 10 2 01011010 1000 2 5A 8 16 F7 16 11110111 2 11110111 2 信息的表示與存儲 信息的存儲單位 位 bit 度量數(shù)據(jù)的最小單位 表示一位二進制信息 字節(jié) byte 由八位二進制數(shù)字組成 1byte 8bit K字節(jié)1K 1024byteM字節(jié)1M 1024KG字節(jié)1G 1024M 信息的表示與存儲 二進制數(shù)的編碼表示 原碼 符號 絕對值表示 的編碼例如 X 0101011 X 原 00101011X 0101011 X 原 10101011符號位缺點 零的表示不唯一 0 原 000 0 0 原 100 0進行四則運算時 符號位需單獨處理 且運算規(guī)則復雜 信息的表示與存儲 二進制數(shù)的編碼表示 反碼 正數(shù)的反碼與原碼表示相同 負數(shù)的反碼與原碼有如下關(guān)系 符號位相同 仍用1表示 其余各位取反 0變1 1變0 例如 X 1100110 X 原 11100110 X 反 10011001X 0000000 X 原 00000000 X 反 00000000反碼中零的表示也不唯一X 0000000 X 原 10000000 X 反 11111111反碼只是求補碼的中間碼 信息的表示與存儲 二進制數(shù)的編碼表示 補碼 模數(shù) n位整數(shù) 包括一位符號位 則它的模數(shù)為2n n位小數(shù) 小數(shù)點前一位為符號位 則它的模數(shù)為2 補數(shù) 一個數(shù)減去另一個數(shù) 或者說一個數(shù)加上一個負數(shù) 等于第一個數(shù)加上第二個數(shù)的補數(shù) 例 8 2 8 10 mod12 一個二進制負數(shù)可用其模數(shù)與真值做加法 模減去該數(shù)的絕對值 求得其補碼 信息的表示與存儲 二進制數(shù)的編碼表示 補碼 計算機中的補碼表示法負數(shù)的補碼由該數(shù)反碼的末位加1求得對補碼再求補即得到原碼補碼運算規(guī)則符號位可作為數(shù)值參加運算減法運算可轉(zhuǎn)換為加法運算 加上一個負數(shù)等于加上該數(shù)的補碼補碼運算的結(jié)果仍為補碼運算結(jié)果溢出 負數(shù)之和得正數(shù) 或正數(shù)之和得負數(shù) 信息的表示與存儲 小數(shù)的表示方法 計算機中通常采用浮點方式表示小數(shù)一個數(shù)N用浮點形式表示可以寫成 N M 2EE表示2的冪 稱為數(shù)N的階碼 階碼確定了數(shù)N的小數(shù)點的位置 其位數(shù)反映了該浮點數(shù)所表示的數(shù)的范圍 M表示數(shù)N的全部有效數(shù)字 稱為數(shù)N的尾數(shù) 其位數(shù)反映了數(shù)據(jù)的精度 信息的表示與存儲 非數(shù)值信息的表示 西文字符 ASCII碼 用7位二進制數(shù)表示一個字符 最多可以表示27 128個字符EBCDIC碼 用8位二進制數(shù)表示一個字符 最多可以表示28 256個字符漢字 應用較為廣泛的是 國家標準信息交換用漢字編碼 GB2312 80標準 簡稱國標碼 是二字節(jié)碼 用二個七位二進制數(shù)編碼表示一個漢字 信息的表示與存儲 基本術(shù)語 源程序 用源語言寫的 有待翻譯的程序目標程序 也稱為 結(jié)果程序 是源程序通過翻譯程序加工以后所生成的程序 翻譯程序 是指一個把源程序翻譯成等價的目標程序的程序 程序的開發(fā)過程 基本術(shù)語 三種不同類型的翻譯程序 匯編程序 其任務(wù)是把用匯編語言寫成的源程序 翻譯成機器語言形式的目標程序 編譯程序 若源程序是用高級程序設(shè)計語言所寫 經(jīng)翻譯程序加工生成目標程序 那么 該翻譯程序就稱為 編譯程序 程序的開發(fā)過程 基本術(shù)語 三種不同類型的翻譯程序 解釋程序 這也是一種翻譯程序 同樣是將高級語言源程序翻譯成機器指令 它與編譯程序不同點就在于 它是邊翻譯邊執(zhí)行的 即輸入一句 翻譯一句 執(zhí)行一句 直至將整個源程序翻譯并執(zhí)行完畢 程序的開發(fā)過程 程序的開發(fā)過程 編輯將源程序輸入到計算機中 生成后綴為cpp的磁盤文件 編譯將程序的源代碼轉(zhuǎn)換為機器語言代碼 連接將多個源程序文件以及庫中的某些文件連在一起 生成一個后綴為exe的可執(zhí)行文件 運行調(diào)試 程序的開發(fā)過程 第二章C 簡單程序設(shè)計 清華大學鄭莉 C 語言程序設(shè)計 本章主要內(nèi)容 C 語言概述基本數(shù)據(jù)類型和表達式數(shù)據(jù)的輸入與輸出算法的基本控制結(jié)構(gòu)自定義數(shù)據(jù)類型 C 語言的產(chǎn)生 C 是從C語言發(fā)展演變而來的 首先是一個更好的C引入了類的機制 最初的C 被稱為 帶類的C 1983年正式取名為C 從1989年開始C 語言的標準化工作于1994年制定了ANSIC 標準草案于1998年11月被國際標準化組織 ISO 批準為國際標準 成為目前的C C 語言概述 C 的特點 全面兼容C它保持了C的簡潔 高效和接近匯編語言等特點對C的類型系統(tǒng)進行了改革和擴充C 也支持面向過程的程序設(shè)計 不是一個純正的面向?qū)ο蟮恼Z言支持面向?qū)ο蟮姆椒?C 語言概述 C 程序?qū)嵗?例2 1 2 1 cpp includeusingnamespacestd voidmain void cout Hello n cout Welcometoc n 運行結(jié)果 Hello Welcometoc C 語言概述 C 字符集 大小寫的英文字母 A Z a z數(shù)字字符 0 9特殊字符 空格 C 語言概述 詞法記號 關(guān)鍵字C 預定義的單詞標識符程序員聲明的單詞 它命名程序正文中的一些實體文字在程序中直接使用符號表示的數(shù)據(jù)操作符用于實現(xiàn)各種運算的符號分隔符 用于分隔各個詞法記號或程序正文空白符空格 制表符 TAB鍵產(chǎn)生的字符 換行符 Enter鍵所產(chǎn)生的字符 和注釋的總稱 C 語言概述 標識符的構(gòu)成規(guī)則 以大寫字母 小寫字母或下劃線 開始 可以由以大寫字母 小寫字母 下劃線 或數(shù)字0 9組成 大寫字母和小寫字母代表不同的標識符 C 語言概述 數(shù)據(jù)類型 常量與變量 includeusingnamespacestd voidmain void constintPRICE 30 intnum total floatv r h num 10 total num PRICE cout total endl r 2 5 h 3 2 v 3 14159 r r h cout v endl Page54 基本數(shù)據(jù)類型和表達式 includeusingnamespacestd voidmain void constintPRICE 30 intnum total floatv r h num 10 total num PRICE cout total endl r 2 5 h 3 2 v 3 14159 r r h cout v endl 數(shù)據(jù)類型 整型數(shù)據(jù) 整型常量 shortunsignedshort2字節(jié)int unsignedint4字節(jié)longunsignedlong4字節(jié) 整型變量 基本數(shù)據(jù)類型和表達式 數(shù)據(jù)類型 整型數(shù)據(jù)及取值范圍 類型說明符位數(shù)數(shù)值范圍短整short16 32768 32767基本int32 231 231 1 長整long32 231 231 1 無符號unsignedshort160 65535unsigned int 320 232 1 unsignedlong320 232 1 基本數(shù)據(jù)類型和表達式 includeusingnamespacestd voidmain void constintPRICE 30 intnum total floatv r h num 10 total num PRICE cout total endl r 2 5 h 3 2 v 3 14159 r r h cout v endl 數(shù)據(jù)類型 實型數(shù)據(jù) 實型常量 float4字節(jié)3 4 10 387位有效數(shù)字double8字節(jié)1 7 10 30815位有效數(shù)字longdouble8字節(jié)1 7 10 30815位有效數(shù)字 實型變量 缺省為double型后綴F 或f 為float型后綴L 或l 為longdouble型 基本數(shù)據(jù)類型和表達式 數(shù)據(jù)類型 字符型數(shù)據(jù) 一 字符常量單引號括起來的一個字符 如 a D 字符變量用來存放字符常量例 charc1 c2 c1 a c2 A 字符數(shù)據(jù)在內(nèi)存中的存儲形式以ASCII碼存儲 占1字節(jié) 用7個二進制位 Page58 基本數(shù)據(jù)類型和表達式 字符數(shù)據(jù)的使用方法字符數(shù)據(jù)和整型數(shù)據(jù)之間可以運算 字符數(shù)據(jù)與整型數(shù)據(jù)可以互相賦值 字符串常量例 CHINA a a 所以 charc c a Page59 數(shù)據(jù)類型 字符型數(shù)據(jù) 二 基本數(shù)據(jù)類型和表達式 數(shù)據(jù)類型 布爾型數(shù)據(jù) 布爾型變量的說明 例 boolflag 布爾型數(shù)據(jù)的取值 只有false和true兩個值 基本數(shù)據(jù)類型和表達式 數(shù)據(jù)類型 變量初始化 例 inta 3 doublef 3 56 charc a intc 5 Page61 基本數(shù)據(jù)類型和表達式 數(shù)據(jù)類型 混合運算時的類型轉(zhuǎn)換 不同類型數(shù)據(jù)進行混合運算時 C 編譯器會自動進行類型轉(zhuǎn)換 為了避免不同的數(shù)據(jù)類型在運算中出現(xiàn)類型問題 應盡量使用同種類型數(shù)據(jù) 可以采用強制類型轉(zhuǎn)換 例如 floatc inta b c float a float b 或c float a float b 基本數(shù)據(jù)類型和表達式 變量的存儲類型 auto屬于一時性存儲 其存儲空間可以被若干變量多次覆蓋使用 register存放在通用寄存器中 extern在所有函數(shù)和程序段中都可引用 static在內(nèi)存中是以固定地址存放的 在整個程序運行期間都有效 基本數(shù)據(jù)類型和表達式 算術(shù)運算符與算術(shù)表達式 基本算術(shù)運算符 若整數(shù)相除 結(jié)果取整 取余 操作數(shù)為整數(shù) 優(yōu)先級與結(jié)合性先乘除 后加減 同級自左至右 自增 自減 例 i j Page64 基本數(shù)據(jù)類型和表達式 賦值運算符和賦值表達式簡單的賦值運算符 舉例n n 5表達式的類型等號左邊對象的類型表達式的值等號左邊對象被賦值后的值 Page65 基本數(shù)據(jù)類型和表達式 賦值運算符和賦值表達式復合的賦值運算符 有10種復合運算符 例a 3等價于a a 3x y 8等價于x x y 8 基本數(shù)據(jù)類型和表達式 賦值運算符和賦值表達式 賦值表達式舉例 a 5表達式值為5a b c 5表達式值為5 a b c均為5a 5 c 6 表達式值為11 a為11 c為6a b 4 c 6 表達式值為10 a為10 b為4 c為6a b 10 c 2 表達式值為5 a為5 b為10 c為2a a a a相當于a a a a a a Page67 基本數(shù)據(jù)類型和表達式 逗號運算和逗號表達式 格式表達式1 表達式2求解順序及結(jié)果先求解1 再求解2 最終結(jié)果為表達式2的值例a 3 5 a 4最終結(jié)果為60 Page68 基本數(shù)據(jù)類型和表達式 關(guān)系運算與關(guān)系表達式 關(guān)系運算是比較簡單的一種邏輯運算 優(yōu)先次序為 優(yōu)先級相同 高 優(yōu)先級相同 低 關(guān)系表達式是一種最簡單的邏輯表達式其結(jié)果類型為bool 值只能為true或false 例如 a b c a b x y 3 基本數(shù)據(jù)類型和表達式 邏輯運算與邏輯表達式 邏輯運算符 非 與 或 優(yōu)先次序 高 低邏輯表達式例如 a b x y 其結(jié)果類型為bool 值只能為true或false 基本數(shù)據(jù)類型和表達式 條件運算符與條件表達式 一般形式表達式1 表達式2 表達式3表達式1必須是bool類型執(zhí)行順序先求解表達式1 若表達式1的值為true 則求解表達式2 表達式2的值為最終結(jié)果若表達式1的值為false 則求解表達式3 表達式3的值為最終結(jié)果例 x a b a b 基本數(shù)據(jù)類型和表達式 條件運算符與條件表達式 注意 條件運算符優(yōu)級高于賦值運算符 低于邏輯運算符表達式2 3的類型可以不同 條件表達式的最終類型為2和3中較高的類型 例 x a b a b 基本數(shù)據(jù)類型和表達式 sizeof運算符 語法形式sizeof 類型名 或sizeof 表達式 結(jié)果值 類型名 所指定的類型或 表達式 的結(jié)果類型所占的字節(jié)數(shù) 例 sizeof short sizeof x 基本數(shù)據(jù)類型和表達式 位運算 按位與 運算規(guī)則將兩個運算量的每一個位進行邏輯與操作舉例 計算3 基本數(shù)據(jù)類型和表達式 位運算 按位或 運算規(guī)則將兩個運算量的每一個位進行邏輯或操作舉例 計算3 53 000000115 000001013 5 00000111用途 將某些位置1 其它位不變 例如 將int型變量a的低字節(jié)置1 a a 0 xff 基本數(shù)據(jù)類型和表達式 位運算 按位異或 運算規(guī)則兩個操作數(shù)進行異或 若對應位相同 則結(jié)果該位為0 若對應位不同 則結(jié)果該位為1 舉例 計算071 052071 00111001052 00101010071 052 00010011 基本數(shù)據(jù)類型和表達式 位運算 按位異或 用途 使特定位翻轉(zhuǎn) 與0異或保持原值 與1異或取反 例如 要使01111010低四位翻轉(zhuǎn) 01111010 0000111101110101 基本數(shù)據(jù)類型和表達式 位運算 取反 單目運算符 對一個二進制數(shù)按位取反 例 025 0000000000010101 025 1111111111101010 基本數(shù)據(jù)類型和表達式 位運算 移位 左移運算 右移后 低位 舍棄高位 無符號數(shù) 補0有符號數(shù) 補 符號位 基本數(shù)據(jù)類型和表達式 運算符優(yōu)先級 括號 sizeof 位運算 賦值運算逗號運算 低 高 基本數(shù)據(jù)類型和表達式 混合運算時數(shù)據(jù)類型的轉(zhuǎn)換 隱含轉(zhuǎn)換 一些二元運算符 算術(shù)運算符 關(guān)系運算符 邏輯運算符 位運算符和賦值運算符 要求兩個操作數(shù)的類型一致 在算術(shù)運算和關(guān)系運算中如果參與運算的操作數(shù)類型不一致 編譯系統(tǒng)會自動對數(shù)據(jù)進行轉(zhuǎn)換 即隱含轉(zhuǎn)換 基本原則是將低類型數(shù)據(jù)轉(zhuǎn)換為高類型數(shù)據(jù) charshortintunsignedlongunsignedlongfloatdouble低高 基本數(shù)據(jù)類型和表達式 混合運算時數(shù)據(jù)類型的轉(zhuǎn)換 隱含轉(zhuǎn)換 當參與運算的操作數(shù)必須是bool型時 如果操作數(shù)是其它類型 編譯系統(tǒng)會自動將非0數(shù)據(jù)轉(zhuǎn)換為true 0轉(zhuǎn)換為false 位運算的操作數(shù)必須是整數(shù) 當二元位運算的操作數(shù)是不同類型的整數(shù)時 也會自動進行類型轉(zhuǎn)換 賦值運算要求左值與右值的類型相同 若類型不同 編譯系統(tǒng)會自動將右值轉(zhuǎn)換為左值的類型 基本數(shù)據(jù)類型和表達式 混合運算時數(shù)據(jù)類型的轉(zhuǎn)換 強制類型轉(zhuǎn)換 語法形式 類型說明符 表達式 或 類型說明符 表達式強制類型轉(zhuǎn)換的作用是將表達式的結(jié)果類型轉(zhuǎn)換為類型說明符所指定的類型 基本數(shù)據(jù)類型和表達式 語句 聲明語句表達式語句選擇語句循環(huán)語句跳轉(zhuǎn)語句復合語句標號語句 表達式語句 格式 表達式 表達式語句與表達式的區(qū)別 表達式可以包含在其它表達式中 而語句不可 例 if a b 0 t a 不可寫為 if a b 0 t a 語句 復合語句 將多個語句用一對大括號包圍 便構(gòu)成一個復合語句例如 sum sum i i 語句 簡單的輸入 輸出 向標準輸出設(shè)備 顯示器 輸出例 intx cout x 順序結(jié)構(gòu)分支結(jié)構(gòu)循環(huán)結(jié)構(gòu) 算法的基本控制結(jié)構(gòu) 如何解決分支問題 例2 2輸入一個年份 判斷是否閏年 算法的基本控制結(jié)構(gòu) includeusingnamespacestd voidmain void intyear boolIsLeapYear cout year IsLeapYear year 4 0 90 運行結(jié)果 Entertheyear 20002000isaleapyear 91 if 表達式 語句例 if x y couty cout x elsecout y if 表達式1 語句1elseif 表達式2 語句2elseif 表達式3 語句3 else語句n if語句 三種形式 算法的基本控制結(jié)構(gòu) 如何解決多分問題 例2 3輸入兩個整數(shù) 比較兩個數(shù)的大小 算法的基本控制結(jié)構(gòu) includeusingnamespacestd voidmain intx y cout x y if x y if x y couty endl elsecout x y endl elsecout x y endl 94 運行結(jié)果1 Enterxandy 58xy 95 一般形式if if 語句1else語句2elseif 語句3else語句4注意語句1 2 3 4可以是復合語句 每層的if與else配對 或用 來確定層次關(guān)系 算法的基本控制結(jié)構(gòu) 特殊的多分支結(jié)構(gòu) 例2 4輸入一個0 6的整數(shù) 轉(zhuǎn)換成星期輸出 算法的基本控制結(jié)構(gòu) includeusingnamespacestd voidmain void intday cin day switch day case0 cout Sunday endl break case1 cout Monday endl break case2 cout Tuesday endl break case3 cout Wednesday endl break case4 cout Thursday endl break case5 cout Friday endl break case6 cout Saturday endl break default cout DayoutofrangeSunday Saturday endl break 98 一般形式switch 表達式 case常量表達式1 語句1case常量表達式2 語句2 case常量表達式n 語句ndefault 語句n 1 switch語句 執(zhí)行順序以case中的常量表達式值為入口標號 由此開始順序執(zhí)行 因此 每個case分支最后應該加break語句 算法的基本控制結(jié)構(gòu) 使用switch語句應注意的問題 case分支可包含多個語句 且不用 表達式 判斷值都是int型或char型 若干分支執(zhí)行內(nèi)容相同可共用一組語句 算法的基本控制結(jié)構(gòu) 如何有效地完成重復工作 例2 5求自然數(shù)1 10之和分析 本題需要用累加算法 累加過程是一個循環(huán)過程 可以用while語句實現(xiàn) 算法的基本控制結(jié)構(gòu) includeusingnamespacestd voidmain inti 1 sum 0 while i 10 sum i 相當于sum sum i i cout sum sum endl 運行結(jié)果 sum 55 102 while語句 形式while 表達式 語句 執(zhí)行順序先判斷表達式的值 為true時 再執(zhí)行語句 算法的基本控制結(jié)構(gòu) 先執(zhí)行循環(huán)體 后判斷條件的情況 例2 6輸入一個整數(shù) 將各位數(shù)字反轉(zhuǎn)后輸出 算法的基本控制結(jié)構(gòu) includeusingnamespacestd voidmain void intn right digit newnum 0 cout n cout Thenumberinreverseorderis do right digit n 10 cout right digit n 10 相當于n n 10 while n 0 cout endl 105 運行結(jié)果 Enterthenumber 365Thenumberinreverseorderis563 106 do while語句 一般形式do語句while 表達式 執(zhí)行順序先執(zhí)行循環(huán)體語句 后判斷條件 表達式為true時 繼續(xù)執(zhí)行循環(huán)體與while語句的比較 While語句執(zhí)行順序先判斷表達式的值 為true時 再執(zhí)行語句 算法的基本控制結(jié)構(gòu) 對比下列程序 程序1 includeusingnamespacestd voidmain inti sum 0 cin i while i 10 sum i i cout sum sum endl 算法的基本控制結(jié)構(gòu) 程序2 includeusingnamespacestd voidmain inti sum 0 cin i do sum i i while i 10 cout sum sum endl 108 for語句 語法形式for 表達式1 表達式2 表達式3 語句 算法的基本控制結(jié)構(gòu) 例2 8 輸入一個整數(shù) 求出它的所有因子 算法的基本控制結(jié)構(gòu) includeusingnamespacestd voidmain void intn k cout n cout Number n Factors for k 1 k n k if n k 0 cout k cout endl 111 111 運行結(jié)果1 Enterapositiveinteger 36Number36Factors123469121836運行結(jié)果2 Enterapositiveinteger 7Number7Factors17 112 例2 9編寫程序輸出以下圖案 算法的基本控制結(jié)構(gòu) includeusingnamespacestd voidmain inti j n 4 for i 1 i n i 輸出前4行圖案 for j 1 j 30 j cout 在圖案左側(cè)空30列for j 1 j 8 2 i j cout for j 1 j 2 i 1 j cout cout endl 114 for i 1 i n 1 i 輸出后3行圖案 for j 1 j 30 j cout 在圖案左側(cè)空30列for j 1 j 7 2 i j cout cout endl 115 循環(huán)結(jié)構(gòu)與選擇結(jié)構(gòu)相互嵌套 includeusingnamespacestd voidmain intn for n 100 n 200 n if n 3 0 cout n 算法的基本控制結(jié)構(gòu) 例2 10 讀入一系列整數(shù) 統(tǒng)計出正整數(shù)個數(shù)i和負整數(shù)個數(shù)j 讀入0則結(jié)束 分析 需要讀入一系列整數(shù) 但是整數(shù)個數(shù)不定 要在每次讀入之后進行判斷 因此使用while循環(huán)最為合適 循環(huán)控制條件應該是n 0 由于要判斷數(shù)的正負并分別進行統(tǒng)計 所以需要在循環(huán)內(nèi)部嵌入選擇結(jié)構(gòu) 算法的基本控制結(jié)構(gòu) includeusingnamespacestd voidmain inti 0 j 0 n cout n while n 0 if n 0 i if n n cout 正整數(shù)個數(shù) i 負整數(shù)個數(shù) j endl 118 break和continue語句 break語句使程序從循環(huán)體和switch語句內(nèi)跳出 繼續(xù)執(zhí)行邏輯上的下一條語句 不宜用在別處 continue語句結(jié)束本次循環(huán) 接著判斷是否執(zhí)行下一次循環(huán) 算法的基本控制結(jié)構(gòu) typedef語句 為一個已有的數(shù)據(jù)類型另外命名語法形式typedef已有類型名新類型名表 例如typedefdoublearea volume typedefintnatural naturali1 i2 areaa volumev 自定義數(shù)據(jù)類型 枚舉類型 enum 只要將需要的變量值一一列舉出來 便構(gòu)成了一個枚舉類型 枚舉類型的聲明形式如下 enum枚舉類型名 變量值列表 例如 enumweekday sun mon tue wed thu fri sat 自定義數(shù)據(jù)類型 枚舉類型 enum 枚舉類型應用說明 對枚舉元素按常量處理 不能對它們賦值 例如 不能寫 sun 0 枚舉元素具有缺省值 它們依次為 0 1 2 也可以在聲明時另行指定枚舉元素的值 如 enumweekday sun 7 mon 1 tue wed thu fri sat 枚舉值可以進行關(guān)系運算 整數(shù)值不能直接賦給枚舉變量 如需要將整數(shù)賦值給枚舉變量 應進行強制類型轉(zhuǎn)換 自定義數(shù)據(jù)類型 例2 11 設(shè)某次體育比賽的結(jié)果有四種可能 勝 win 負 lose 平局 tie 比賽取消 cancel 編寫程序順序輸出這四種情況 分析 由于比賽結(jié)果只有四種可能 所以可以聲明一個枚舉類型 聲明一個枚舉類型的變量來存放比賽結(jié)果 自定義數(shù)據(jù)類型 includeusingnamespacestd enumgame result WIN LOSE TIE CANCEL intmain game resultresult enumgame resultomit CANCEL intcount for count WIN count CANCEL count result game result count if result omit cout Thegamewascancelled n else cout Thegamewasplayed if result WIN cout andwewon if result LOSE cout andwelost cout n return0 124 運行結(jié)果Thegamewasplayedandwewon Thegamewasplayedandwelost ThegamewasplayedThegamewascancelled 125 結(jié)構(gòu)體 結(jié)構(gòu)的聲明 結(jié)構(gòu)的概念結(jié)構(gòu)是由不同數(shù)據(jù)類型的數(shù)據(jù)組成的集合體 聲明結(jié)構(gòu)類型struct結(jié)構(gòu)名 數(shù)據(jù)類型成員名1 數(shù)據(jù)類型成員名2 數(shù)據(jù)類型成員名n 自定義數(shù)據(jù)類型 結(jié)構(gòu)體 結(jié)構(gòu)的聲明 舉例 structstudent 學生信息結(jié)構(gòu)體 intnum 學號charname 20 姓名chargender 性別intage 年齡floatscore 成績charaddr 30 住址 自定義數(shù)據(jù)類型 結(jié)構(gòu)體 結(jié)構(gòu)變量說明 變量說明形式結(jié)構(gòu)名結(jié)構(gòu)變量名 注意 結(jié)構(gòu)變量的存儲類型概念 它的壽命 可見性及使用范圍與普通變量完全一致 結(jié)構(gòu)變量說明在結(jié)構(gòu)類型聲明之后 二者也可同時進行 結(jié)構(gòu)變量占內(nèi)存大小可用sizeof運算求出 sizeof 運算量 自定義數(shù)據(jù)類型 結(jié)構(gòu)體 結(jié)構(gòu)變量的初始化和使用 初始化說明結(jié)構(gòu)變量的同時可以直接設(shè)置初值 使用結(jié)構(gòu)體成員的引用形式 結(jié)構(gòu)變量名 成員名 自定義數(shù)據(jù)類型 例2 12 結(jié)構(gòu)體變量的初始化和使用 include includeusingnamespacestd structstudent 學生信息結(jié)構(gòu)體 intnum 學號charname 20 姓名chargender 性別intage 年齡 stu 97001 LinLin F 19 voidmain cout setw 7 stu num setw 20 stu name setw 3 stu sex setw 3 stu age 自定義數(shù)據(jù)類型 運行結(jié)果 97001LinLinF19 聯(lián)合體 聲明形式 union聯(lián)合名 數(shù)據(jù)類型成員名1 數(shù)據(jù)類型成員名2 數(shù)據(jù)類型成員名n 聯(lián)合體類型變量說明的語法形式聯(lián)合名聯(lián)合變量名 引用形式 聯(lián)合名 成員名 自定義數(shù)據(jù)類型 例 unionuarea charc data shorts data longl data 聯(lián)合體 自定義數(shù)據(jù)類型 無名聯(lián)合 無名聯(lián)合沒有標記名 只是聲明一個成員項的集合 這些成員項具有相同的內(nèi)存地址 可以由成員項的名字直接訪問 例 union inti floatf 在程序中可以這樣使用 i 10 f 2 2 自定義數(shù)據(jù)類型 第三章函數(shù) 清華大學鄭莉 C 語言程序設(shè)計 本章主要內(nèi)容 函數(shù)的聲明和調(diào)用函數(shù)間的參數(shù)傳遞內(nèi)聯(lián)函數(shù)帶默認形參值的函數(shù)函數(shù)重載C 系統(tǒng)函數(shù) 函數(shù)的聲明 函數(shù)是面向?qū)ο蟪绦蛟O(shè)計中 對功能的抽象函數(shù)聲明的語法形式類型標識符函數(shù)名 形式參數(shù)表 語句序列 函數(shù)的聲明與使用 若無參數(shù) 寫void 是被初始化的內(nèi)部變量 壽命和可見性僅限于函數(shù)內(nèi)部 若無返回值 寫void 函數(shù)的聲明 形式參數(shù)表name1 name2 namen函數(shù)的返回值由return語句給出 例如 return0無返回值的函數(shù) void類型 不必寫return語句 函數(shù)的聲明與使用 函數(shù)的調(diào)用 調(diào)用前先聲明函數(shù)原型 在調(diào)用函數(shù)中 或程序文件中所有函數(shù)之外 按如下形式說明 類型標識符被調(diào)用函數(shù)名 含類型說明的形參表 調(diào)用形式函數(shù)名 實參列表 嵌套調(diào)用函數(shù)可以嵌套調(diào)用 但不允許嵌套定義 遞歸調(diào)用函數(shù)直接或間接調(diào)用自身 函數(shù)的聲明與使用 例3 1編寫一個求x的n次方的函數(shù) includeusingnamespacestd doublepower doublex intn voidmain void cout 5tothepower2is power 5 2 endl doublepower doublex intn doubleval 1 0 while n val val x return val 函數(shù)的聲明與使用 運行結(jié)果 5tothepower2is25 例3 1編寫一個求x的n次方的函數(shù) 函數(shù)的聲明與使用 例3 2數(shù)制轉(zhuǎn)換 題目 輸入一個8位二進制數(shù) 將其轉(zhuǎn)換為十進制數(shù)輸出 例如 11012 1 23 1 22 0 21 1 20 1310所以 如果輸入1101 則應輸出13 函數(shù)的聲明與使用 includeusingnamespacestd doublepower doublex intn voidmain void inti intvalue 0 charch cout 0 i cin ch if ch 1 value int power 2 i cout Decimalvalueis value endl doublepower doublex intn doubleval 1 0 while n val x return val 運行結(jié)果 Enteran8bitbinarynumber01101001Decimalvalueis105 142 例3 3編寫程序求 的值 其中arctan用如下形式的級數(shù)計算 直到級數(shù)某項絕對值不大于10 15為止 和x均為double型 函數(shù)的聲明與使用 includeusingnamespacestd voidmain doublea b doublearctan doublex 函數(shù)原型聲明a 16 0 arctan 1 5 0 b 4 0 arctan 1 239 0 注意 因為整數(shù)相除結(jié)果取整 如果參數(shù)寫1 5 1 239 結(jié)果就都是0cout PI a b endl 144 doublearctan doublex inti doubler e f sqr sqr x x r 0 e x i 1 while e i 1e 15 f e i r i 4 1 r f r f e e sqr i 2 returnr 運行結(jié)果 PI 3 14159 145 例3 4 尋找并輸出11 999之間的數(shù)m 它滿足m m2和m3均為回文數(shù) 回文 各位數(shù)字左右對稱的整數(shù) 例如 11滿足上述條件112 121 113 1331 分析 10取余的方法 從最低位開始 依次取出該數(shù)的各位數(shù)字 按反序重新構(gòu)成新的數(shù) 比較與原數(shù)是否相等 若相等 則原數(shù)為回文 函數(shù)的聲明與使用 includeusingnamespacestd voidmain boolsymm longn longm for m 11 m 1000 m if symm m 147 boolsymm longn longi m i n m 0 while i m m 10 i 10 i i 10 return m n 148 運行結(jié)果 m 11m m 121m m m 1331m 101m m 10201m m m 1030301m 111m m 12321m m m 1367631 149 例3 5 計算如下公式 并輸出結(jié)果 其中r s的值由鍵盤輸入 SINx的近似值按如下公式計算 計算精度為10 6 函數(shù)的聲明與使用 include includeusingnamespacestd voidmain doublek r s doubletsin doublex cout r cout s if r r s s k sqrt tsin r tsin r tsin s tsin s elsek tsin r s 2 cout k endl 151 doubletsin doublex doublep 0 000001 g 0 t x intn 1 do g g t n t t x x 2 n 1 2 n 2 while fabs t p returng 運行結(jié)果 r 5s 81 37781 152 例3 6投骰子的隨機游戲 游戲規(guī)則是 每個骰子有六面 點數(shù)分別為1 2 3 4 5 6 游戲者在程序開始時輸入一個無符號整數(shù) 作為產(chǎn)生隨機數(shù)的種子 每輪投兩次骰子 第一輪如果和數(shù)為7或11則為勝 游戲結(jié)束 和數(shù)為2 3或12則為負 游戲結(jié)束 和數(shù)為其它值則將此值作為自己的點數(shù) 繼續(xù)第二輪 第三輪 直到某輪的和數(shù)等于點數(shù)則取勝 若在此前出現(xiàn)和數(shù)為7則為負 由rolldice函數(shù)負責模擬投骰子 計算和數(shù)并輸出和數(shù) 函數(shù)的聲明與使用 include includeusingnamespacestd introlldice void voidmain intgamestatus sum mypoint unsignedseed cout seed 輸入隨機數(shù)種子srand seed 將種子傳遞給rand sum rolldice 第一輪投骰子 計算和數(shù) 154 switch sum case7 如果和數(shù)為7或11則為勝 狀態(tài)為1case11 gamestatus 1 break case2 和數(shù)為2 3或12則為負 狀態(tài)為2case3 case12 gamestatus 2 break default 其它情況 游戲尚無結(jié)果 狀態(tài)為0 記下點數(shù) 為下一輪做準備gamestatus 0 mypoint sum cout pointis mypoint endl break 155 while gamestatus 0 只要狀態(tài)仍為0 就繼續(xù)進行下一輪 sum rolldice if sum mypoint 某輪的和數(shù)等于點數(shù)則取勝 狀態(tài)置為1gamestatus 1 elseif sum 7 出現(xiàn)和數(shù)為7則為負 狀態(tài)置為2gamestatus 2 當狀態(tài)不為0時上面的循環(huán)結(jié)束 以下程序段輸出游戲結(jié)果if gamestatus 1 cout playerwins n elsecout playerloses n 156 rand函數(shù)原型 intrand void 所需頭文件 功能和返回值 求出并返回一個偽隨機數(shù)srand函數(shù)原型 voidsrand unsignedintseed 參數(shù) seed產(chǎn)生隨機數(shù)的種子 所需頭文件 功能 為使rand 產(chǎn)生一序列偽隨機整數(shù)而設(shè)置起始點 使用1作為seed參數(shù) 可以重新初化rand 157 introlldice void 投骰子 計算和數(shù) 輸出和數(shù)intdie1 die2 worksum die1 1 rand 6 die2 1 rand 6 worksum die1 die2 cout playerrolled die1 die2 worksum endl returnworksum 158 運行結(jié)果2 Pleaseenteranunsignedinteger 23playerrolled6 3 9pointis9pl
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 倉儲設(shè)備維護與管理員聘用與服務(wù)協(xié)議
- 高端車庫抵押貸款合同范本
- 管道損壞協(xié)議書范本
- 采棉企業(yè)員工勞動合同范本
- 車貸保證金及違約責任規(guī)范合同
- 環(huán)保工程場地調(diào)查與合同
- 磁通量索力實時監(jiān)測技術(shù)研究與應用
- 泥石流區(qū)橋梁清淤導流工程方案
- 非煤礦山安全操作規(guī)程
- 風冷機房空調(diào)的安裝與驗收標準
- 《熊貓小四》知識點匯-總以及這本書閱讀題測試
- 《膽管炎的護理》課件
- 中國概況(英文版)課件
- 2025年中國orc低溫余熱發(fā)電系統(tǒng)行業(yè)分析及發(fā)展趨勢預測
- 中醫(yī)護理疑難病例討論
- 2025年江蘇啟東市勞務(wù)技術(shù)經(jīng)濟開發(fā)有限公司招聘筆試參考題庫含答案解析
- 房屋市政工程施工現(xiàn)場安全風險分級管控與防范措施清單
- 山西焦煤招聘筆試題庫2025
- DB50-T 1808-2025“一表通”智能報表市級業(yè)務(wù)數(shù)據(jù)規(guī)范
- 房屋市政工程生產(chǎn)安全重大事故隱患判定檢查表(2024版)
- 高企研發(fā)費用培訓
評論
0/150
提交評論