C 編碼規範試題三

2021-04-12 04:14:21 字數 3965 閱讀 4268

c++編碼規範試題(滿分100分)

一、單選題(5*2)

1、關於函式引數,不正確的說法是:

a、對引數輸入和非引數輸入都要檢查有效性。

b、防止將函式的引數作為工作變數。

c、在呼叫函式填寫引數時,應儘量減少沒有必要的預設資料型別轉換或強制資料型別轉換

d、非排程函式應減少或防止控制引數,盡量不要使用資料引數。

2、巨集定義#define square(a) ((a) * (a)) 在b = square(a++)中,a被執行了次加1

a、0次; b、1次; c、2次; d、3次

3. ()關於可測性,正確的說法是 :

a 斷言用來處理必須處理的錯誤情況

b 除錯時列印的出錯資訊只要有錯誤碼就行了

c 軟體的debug版本與發行版本分為兩套進行維護

d 專案組內要有一套統一的錯誤輸出函式

4. ()以下程式中,可讀性較好的有 :

a rect.length = 10; char_poi = str; rect.width = 5;

b if (trunk[index].trunk_state == 0)

c word = (high << 8) | low;

d * ++ stat_poi += 1;

5、若已經定義:int a[9], *p = a;並在以後的語句中未改變p的值,能表示a[1]位址的表示式是:

a、++a; b、a++; c、++p; d、p++;

二、多選題(11*4)

1、關於變數,正確的說法是:

a、若全域性變數僅在單個c檔案中訪問,則可以將這個變數修改為靜態全域性變數,以降低模組間的耦合度;

b、若全域性變數僅在單個函式中訪問,則可以將這個變數修改為該函式的靜態區域性變數,以降低模組間的耦合度;

c、設計和使用訪問動態全域性變數、靜態全域性變數、靜態區域性變數的函式時,需要考慮重入問題;

d、靜態全域性變數過大,可能會導致堆疊溢位。

2、a機和b機通訊,使用以下結構

struct a_b_com

;對這個結構定義的評價中,正確的是:

a、由於a機與b機可能使用不同的編譯環境,該結構占用空間可能不一致;

b、由於a機與b機可能位元組序不同,位域的各位在記憶體中存放的順序可不一致;

c、第三個結構成員沒有名字,編譯會出錯;

d、結構中使用位域,不僅節省了空間,也提高了訪問效率。

3、關於編譯預處理程式的功能包括但不限於:

a、巨集定義;

b、條件編譯;

c、在源**中插入預定義的環境變數;

d、開啟或關閉某個編譯選項。

4、關於**的編譯、編譯和審查,下面說法不正確的是:

a、在產品軟體(專案組)中,可不統一編譯開關選項;

b、對於安排進行單元測試的**可以不用進行**審查;

c、logiscope工具不具有審查**的功能;

d、考慮到開發人員的個人習慣,軟體系統目錄可自行設計

5. ( )下列哪些命名是不允許的 :

a get_card_stat

b get_card_stat

c m_getcardstat

d _get_card_2_stat

6. ( )關於結構,正確的說法是 :

a 結構占用的空間大小,不僅取決於結構成員的定義,還取決於結構成員的排列順序,以及結構的位元組對齊方式

b 結構成員的排列順序,會影響結構成員資料的訪問效率

c 功能太單一的結構,會降低**效率

d 結構中使用位域,不僅節省了空間,也提高了訪問效率

7. ( )一般說來,以下哪一段**可能有問題 :

a.unsigned int size;

while(size -- >=0)

b./*name為一字串型變數,用以存放名稱*/

unsigned char name[maxnamelen];

/*分析組成名字的每乙個字元,進行相應的處理*/

while(* name ++)

c.unsigned char ch;

file * date_file;

for(;;)}d.

struct s ;

struct s x = ;

8、( )關於結構,正確的說法是 :

a 結構占用的空間大小,不僅取決於結構成員的定義,還取決於結構成員的排列順序,以及結構的位元組對齊方式

b 結構成員的排列順序,會影響結構成員資料的訪問效率

c 功能太單一的結構,會降低**效率

d 結構中使用位域,不僅節省了空間,也提高了訪問效率

9、a機和b機通訊,使用以下結構

struct a_b_com

;對這個結構定義的評價中,正確的是:

a、由於a機與b機可能使用不同的編譯環境,該結構占用空間可能不一致;

b、由於a機與b機可能位元組序不同,位域的各位在記憶體中存放的順序可不一致;

c、第三個結構成員沒有名字,編譯會出錯;

d、結構中使用位域,不僅節省了空間,也提高了訪問效率。

10、關於編譯預處理程式的功能包括但不限於:

a、巨集定義;

b、條件編譯;

c、在源**中插入預定義的環境變數;

d、開啟或關閉某個編譯選項。

11、關於變數,正確的說法是:

a、若全域性變數僅在單個c檔案中訪問,則可以將這個變數修改為靜態全域性變數,以降低模組間的耦合度;

b、若全域性變數僅在單個函式中訪問,則可以將這個變數修改為該函式的靜態區域性變數,以降低模組間的耦合度;

c、設計和使用訪問動態全域性變數、靜態全域性變數、靜態區域性變數的函式時,需要考慮重入問題;

d、靜態全域性變數過大,可能會導致堆疊溢位。

三、 判斷題(23*2)

1. 在同一軟體產品內,應規劃好介面部分識別符號(變數、結構、函式及常量)的命名,防止編譯、鏈結時產生衝突。如可規定介面部分的變數與常量之前加上「模組」標識等。

2. 公共變數是增大模組間耦合的原因之一,故應減少沒有必要的公共變數以降低模組間的耦合度。

3. char a[2][3][4][5][6][7][8];這樣的全域性變數申請是允許的。

4. 若兩個結構間關係較複雜、密切,那麼應合為乙個結構。

5. 對模組中函式的劃分及組織方式進行分析、優化,改進模組中函式的組織結構,可以從根本上解決程式效率的問題。

6. #pragma指令可啟用或者終止編譯程式所支援的一些編譯功能。

7. 任意兩個型別的指標都可以進行<, >, >=, <=, == 等比較.

8. 遞迴呼叫使**簡潔,可以使用;但是在主機類函式中是絕對禁止的。

9. 非排程函式應減少或防止控制引數,盡量不要使用資料引數。

10. 函式設計要符合"高扇入、合理扇出"的原則。

11. 標頭檔案可以互相包含,使用"#ifndef…"的形式保證不會重複引用。

12. 陣列比指標定址、運算速度快,因此推薦使用陣列,少用指標。

13. 程式編譯時,要求放開所有的編譯告警開關。

14. 命名中特殊的縮略語可以不需要有注釋.

15. 要有自己特有的命名風格,並要始終如一。

16. 通過對系統資料結構的劃分與組織的改進,以及對程式演算法的優化是解決軟體空間效率的有效辦法。

17. 在乙個產品的設計中,可以為整合測試和系統測試分別定義不同的調測試開關和列印函式,用不同的巨集開關控制。

18. 任意兩個型別的指標都可以進行<, >, >=, <=, == 等比較。

19. 標頭檔案可以互相包含,使用"#ifndef…"的形式保證不會重複引用。

20. 不允許把多個短語句寫在一行中,即一行只寫一條語句

21. 如果程式設計工具提供將tab鍵轉換成空格鍵,對齊、縮排可以使用tab鍵,否則應使用空格鍵

22. 如下if語句正確嗎? if (pusercr == null) return;

23. 單元測試開始要跟蹤每一條語句,並觀察資料流及變數的變化。不能進行單步跟蹤的**,要採用日誌輸出等形式,跟蹤資料流和變數的變化.

C語言程式編碼規範

基本要求 1.1 程式結構清析,簡單易懂,單個函式的程式行數不得超過100行。1.2 打算幹什麼,要簡單,直接了當,精簡,避免垃圾程式。1.3 盡量使用標準庫函式和公共函式。1.4 不要隨意定義全域性變數,盡量使用區域性變數。1.5 使用括號以避免二義性。2.可讀性要求 2.1 可讀性第一,效率第二...

c 赫夫曼編碼設計報告

實驗三赫夫曼樹編碼 題目 建立赫夫曼樹並進行編碼和解碼 班級 計科0906 姓名 馬飛揚學號 200948140622 完成日期 一 需求分析 由輸入字元的使用頻率建立赫夫曼樹,並求出 儲存赫夫曼編碼,輸入字串轉化為編碼輸出,輸入編碼轉化為字串輸出。二 概要設計 1 根據輸入的字元的使用頻率建立相應...

圖紙編碼及填寫規範

技術部汪國平 一目的加強對技術部檔案 圖紙的管理,使設計 工藝檔案管理有規可尋,實現資源共享。二適用範圍 適用於技術部所有設計 工藝圖紙的編碼及管理。三定義本制度所述的技術檔案包括產品零件圖 裝配圖 工裝 量具圖,試製流程圖 工藝規程 檢驗卡片 作業指導書 質量記錄 檔案資料等。三主要內容 1 軟體...