版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、要: 簡要描述本文件的內(nèi)容,.c語言書寫規(guī)范指南第 1 章文件結(jié)構(gòu)每個 c程序通常分為兩個文件。一個文件用于保存程序的聲明(declaration),稱為頭文件。另一個文件用于保存程序的實現(xiàn)(implementation),稱為定義(definition)文件。c程序的頭文件以“.h ”為后綴, c程序的定義文件以“.c ”為后綴。1.1 版權(quán)和版本的聲明版權(quán)和版本的聲明位于頭文件和定義文件的開頭(參見示例1-1 ),主要內(nèi)容有:( 1)版權(quán)信息。( 2)文件名稱,標(biāo)識符,摘要。( 3)當(dāng)前版本號,作者 / 修改者,完成日期。( 4)版本歷史信息。/*copyright(c)2001,吉林大學(xué)
2、物理學(xué)院無線電*allrightsreserved.* 文件名稱: filename.h* 文件標(biāo)識:* 摘* 當(dāng)前版本: 1.1* 作者: 輸入作者(或修改者)名字* 完成日期: 2007年7月20日* 取代版本: 1.0* 原作者:輸入原作者(或修改者)名字* 完成日期: 2007年5月10日*/示例 1-1 版權(quán)和版本的聲明;.,.1.2 頭文件的結(jié)構(gòu) 文件由三部分內(nèi)容 成:( 1) 文件開 的版 和版本聲明(參 示例1-1 )。( 2) 理 。( 3)函數(shù)和 構(gòu)聲明等。假 文件名稱 scl_spi.h , 文件的 構(gòu)參 示例1-2 。【 1-2-1 】 了防止 文件被重復(fù)引用, 當(dāng)用#
3、ifndef/#define/#endif 構(gòu) 生 理 。【 1-2-2】用 #include格式來引用 準(zhǔn) 的 文件( 器將從 準(zhǔn) 目 開始搜索)。【 1-2-3】用 #include“filename.h” 格式來引用非 準(zhǔn) 的 文件( 器將從用 的工作目 開始搜索)。【 1-2-4】 #include后面使用 tab 控制排版。【 1-2-5 】 文件中只存放“聲明”而不存放“定 ”【 1-2-6】全局 量在 文件中聲明 , 在 .c 文件中定 .h extern in tvalue;聲明。.c in tvalue=0x10;定 ?!?1-2-7】局部 量在.c 中定 (static)u
4、nsigned in tvalue;定 。/ 版 和版本聲明 示例 1-1 ,此 省略。#ifndefscl_spi_h/防止 scl_spi.h 被重復(fù)引用#definescl_spi_h#include/引用 準(zhǔn) 的 文件#include“scl_can.h”/ 引用非 準(zhǔn) 的 文件void function1();/ 全局函數(shù)聲明extern unsign int value;/全局 量聲明#endif示例 1-2c 頭文件的結(jié)構(gòu);.,.1.3 定義文件的結(jié)構(gòu)定 文件有三部分內(nèi)容:( 1)定 文件開 的版 和版本聲明(參 示例1-1 )。( 2) 一些 文件的引用。( 3)程序的 體(包
5、括數(shù)據(jù)和代 )。假 定 文件的名稱 scl_spi.c ,定 文件的 構(gòu)參 示例1-3 。/ 版 和版本聲明 示例 1-1 ,此 省略。#include “ scl_spi.h ” / 引用 文件/ 全局 量定 unsign int value = 0x10;/ 全局函數(shù)的 體voidfunction1( )示例 1-3c 定義文件的結(jié)構(gòu)1.4 頭文件的作用早期的 程 言如 basic 、 fortran 沒有 文件的概念, c 言的初學(xué)者 然會用使用 文件,但常常不明其理。 里 文件的作用略作解 :( 1)通 文件來 用 功能。在很多 合,源代 不便(或不準(zhǔn))向用 公布,只要向用 提供 文件
6、和二 制的 即可。用 只需要按照 文件中的接口聲明來 用 功能,而不必關(guān)心接口怎么 的。 器會從 中提取相 的代 。( 2) 文件能加 型安全 。如果某個接口被 或被使用 ,其方式與 文件中的聲明不一致, 器就會指出 , 一 的 能大大減 程序 、改 的 擔(dān)。;.,.1.5 目錄結(jié)構(gòu)如果一個 件的 文件數(shù)目比 多(如超 十個),通常 將 文件和定 文件分 保存于不同的目 ,以便于 。例如可將 文件保存于include目 ,將定 文件保存于source目 (可以是多 目 )。如果某些 文件是私有的,它不會被用 的程序直接引用, 沒有必要公開其“聲明”。 了加 信息 藏, 些私有的 文件可以和定
7、文件存放于同一個目 。第 2 章程序的版式版式 然不會影響程序的功能,但會影響可 性。程序的版式追求清晰、美 ,是程序 格的重要構(gòu)成因素。可以把程序的版式比 “ 法”。好的“ 法”可 人 程序一目了然,看得 致勃勃。差的程序“ 法”如螃蟹爬行, 人看得索然無味,更令 者 有加。 程序 學(xué) 程序的“ 法”,彌 大學(xué) 算機教育的漏洞, 在很有必要。2.1 空行空行起著分隔程序段落的作用。空行得體(不 多也不 少)將使程序的布局更加清晰。空行不會浪 內(nèi)存, 然打印含有空行的程序是會多消耗一些 ,但是 得。所以不要舍不得用空行?!?2-1-1】在每個函數(shù)定 束之后都要加空行。參 示例2-1 ( a)【
8、 2-1-2】在一個函數(shù)體內(nèi), 揖上密切相關(guān)的 句之 不加空行,其它地方 加空行分隔。參 示例 2-1 ( b)/ 空行voidfunction1( )/ 空行voidfunction2( )示例 2-1(a) 函數(shù)之間的空行;.,./ 空行while (condition)statement1;/ 空行if (condition)statement2;elsestatement3;/ 空行statement4;示例 2-1(b) 函數(shù)內(nèi)部的空行2.2 代碼行【規(guī)則 2-2-1 】一行代碼只做一件事情,如只定義一個變量,或只寫一條語句。這樣的代碼容易閱讀,并且方便于寫注釋?!疽?guī)則 2-2-2
9、】if 、 for 、 while 、do等語句自占一行,執(zhí)行語句不得緊跟其后。不論執(zhí)行語句有多少都要加 。這樣可以防止書寫失誤。示例 2-2 (a)為風(fēng)格良好的代碼行,示例2-2 (b)為風(fēng)格不良的代碼行。intwidth;/寬度intwidth,height,depth;/寬度高度深度intheight;/高度intdepth;/深度中間使用 tab鍵控制距離x = a+b; / 等號左右用空格控制距離x = a+b;y=c+d;z=e+f;y = c+d;z = e+f;if (width height)/ 左右用空格控制距離if(width=”、“ =”、“ +”、“ * ”、“ %”
10、、“ &”、“ | ”、“ ”這類操作符前后不加空格。【建議 2-3-1 】對于表達式比較長的 for 語句和 if 語句,為了緊湊起見可以適當(dāng)?shù)厝サ粢恍┛崭瘢?for(i=0;i10;i+)和 if(a=b)&(c= 2000)/ 良好的風(fēng)格if(year=2000)/ 不良的風(fēng)格if (a=b) & (c=b&c=d)/ 不良的風(fēng)格for (i=0; i10; i+)/ 良好的風(fēng)格for(i=0;i10;i+)/ 不良的風(fēng)格for(i = 0; i 10; i+)/ 過多的空格;.,.x = a b ? a : b;/ 良好的風(fēng)格x=afunction();/ 不要寫成 b - func
11、tion();示例 2-3 代 行內(nèi)的空格2.4 對齊【規(guī)則 2-4-1 】程序的分界符 和 應(yīng)獨占一行并且位于同一列,同時與引用它們的語句左對齊?!疽?guī)則 2-4-2 】 之內(nèi)的代碼塊在 右邊一個 tab鍵處左對齊。示例 2-4 (a)為風(fēng)格良好的對齊,示例2-4 ( b)為風(fēng)格不良的對齊。void function (int x)void function(intx)/programcode/programcodeif (condition)if(condition)/programcode/programcodeelseelse/programcode/programcodefor (in
12、itialization; condition; update)for(initialization;condition;update)/programcode/programcodewhile (condition)while(condition)/programcode/programcode;.,.如果出 嵌套的, 使用 ,如:示例 2-4(a) 格良好的 示例 2-4(b) 格不良的 2.5 長行拆分【規(guī)則 2-5-1 】代碼行最大長度宜控制在 70至 80個字符以內(nèi)。代碼行不要過長,否則眼睛看不過來,也不便于打印?!疽?guī)則 2-5-2 】長表達式要在低優(yōu)先級操作符處拆分成新行,操作符放
13、在新行之首(以便突出操作符)。拆分出的新行要進行適當(dāng)?shù)目s進,使排版整齊,語句可讀。if (very_longer_variable1 = very_longer_variable12)&(very_longer_variable3 = very_longer_variable14)&(very_longer_variable5 draw();/ 的成 函數(shù)【 3-1-8 】用正確的反 命名具有互斥意 的 量或相反 作的函數(shù)等。例如:intminvalue;intmaxvalue;intsetvalue( );intgetvalue( );【建 3-1-1 】盡量避免名字中出 數(shù)字 號,如val
14、ue1,value2等,除非 上的確需要 號。 是 了防止程序 ,不肯 命名 筋而 致 生無意 的名字(因 用數(shù)字 號最省事)。3.2 簡單的 windows應(yīng)用程序命名規(guī)則作者 “匈牙利”命名 做了合理的 化,下述的命名 易用,比 適合于;.,.windows 用 件的開 。【 3-2-1 】 名和函數(shù)名用大寫字母開 的 合而成。例如:classnode;/ 名classleafnode;/ 名voiddraw(void);/ 函數(shù)名voidsetvalue(int value);/函數(shù)名【 3-2-2 】 量和參數(shù)用小寫字母開 的 合而成。例如:boolflag;intdrawmode;【
15、 3-2-3 】常量全用大寫的字母,用下劃 分割 。例如:const intmax = 100;const intmax_length = 100;【 3-2-4 】靜 量加前 s_(表示 static)。例如:voidinit()static ints_initvalue;/靜 量【 3-2-5 】如果不得已需要全局 量, 使全局 量加前 g_(表示 global )。例如:intg_howmanypeople;/ 全局 量intg_howmuchmoney;/ / 全局 量【 3-2-6 】 的數(shù)據(jù)成 加前 m_(表示 member), 可以避免數(shù)據(jù)成 與成 函數(shù)的參數(shù)同名。例如:void
16、 object:setvalue(int width, int height)m_width = width;m_height = height;【 3-2-7 】 了防止某一 件 中的一些 符和其它 件 中的沖突,可以 ;.,.各種標(biāo)識符加上能反映軟件性質(zhì)的前綴。例如三維圖形標(biāo)準(zhǔn)opengl的所有庫函數(shù)均以gl 開頭,所有常量(或宏定義)均以gl開頭。第 4 章表達式和基本語句表達式和語句都屬于 c的短語結(jié)構(gòu)語法。它們看似簡單,但使用時隱患比較多。本章歸納了正確使用表達式和語句的一些規(guī)則與建議。4.1 運算符的優(yōu)先級c語言的運算符有數(shù)十個,運算符的優(yōu)先級與結(jié)合律如表4-1 所示。注意一元運算
17、符+-* 的優(yōu)先級高于對應(yīng)的二元運算符。優(yōu)先級運算符()- .從!+-(類型) sizeof高+-*&*/%到+-低排列= !=&|&|?:= += -= *= /= %= &= = |= =結(jié)合律從左至右從右至左從左至右從左至右從左至右從左至右從左至右從左至右從左至右從左至右從左至右從右至左從右至左從左至右表4-1 運算符的優(yōu)先級與結(jié)合律【規(guī)則 4-1-1 】如果代碼行中的運算符比較多,用括號確定表達式的操作順序,避免使用默認(rèn)的優(yōu)先級。由于將表 4-1 熟記是比較困難的,為了防止產(chǎn)生歧義并提高可讀性,應(yīng)當(dāng)用括號確定表達式的操作順序。例如:word = (high=b&cd&c+f=g+h;/
18、復(fù)合表達式過于復(fù)雜【規(guī)則 4-2-2 】不要有多用途的復(fù)合表達式。例如:d=(a=b+c)+r;該表達式既求a值又求 d值。應(yīng)該拆分為兩個獨立的語句:a = b + c;d = a + r;【規(guī)則 4-2-3 】不要把程序中的復(fù)合表達式與“真正的數(shù)學(xué)表達式”混淆。例如:if(abc)/abc 是數(shù)學(xué)表達式而不是程序表達式并不表示if (ab)&(bc)而是成了令人費解的if(ab)=”或“ =-epsinon)&(x=epsinon)其中 epsinon是允許的誤差(即精度)。4.3.4 指針變量與零值比較【規(guī)則 4-3-4 】應(yīng)當(dāng)將指針變量用“=”或“! =”與 null比較。指針變量的零值
19、是“空”(記為null)。盡管 null的值與 0相同,但是兩者意義不同。假設(shè)指針變量的名字為p,它與零值比較的標(biāo)準(zhǔn)if 語句如下:if(p=null)/p 與 null顯式比較,強調(diào)p是指針變量if(p!=null)不要寫成if(p=0)/ 容易讓人誤解 p是整型變量if(p!=0)或者if(p)/ 容易讓人誤解p是布爾變量if(!p)4.3.5 對 if 語句的補充說明有時候我們可能會看到if(null=p) 這樣古怪的格式。不是程序?qū)戝e了,是程序;.,.員為了防止將 if(p=null) 誤寫成 if(p=null) ,而有意把 p和 null顛倒。編譯器認(rèn)為 if(p=null) 是合
20、法的,但是會指出 if(null=p) 是錯誤的,因為 null不能被賦值。程序中有時會遇到if/else/return的組合,應(yīng)該將如下不良風(fēng)格的程序if(condition)returnx;returny;改寫為if(condition)returnx;elsereturny;或者改寫成更加簡練的return(condition?x:y);4.4 循環(huán)語句的效率c循環(huán)語句中, for 語句使用頻率最高, while 語句其次, do語句很少用。本節(jié)重點論述循環(huán)體的效率。提高循環(huán)體效率的基本辦法是降低循環(huán)體的復(fù)雜性。【建議 4-4-1 】在多重循環(huán)中,如果有可能,應(yīng)當(dāng)將最長的循環(huán)放在最內(nèi)層,
21、最短的循環(huán)放在最外層,以減少 cpu跨切循環(huán)層的次數(shù)。例如示例 4-4(b) 的效率比示例 4-4(a) 的高。 for (row=0; row100; row+)for (col=0; col5; col+)fum = sum+arowcol;示例 4-4(a) 低效率:長循環(huán)在最外層for (col=0; col5; col+)for (row=0; row100; row+)fum = sum+arowcol;.,.示例 4-4(b) 高效率:長循環(huán)在最內(nèi)層【建 4-4-2 】如果循 體內(nèi)存在 判斷,并且循 次數(shù)很大,宜將 判斷移到循 體的外面。示例4-4(c) 的程序比示例4-4(d)
22、 多 行了 n-1 次 判斷。并且由于前者老要 行 判斷,打斷了循 “流水 ”作 ,使得 器不能 循 行 化 理,降低了效率。如果 n非常大,最好采用示例4-4(d)的寫法,可以提高效率。如果n非常小,兩者效率差 并不明 ,采用示例4-4(c) 的寫法比 好,因 程序更加 。for (i=0; in; i+)if (conditiondosomething();elsedootherthing();表4-4(c)效率低但程序簡潔if(condition)for(i=0;in;i+)dosomething();elsefor(i=0;in;i+)dootherthing();表4-4(d) 效率
23、高但程序不簡潔4.5for 語句的循環(huán)控制變量【 4-5-1 】不可在 for 循 體內(nèi)修改循 量,防止for 循 失去控制。【建 4-5-1 】建 for 句的循 控制 量的取 采用“半開半 區(qū) ”寫法。示例 4-5(a) 中的 x 屬于半開半 區(qū) “0=xn”,起點到 點的 隔 n,循 次數(shù) n。示例 4-5(b) 中的 x 屬于 區(qū) “0=x=n-1”,起點到 點的 隔 n-1 ,循 次數(shù) n。相比之下,示例4-5(a)的寫法更加直 ,盡管兩者的功能是相同的。for(intx=0;xn;x+)示例 4-5(a) 循環(huán)變量屬于半開半閉區(qū)間for(intx=0;x=n-1;x+);.,.示例
24、 4-5(b) 循環(huán)變量屬于閉區(qū)間4.6switch 語句switch 是多分支 句,而if 句只有兩個分支可供 。 然可以用嵌套的if 句來 多分支 ,但那 的程序冗 。 是switch 句存在的理由。switch 句的基本格式是:switch(variable)case value1:break;case value2:break;default:break;【 4-6-1 】每個 case 句的 尾不要忘了加break ,否 將 致多個分支重疊(除非有意使多個分支重疊)。【 4-6-2 】不要忘 最后那個default分支。即使程序真的不需要default 理,也 保留 句default
25、:break; 做并非多此一 ,而是 了防止 人 以 你忘了default 理。4.7goto 語句自從提倡 構(gòu)化 以來,goto 就成了有爭 的 句。首先,由于goto 句可以靈活跳;.,. ,如果不加限制,它的確會破壞 構(gòu)化 格。其次,goto 句 常 來 或 患。它可能跳 了某些 象的構(gòu)造、 量的初始化、重要的 算等 句,例如:gotostate;strings1,s2; /被 goto 跳 intsum = 0;/被 goto 跳 state:如果 器不能 此 ,每用一次goto 句都可能留下 患。很多人建 除 c的 goto 句,以 后患。但 事求是地 , 是程序 自己造成的,不是
26、goto 的 。 goto 句至少有一 可 神通,它能從多重循 體中咻地一下子跳到外面,用不著寫很多次的 break 句 ; 例如 gotoerror;error:就象樓房著火了,來不及從樓梯一 一 往下走,可從窗口跳出火坑。所以我 主 少用、慎用 goto 句,而不是禁用。第 5 章常量常量是一種 符,它的 在運行期 恒定不 。 c 言用 #define 來定 常量(稱 宏常量)。 c+ 言除了 #define 外 可以用 const 來定 常量(稱 const 常量)。5.1 為什么需要常量如果不使用常量,直接在程序中填寫數(shù)字或字符串,將會有什么麻 ?( 1)程序的可 性(可理解性) 差。
27、程序 自己會忘 那些數(shù)字或字符串是什么意思,用 更加不知它 從何 來、表示什么。( 2)在程序的很多地方 入同 的數(shù)字或字符串, 保不 生 寫 。( 3)如果要修改數(shù)字或字符串, 會在很多地方改 ,既麻 又容易出 。;.,.【規(guī)則 5-1-1 】盡量使用含義直觀的常量來表示那些將在程序中多次出現(xiàn)的數(shù)字或字符串。例如:#definemax100/*c語言的宏常量*/constintmax=100;/ c+語言的 const 常量constfloatpi=3.14159;/c+語言的 const 常量5.2const與#define的比較c+語言可以用 const 來定義常量,也可以用 #defi
28、ne 來定義常量。但是前者比后者有更多的優(yōu)點:( 1) const 常量有數(shù)據(jù)類型,而宏常量沒有數(shù)據(jù)類型。編譯器可以對前者進行類型安全檢查。而對后者只進行字符替換,沒有類型安全檢查,并且在字符替換可能會產(chǎn)生意料不到的錯誤(邊際效應(yīng))。( 2)有些集成化的調(diào)試工具可以對const 常量進行調(diào)試,但是不能對宏常量進行調(diào)試?!疽?guī)則 5-2-1 】在 c+程序中只使用 const 常量而不使用宏常量,即 const 常量完全取代宏常量。5.3 常量定義規(guī)則【規(guī)則 5-3-1 】需要對外公開的常量放在頭文件中,不需要對外公開的常量放在定義文件的頭部。為便于管理,可以把不同模塊的常量集中存放在一個公共的頭
29、文件中。【規(guī)則 5-3-2 】如果某一常量與其它常量密切相關(guān),應(yīng)在定義中包含這種關(guān)系,而不應(yīng)給出一些孤立的值。例如:constfloatradius=100;constfloatdiameter=radius*2;第 6 章函數(shù)設(shè)計函數(shù)是 c程序的基本功能單元,其重要性不言而喻。函數(shù)設(shè)計的細(xì)微缺點很容易導(dǎo)致該函數(shù)被錯用,所以光使函數(shù)的功能正確是不夠的。本章重點論述函數(shù)的接口設(shè)計和內(nèi)部實現(xiàn)的一些規(guī)則。函數(shù)接口的兩個要素是參數(shù)和返回值。c語言中,函數(shù)的參數(shù)和返回值的傳遞方式有兩種:值傳遞( passbyvalue )和指針傳遞( passbypointer )。 c+語言中多了引用傳遞( pass
30、byreference )。由于引用傳遞的性質(zhì)象指針傳遞,而使用方式卻象值傳遞,初學(xué)者常常迷惑不解,容易引起混亂,請先閱讀6.6 節(jié)“引用與指針的比較”。;.,.6.1 參數(shù)的規(guī)則【 6-1-1 】參數(shù)的 寫要完整,不要 省事只寫參數(shù)的 型而省略參數(shù)名字。如果函數(shù)沒有參數(shù), 用void 填充。例如:void setvalue(int width, int height);/良好的 格void setvalue(int,int);/ 不良的 格float getvalue(void);/ 良好的 格float getvalue();/ 不良的 格【 6-1-2 】參數(shù)命名要恰當(dāng), 序要合理。例如 寫字符串拷 函數(shù)stringcopy ,它有兩個參數(shù)。如果把參數(shù)名字起 str1 和str2 ,例如void stringcopy(char *str1,char *str2);那么我 很 搞清楚究竟是把str1 拷 到 str2 中, 是 好倒 來??梢园褏?shù)
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 論文初稿 抄襲
- 安全文化活動組織實施
- 甘肅地名介紹
- 重慶市兩江育才中學(xué)2026屆高二上生物期末聯(lián)考模擬試題含解析
- 2026年宜賓三江新區(qū)羅龍中心幼兒園招聘備考題庫及一套完整答案詳解
- 2025年宣威市格宜鎮(zhèn)公開招聘村級衛(wèi)生室鄉(xiāng)村醫(yī)生備考題庫帶答案詳解
- 2026年三亞大小洞天發(fā)展有限公司招聘經(jīng)理備考題庫完整答案詳解
- 2026年衛(wèi)健學(xué)院夏彤課題組科研助理招聘備考題庫及答案詳解一套
- 2026年1中山市橫欄港源學(xué)校教師招聘備考題庫及一套答案詳解
- 2026年北京師范大學(xué)新聞傳播學(xué)院吳喬飛課題組科研助理招聘備考題庫及答案詳解1套
- 消化系統(tǒng)疾病課件
- 工程維保三方合同
- 地鐵車輛檢修安全培訓(xùn)
- 造血干細(xì)胞移植臨床應(yīng)用和新進展課件
- GB/T 10802-2023通用軟質(zhì)聚氨酯泡沫塑料
- 黑布林英語閱讀初一年級16《柳林風(fēng)聲》譯文和答案
- 杰青優(yōu)青學(xué)術(shù)項目申報答辯PPT模板
- 宿舍入住申請書
- 深圳中核海得威生物科技有限公司桐城分公司碳13-尿素原料藥項目環(huán)境影響報告書
- 2023年全國高考體育單招文化考試數(shù)學(xué)試卷真題及答案
- GB/T 28733-2012固體生物質(zhì)燃料全水分測定方法
評論
0/150
提交評論