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 軟體...