<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • 全國計算機二級c語言真題

    時間:2025-01-23 16:20:44 思穎 計算機等級 我要投稿
    • 相關推薦

    全國計算機二級c語言真題(精選8套)

      親愛的考生們,全國計算機二級 C 語言真題演練開啟。這不僅是一次考試模擬,更是提升編程能力的機遇。通過真題,熟悉考試題型與難度,查漏補缺,為成功通過考試奠定堅實基 H夢頤且黃鷦謖嫣庵心ロ攏向計算機二級證書邁進。

      全國計算機二級c語言真題 1

      1.C語言編譯程序的功能是( )。

      A. 執行一個C語言編寫的源程序

      B. 把C源程序翻譯成ASCII碼

      C. 把C源程序翻譯成機器代碼

      D. 把C源程序與系統提供的庫函數組合成一個二進制執行文件

      【答案】C

      【解析】編譯程序的功能是將“高級語言”翻譯為“機器語言”。每條C語言語句,經過編譯最終都將轉換成二進制的機器指令。答案選擇C選項。

      2. 計算機高級語言程序的運行方法有編譯執行和解釋執行兩種,以下敘述中正確的是( )。

      A. C語言程序僅可以編譯執行

      B. C語言程序僅可以解釋執行

      C. C語言程序既可以編譯執行,又可以解釋執行;

      D. 以上說法都不對

      【答案】A

      【解析】編譯執行是指程序執行前需要一個專門的編譯過程把程序編譯成機器語言的文件,再次運行時不需要重新翻譯,執行效率高;解釋執行是指每個語句都是執行的時候才翻譯,執行效率低。用C語言編寫的程序必須經過編譯器編譯后,轉換為二進制的機器指令來運行。答案選擇A選項。

      3. 以下敘述中錯誤的是( )。

      A. C語言中的每條可執行語句和非執行語句最終都將被轉換成二進制的機器指令

      B. C程序經過編譯、鏈接步驟之后才能形成一個真正可執行的二進制機器指令文件

      C. 用C語言編寫的程序稱為源程序,它以ASCII代碼形式存放在一個文本文件中

      D. C語言源程序經編譯后生成后綴為的目標程序

      【答案】A

      【解析】A項錯誤,注釋語句不會被翻譯成二進制的機器指令。C源程序經過C編譯程序編譯之后生成后綴為的二進制文件(稱為目標文件),然后由“鏈接程序”(Link)的軟件把文件與各種庫函數連接起來生成一個后綴為的可執行文件。答案選擇A選項。

      4. 以下敘述中錯誤的是()

      A.C語言的可執行程序是由一系列機器指令構成的

      B. 用C語言編寫的源程序不能直接在計算機上運行

      C. 通過編譯得到的二進制目標程序需要連接才可以運行

      D. 在沒有安裝C語言集成開發環境的.機器上不能運行C源程序生成的exe文件

      【答案】D

      【解析】A項正確,C語言的可執行程序是由一系列機器指令組成的;BC項正確,用C語言編寫的源程序必須經過編譯,生成二進制目標代碼,再經過連接才能運行;D項錯誤,C語言經過編譯鏈接后的二進制目標代碼可以脫離C語言集成開發環境獨立運行。答案選擇D選項。

      5. 以下敘述正確的是( )。

      A. C編譯程序把文件后綴為.c的源程序文件編譯成文件后綴為的二進制文件

      B. C編譯程序把文件后綴為.c的源程序文件編譯成文件后綴為的可執行文件

      C. C編譯程序把文件后綴為的二進制文件編譯成文件后綴為的可執行文件

      D. 鏈接程序把文件后綴為.c的源程序文件鏈接成文件后綴為的可執行文件

      【答案】A

      【解析】C編譯程序把文件后綴為C的源程序文件編譯成文件后綴為的二進制文件,鏈接將一個或多個目標文件與程序用到的庫文件連接起來,形成一個可以在操作系統直接運行的執行程序,故排除B、C、D項,答案選擇A選項。

      6. 以下敘述中正確的是(A. 在C語言程序中,main函數必須放在其他函數的最前面

      B. 每個后綴為.c的C語言源程序都可以單獨進行編譯

      C. 在C語言程序中,只有main函數才可以單獨進行編譯

      D. 每個后綴為.c的C語言源程序都應該包含一個main函數

      【答案】B

      【解析】main函數可以在程序的任何位置。每一個可執行的C程序都必須有一個且只能有一個主函數。后綴名為.c的C語言源程序都可以單獨進行編譯。main函數只是讓執行程序的系統知道該從哪里開始執行程序(從主函數處執行),其他有關這個程序的子函數是通過函數調用來實現其功能(不需main函數)。答案選擇B選項。

      7. 以下敘述中錯誤的是( )。

      A. C語言編寫的函數源程序,其文件名后綴可以是.c

      B. C語言編寫的函數都可以作為一個獨立的源程序文件

      C. C語言編寫的每個函數都可以進行獨立的編譯并執行;

      D. 一個C語言程序只能有一個主函數

      【答案】C

      【解析】C源程序經過C編譯程序編譯之后生成一個后綴為的二進制文件(稱為目標文件),然后由稱為“連接程序”(Link)的軟件,把此文件與C語言提供的各種庫函數連接起來生成一個后綴為的可執行文件。只有含有main函數的經過編譯鏈接才能執行。答案選擇C選項。

      8. 以下敘述中錯誤的是(A. 一個C程序可以包含多個不同名的函數

      B. 一個C程序只能有一個主函數

      C. C程序在書寫時,有嚴格的縮進要求,否則不能編譯通過

      D. C程序的主函數必須用main作為函數名

      【答案】C

      【解析】一個C程序有且只有一個主函數main。一個C程序可以包含多個不同名字的子函數。C程序在書寫時沒有嚴格的縮進要求。答案選擇C選項。

      9. 以下敘述中正確的是( )。

      A. C語言規定必須用main作為主函數名,程序將從此開始執行

      B. 可以在程序中由用戶指定任意一個函數作為主函數,程序將從此開始執行

      C. C語言程序將從源程序中第一個函數開始執行;

      D. main的各種大小寫拼寫形式都可以作為主函數名,如:MAIN,Main等

      【答案】A

      【解析】用戶不能指定某函數為主函數,C語言規定,程序從main函數開始執行,從main函數退出,C語言函數名區別大小寫。答案選擇A選項。

      10. 下列敘述中錯誤的是( )。

      A. C程序可以由一個或多個函數組成

      B. C程序可以由多個程序文件組成

      C. 一個C語言程序只能實現一種算法

      D. 一個C函數可以單獨作為一個C程序文件存在

      【答案】C

      【解析】一個C程序可以有一個或多個程序文件,也可以有一個或多個函數,所以一個C語言程序可以實現多種算法,答案選擇C選項。

      全國計算機二級c語言真題 2

      1.下面對軟件特點描述不正確的是( )。

      A. 軟件是一種邏輯實體,具有抽象性

      B. 軟件開發、運行對計算機系統具有依賴性

      C. 軟件開發涉及軟件知識產權、法律及心理等社會因素

      D. 軟件運行存在磨損和老化問題

      【答案】D

      【解析】軟件具有以下特點:①軟件具有抽象性,是一種邏輯實體;②軟件沒有明顯的制作過程;③軟件在使用期間不存在磨損、老化問題,④對硬件和環境具有依賴性;⑤軟件復雜性高,成本昂貴;⑥軟件開發涉及諸多的社會因素。D項描述是硬件存在的問題。答案選擇D選項。

      2. 下面描述不屬于軟件特點的是( )。

      A. 軟件是一種邏輯實體,具有抽象性

      B. 軟件在使用中不存在磨損、老化問題

      C. 軟件復雜性高

      D. 軟件使用不涉及知識產權

      【答案】D

      【解析】軟件具有以下特點:①軟件是一種邏輯實體,具有抽象性;②軟件沒有明顯的制作過程,③軟件在使用期間不存在磨損、老化問題;④軟件對硬件和環境具有依賴性;⑤軟件復雜性高,成本昂貴,⑥軟件開發涉及諸多的社會因素,如知識產權等。答案選擇D選項。

      3. 下面對軟件特點描述錯誤的是()

      A.軟件沒有明顯的制作過程

      B. 軟件是一種邏輯實體,不是物理實體,具有抽象性

      C. 軟件的開發、運行對計算機系統具有依賴性

      D. 軟件在使用中存在磨損、老化問題

      【答案】D

      【解析】軟件的特點有:①具有抽象性,是邏輯實體;②沒有明顯的制作過程;③在使用期間不存在磨損、老化問題;④對硬件和環境具有依賴性;⑤復雜性高,成本昂貴;⑥開發涉及諸多的社會因素。答案選擇D選項。

      4. 軟件按功能可以分為:應用軟件、系統軟件和支撐軟件(或工具軟件)。下面屬于系統軟件的是( )。

      A. 編輯軟件

      B. 操作系統

      C. 教務管理系統

      D. 瀏覽器

      【答案】B

      【解析】系統軟件是控制和協調計算機及外部設備,支持應用軟件開發和運行的軟件,操作系統是系統軟件;支撐軟件是支撐各種軟件的開發與維護的軟件,又稱為軟件開發環境,瀏覽器屬于支撐軟件;應用軟件是用戶可以使用的各種程序設計語言,以及用各種程序設計語言編制的應用程序的集合,編輯軟件、教務管理軟件屬于應用軟件。答案選擇B選項。

      5. 軟件按功能可以分為應用軟件、系統軟件和支撐軟件(或工具軟件),下面屬于應用軟件的是( )。

      A. 學生成績管理系統

      B. C語言編譯程序

      C. UNIX操作系統

      D. 數據庫管理系統

      【答案】A

      【解析】應用軟件是為解決特定領域的應用而開發的軟件,如事務處理軟件,工程與科學計算軟件,學生成績管理系統、教務管理系統、瀏覽器、編輯軟件等應用性質不同的各種軟件。系統軟件是計算機管理自身資源,提高計算機使用效率并服務于其他程序的軟件,如操作系統,編譯程序,匯編程序,數據庫管理系統等。支撐軟件是介于系統軟件和應用軟件之間,協助用戶開發軟件的工具性軟件,包括輔助和支持開發和維護應用軟件的工具軟件,如需求分析工具軟件,設計工具軟件,編碼工具軟件,測試工具軟件,維護工具軟件等。答案選擇A選項。

      6. 數據庫管理系統是( )。

      A. 操作系統的一部分

      B. 在操作系統支持下的系統軟件

      C. 一種編譯系統

      D. 一種操作系統

      【答案】B

      【解析】系統軟件主要包括:①操作系統軟件;②各種語言的解釋程序和編譯程序;③各種服務性程序;④各種數據庫管理系統。數據庫管理系統是一種系統軟件,負責數據庫中的數據組織、數組操縱、數據維護、控制和保護以及數據服務等。答案選擇B選項。

      7. 數據庫管理系統是( )。

      A. 操作系統的一部分

      B. 在操作系統支持下的'系統軟件

      C. 一種編譯系統

      D. 一種通信軟件系統

      【答案】B

      【解析】系統軟件主要包括:①操作系統軟件;②各種語言的解釋程序和編譯程序;③各種服務性程序;④各種數據庫管理系統。數據庫管理系統是一種系統軟件,負責數據庫中的數據組織、數組操縱、數據維護、控制和保護以及數據服務等。答案選擇B選項。

      8. 下列選項中,不屬于數據管理員(DBA)職責的是( )。

      A. 數據庫維護

      B. 數據庫設計

      C. 改善系統性能,提高系統效率

      D. 數據類型轉換

      【答案】D

      【解析】數據庫管理員對數據庫進行規劃、設計、維護、監視等,其主要工作有:①數據庫設計,主要是對數據模式進行設計,②數據庫維護,對數據庫中的數據安全性、完整性、并發控制及系統恢復、數據定期轉儲等進行實施與維護;③改善系統性能,不斷調整內部結構,提高系統效率。答案選擇D選項。

      9. 數據庫系統的核心是( )。

      A. 數據模型

      B. 軟件開發

      C. 數據庫設計

      D. 數據庫管理系統

      【答案】D

      【解析】數據庫系統包括四個部分:數據庫、數據庫管理系統、數據庫應用程序、數據庫管理員。其中DBMS是為數據庫的建立、使用和維護而配置的軟件,是數據庫系統的核心。答案選擇D選項。

      10. 下列敘述中正確的是( )。

      A. 數據庫系統是一個獨立的系統,不需要操作系統的支持

      B. 數據庫技術的根本目標是要解決數據的共享問題

      C. 數據庫管理系統就是數據庫系統

      D. 數據庫系統由數據庫應用系統、數據庫和數據庫管理系統組成。

      【答案】B

      【解析】A項錯誤,數據庫需要調用操作系統的接口,需要操作系統的支持;C項錯誤,數據庫管理系統(DBMS)是數據庫系統的核心,負責數據庫中的數據組織、數據操作、數據維護、控制及保護和數據服務等;D項錯誤,數據庫應用系統是數據庫系統再加上應用軟件及應用界面這三者所組成,具體包括:數據庫、數據庫管理系統、數據庫管理員、硬件平臺、軟件平臺、應用軟件、應用界面。答案選擇B選項。

      全國計算機二級c語言真題 3

      1.下列敘述中正確的是( )。

      A. 所有數據結構必須有根結點

      B. 所有數據結構必須有終端結點(即葉子結點)

      C. 只有一個根結點,且只有一個葉子結點的數據結構一定是線性結構

      D. 沒有根結點或沒有葉子結點的數據結構一定是非線性結構

      【答案】D

      【解析】D項正確,線性結構的特點是:①集合中必存在“第一個元素"且惟一②集合中必存在“最后一個元素”且惟一;③除最后一個元素外,其他數據元素均有惟一的“后繼”,④除第一個元素外,其他數據元素均有惟一的“前驅”。所以沒有根結點或沒有葉子結點的數據結構一定是非線性結構。AB兩項錯誤,不是所有數據結構都必須有根結點和葉子結點;C項錯誤,數據結構中若有中間結點不滿足只有一個前件或者后件的條件,就不是線性結構。答案選擇D選項。

      2. 以下敘述中錯誤的是( )。

      A. C語言中的每條可執行語句和非執行語句最終都將被轉換成二進制的機器指令

      B. C程序經過編譯、鏈接步驟之后才能形成一個真正可執行的二進制機器指令文件

      C. 用C語言編寫的程序稱為源程序,它以ASCII代碼形式存放在一個文本文件中

      D. C語言源程序經編譯后生成后綴為的`目標程序

      【答案】A

      【解析】A項錯誤,注釋語句不會被翻譯成二進制的機器指令。C源程序經過C編譯程序編譯之后生成后綴為的二進制文件(稱為目標文件),然后由“鏈接程序”(Link)的軟件把文件與各種庫函數連接起來生成一個后綴為的可執行文件。答案選擇A選項。

      3. C語言主要是借助以下( )功能來實現程序模塊化的。

      A. 定義函數

      B. 定義常量和外部變量

      C. 三種基本結構語句

      D. 豐富的數據類型

      【答案】A

      【解析】C程序的模塊化主要通過函數來實現。C語言允許對函數單獨進行編譯,從而可以實現模塊化。答案選擇A選項。

      4. 有以下程序段:

      char ch;

      int k;

      ch='a';

      k=12;

      print("%c,%d,",h,ch,k);

      printf("k=%d",k);

      已知字符a的ASCII碼十進制值為97,則執行上述程序段后輸出的結果是( )。

      A. 因變量類型與格式描述符的類型不匹配輸出無定值

      B. 輸出項與格式描述符個數不符,輸出為零值或不定值

      C.a,97,12k=12

      D. a,97,k=12

      【答案】D

      【解析】字符變量的值是該字符的ASCII碼值,可以參與整型變量所允許的任何運算。"ch='a",%c表示以字符格式輸出ch的值,所以輸出為a;%d表示以十進制代碼的形式輸出ch的值,為97;k沒有對應的輸出格式,不輸出。在第二個語句中,首先輸出"k=",然后以十進制代碼輸出k的值,為12。答案選擇D選項。

      5. 下列敘述中正確的是( )。

      A. 棧是“先進先出”的線性表

      B. 隊列是“先進后出"的線性表

      C. 循環隊列是非線性結構

      D. 有序線性表既可以采用順序存儲結構,也可以采用鏈式存儲結構

      【答案】D

      【解析】有序的線性表既可采用順序存儲結構,也可以采用鏈式存儲結構。A項錯誤,棧是“先進后出"的線性表B項錯誤,隊列是“先進先出"的線性表;C項錯誤,循環隊列是線性結構的,有序的線性表既可采用順序存儲結構,也可采用鏈式存儲結構。

      答案選擇D選項。

      6. 某二叉樹的中序序列為DCBAEFG,后序序列為DCBGFEA,則該二叉樹的深度(根結點在第1層)為( )。

      A. 5

      B. 40

      C.3

      D. 2

      【答案】B

      【解析】二叉樹的后序序列為DCBGFEA,則A為根結點。中序序列為DCBAEFG,則DCB為左子樹結點,EFG為右子樹結點。同理B為C父結點,C為D父結點。根據分析,可畫出左子樹,同理E為F父結點,F為G父結點。根據分析,可畫出右子樹,故二叉樹深度為4層。答案選擇B選項。

      7. 設有定義:struct{intn;floatx;}s[2],m[2]={{10,2.8},{0,0.0}};,則以下賦值語句中正確的是( )。

      A. s[0]=m[1];

      B. s=m;

      C.s.n=m.n;

      D. s[2].x=m[2].x;

      【答案】A

      【解析】定義了結構體類型數組s,長度為2,結構體類型數組m,長度為2,并對數組m進行了初始化。同類型的結構體可以直接用變量名實現賦值,A項正確;數組名為數組首地址,地址常量之間不可以相互賦值,B項錯誤;數組名為地址常量不是結構體變量,不能引用成員,C項錯誤;s[2]與m[2]數組越界,D項錯誤。答案選擇A選項。

      8. 關于C語言標識符,以下敘述錯誤的是( )。

      A. 標識符可全部由數字組成

      B. 標識符可全部由下劃線組成

      C. 標識符可全部由小寫字母組成

      D. 標識符可全部由大寫字母組成

      【答案】A

      【解析】C語言標識符只能由字母、數字、下劃線構成,且只能以字母、下劃線開頭,故答案選擇A選項。

      9. 以下程序段中的變量已定義為int類型,則

      sum=pAd=5;

      pAd=sum++,++pAd,pAd++;

      printf("%d",pAd);

      程序段的輸出結果是( )。

      A. 6

      B. 4

      C. 5

      D. 7

      【答案】D

      【解析】自增和自減運算符的兩種用法:前置運算,運算符放在變量之前,規則是先使變量的值增(或減)1,然后以變化后表達式的值參與其他運算;后置運算,運算符放在變量之后,規則是變量先參與其他運算,然后再使變量的值增(或減)1。執行pAd=sum++,sum++是后置自增,執行完后,pAd=5,sum=6。++pAd和pAd++語句中沒有其他運算,即效果相同,pAd分別加1,兩句執行完后,pAd7。答案選擇D選項。

      10. 設循環隊列為Q(1:m),其初始狀態為front=rear=m。經過一系列入隊與退隊運算后,front=20,rear=15。現要在該循環隊列中尋找最小值的元素,最壞情況下需要比較的次數為( )。

      A. 5

      B. 6

      C.m-5

      D. m-6

      【答案】D

      【解析】循環隊列是隊列的一種順序存儲結構,用隊尾指針rear指向隊列中的隊尾元素,用隊首指針指向隊首元素的前一個位置,因此,從隊首指針front指向的后一個位置直到隊尾指針rear指向的位置之間所有的元素均為隊列中的元素,隊列初始狀態為front=rear=m,當front=20,rear=15時,隊列中有m-20+15=m-5個元素,最壞情況下需要比較次數為m-6次。答案選擇D選項。

      全國計算機二級c語言真題 4

      1.若有以下數組說明,則i=10;a[a[i]]元素數值是(C )。

      int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};

      A、10

      B、9

      C、6

      D、5

      先算a[a[i]]內層的a[i],由于i=10,因此a[i]即a[10].

      a[10]對應下面數組中的元素為9. 因此a[a[i]]即為a[9]

      a[9]對應下面數組中的元素為6. 因此a[9]即為6

      2.若有說明:int a[][3]={{1,2,3},{4,5},{6,7}}; 則數組a的第一維的大小為: ( B )

      A、2

      B、3

      C、4

      D、無確定值

      5 7

      D、3 6 9

      二維數組的一維大小,即指二維數組的行數,在本題中,按行對二維數組賦值,因此內層有幾個大括號,數組就有幾行

      3.對二維數組的正確定義是(C )

      詳見教材P149~152,二維數組的定義、初始化

      類型符 數組名 [常量表達式][常量表達式]

      二維數組可以看做是矩陣

      類型符是指數組中數組元素的類型;數組名要符合標識符命名規則;第一個常量表達式是指數組的行數;第二個常量表達式是指數組的列數;常量表達式的值只能是整數,不可以是變量,而且從1開始計數。

      一維數組初始化時可以省略數組長度

      二維數組初始化時可以省略行數,但不能省略列數

      選項A,B,都省略了列數

      選項D,不符合二維數組定義的一般形式,行、列常量表達式應該放在不同的[]中

      A、int a[ ][ ]={1,2,3,4,5,6};

      B、int a[2] []={1,2,3,4,5,6};

      C、int a[ ] [3]={1,2,3,4,5,6};

      D、int a[2,3]={1,2,3,4,5,6};

      4.已知int a[3][4];則對數組元素引用正確的是__C___

      A、a[2][4]

      B、a[1,3]

      C、a[2][0]

      D、a(2)(1)

      詳見教材P150,數組元素的引用

      數組名[下標] [下標]

      引用數組元素時,[ ]中的下標為邏輯地址下標,只能為整數,可以為變量,且從0開始計數

      第一個[下標]表示行邏輯地址下標,第二個[下標]表示列邏輯地址下標。

      本題圖示詳見P149圖6.7

      因此a的行邏輯地址范圍0~2;a的列邏輯地址范圍0~3;

      選項A,列邏輯地址下標超過范圍

      選項B,D,的引用形式不正確。

      5.C語言中函數返回值的類型是由 A 決定的

      A、函數定義時指定的類型

      B、 return語句中的表達式類型

      C、 調用該函數時的實參的數據類型

      D、形參的數據類型

      6. 在C語言中,函數的數據類型是指(A )

      A、 函數返回值的數據類型

      B、 函數形參的數據類型

      C、 調用該函數時的實參的數據類型

      D、任意指定的數據類型

      7.在函數調用時,以下說法正確的是( B )

      A、函數調用后必須帶回返回值

      B、實際參數和形式參數可以同名

      C、函數間的數據傳遞不可以使用全局變量

      D、主調函數和被調函數總是在同一個文件里

      8. 在C語言中,表示靜態存儲類別的關鍵字是: ( C )

      A、 auto

      B、 register

      C、static

      D、extern

      9.未指定存儲類別的變量,其隱含的存儲類別為(A )。

      A、auto

      B、static

      C、extern

      D、register

      10. 若有以下說明語句:

      struct student

      { int num;

      char name[ ];

      float score;

      }stu;

      則下面的敘述不正確的是: (D )

      A、 struct是結構體類型的關鍵字

      B、 struct student 是用戶定義的結構體類型

      C、 num, score都是結構體成員名

      D、 stu是用戶定義的結構體類型名

      11.若有以下說明語句:

      struct date

      { int year;

      int month;

      int day;

      }brithday;

      則下面的敘述不正確的是__C___.

      A、 struct是聲明結構體類型時用的關鍵字

      B、 struct date 是用戶定義的結構體類型名

      C、 brithday是用戶定義的結構體類型名

      D、year,day 都是結構體成員名

      12. 以下對結構變量stul中成員age的非法引用是 B

      struct student

      { int age;

      int num;

      }stu1,*p;

      p=&stu1;

      A、 stu1.age

      B、 student.age

      C、 p->age

      D、(*p).age

      13.設有如下定義:

      struck sk

      { int a;

      float b;

      }data;

      int *p;

      若要使P指向data中的a域,正確的賦值語句是 C

      A、 p=&a;

      B、 p=datA、a;

      C、p=&datA、a;

      D、*p=datA、a;

      14.設有以下說明語句:

      typedef struct stu

      { int a;

      float b;

      } stutype;

      則下面敘述中錯誤的是( D )。

      A、struct是結構類型的關鍵字

      B、struct stu是用戶定義的結構類型

      C、a和b都是結構成員名

      D、stutype是用戶定義的`結構體變量名

      15.語句int *p;說明了 C 。

      A、p是指向一維數組的指針

      B、p是指向函數的指針,該函數返回一int型數據

      C、p是指向int型數據的指針

      D、p是函數名,該函數返回一指向int型數據的指針

      16.C語言中,關系表達式和邏輯表達式的值是( B ) 。

      A、0

      B、 0或1

      C、 1

      D、‘T’或’F’

      17. 下面( D )表達式的值為4.

      A、 11/3

      B、 11.0/3

      C、 (float)11/3

      D、 (int)(11.0/3+0.5)

      【解析】(1)相同數據類型的元素進行數學運算(+、-、*、/)得到結果還保持原數據類型。

      (2)不同數據類型的元素進行數學運算,先要統一數據類型,統一的標準是低精度類型轉換為高精度的數據類型。

      選項A,11與3為兩個整數,11/3結果的數據類型也應為整數,因此將3.666666的小數部分全部舍掉,僅保留整數,因此11/3=3.

      選項B,11.0為實數,3為整數,因此首先要統一數據類型,將整型數據3轉換為3.0,轉換后數據類型統一為實型數據,選項B變為11.0/3.0,結果的數據類型也應為實型數據,因此選項B 11.0/3=3.666666

      選項C,先將整數11強制類型轉換,轉換為實型11.0,因此選項C變為11.0/3,其后計算過程、結果與選項B同

      選項D,首先計算11.0/3,其計算過程、結果與選項B同,得到3.666666;再計算3.666666+0.5=4.166666,最后將4.166666強制類型轉換為整型,即將其小數部分全部舍掉,結果為4

      18.設整型變量 a=2,則執行下列語句后,浮點型變量b的值不為0.5的是( B )

      A、b=1.0/a

      B、b=(float)(1/A、

      C、b=1/(float)a

      D、b=1/(a*1.0)

      19. 若“int n; float f=13.8;”,則執行“n=(int)f%3”后,n的值是(A)

      A、1

      B、4

      C、4.333333

      D、4.6

      【解析】“(int)f“表示將f中的值強制類型轉換為整型,即將13.8的小數部分舍掉,轉換為13;然后計算13%3,結果為1,再將結果賦給變量n,因此n的值為1

      20. 以下對一維數組a的正確說明是: D

      A、char a(10);

      B、 int a[];

      C、int k=5,a[k];

      D、char a[3]={‘a’,’b’,’c’};

      【解析】詳見教材P143~144,一維數組的定義、初始化

      類型符 數組名 [常量表達式]

      類型符是指數組中數組元素的類型;數組名要符合標識符命名規則;常量表達式是指數組的長度(數組中包含元素的個數),其值只能是整數,不可以是變量,而且從1開始計數。

      選項A,常量表達式只能放在中括號 [ ]中

      選項B,只有在對數組初始化(即賦值)的時候才可以省略數組的長度,B中并未對a進行初始化。

      選項C,常量表達式不能為變量。

      21.以下能對一維數組a進行初始化的語句是:( C )

      A、int a[5]=(0,1,2,3,4,)

      B、 inta(5)={}

      C、 int a[3]={0,1,2}

      D、 int a{5}={10*1}

      【解析】詳見教材P145,一維數組的定義、初始化

      選項B,D,常量表達式只能放在中括號 [ ]中

      選項A,數組可以看做是若干個相同數據類型元素的有序集合,因此以集合的形式對其初始化,使用{ }對其初始化,選項A用了( ).

      22.在C語言中對一維整型數組的正確定義為 D 。

      A、int a(10);

      B、int n=10,a[n];

      C、int n;a[n];

      D、#define N 10

      23、已知:int a[10]; 則對a數組元素的正確引用是( D )。

      A、a[10]

      B、a[3.5]

      C、a(5)

      D、a[0]

      【解析】詳見教材P144,數組元素的引用

      數組名[下標]

      引用數組元素時,[ ]中的下標為邏輯地址下標,只能為整數,可以為變量,且從0開始計數

      int a[10]表示定義了一個包含10個整型數據的數組a,數組元素的邏輯地址下標范圍為0~9,即a[0] 表示組中第1個元素; a[1] 表示組中第2個元素; a[2] 表示組中第3個元素; ......;a[9] 表示組中第10個元素.

      選項A,超過了數組a的邏輯地址下標范圍;

      選項B,邏輯地址下標只能為整數

      選項C,邏輯地址下標只能放在[ ]中

      24.若有以下數組說明,則i=10;a[a[i]]元素數值是(C )。

      int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};

      A、10

      B、9

      C、6

      D、5

      【解析】先算a[a[i]]內層的a[i],由于i=10,因此a[i]即a[10].

      a[10]對應下面數組中的元素為9. 因此a[a[i]]即為a[9]

      a[9]對應下面數組中的元素為6. 因此a[9]即為6

      25.若有說明:int a[][3]={{1,2,3},{4,5},{6,7}}; 則數組a的第一維的大小為: ( B )

      A、2

      B、3

      C、4

      D、無確定值

      【解析】二維數組的一維大小,即指二維數組的行數,在本題中,按行對二維數組賦值,因此內層有幾個大括號,數組就有幾行

      26.(A )是構成C語言程序的基本單位。

      A、函數

      B、過程

      C、子程序

      D、子例程

      27.C語言程序從 C 開始執行。

      A、 程序中第一條可執行語句

      B、 程序中第一個函數

      C、 程序中的main函數

      D、包含文件中的第一個函數

      28、以下說法中正確的是( C )。

      A、C語言程序總是從第一個定義的函數開始執行

      B、在C語言程序中,要調用的函數必須在main( )函數中定義

      C、C語言程序總是從main( )函數開始執行;

      D、C語言程序中的main( )函數必須放在程序的開始部分

      29.下列關于C語言的說法錯誤的是( B ) 。

      A、 C程序的工作過程是編輯、編譯、連接、運行

      B、 C語言不區分大小寫。

      C、 C程序的三種基本結構是順序、選擇、循環

      D、C程序從main函數開始執行

      30.下列正確的標識符是(C )。

      A、-a1

      B、a[i]

      C、a2_i

      D、int t

      5~8題為相同類型題

      考點:標識符的命名規則

      只能由字母、數字、下劃線構成

      數字不能作為標識符的開頭

      關鍵字不能作為標識符

      選項A中的“-” ,選項B中“[”與“]”不滿足(1);選項D中的int為關鍵字,不滿足(3)

      31.下列C語言用戶標識符中合法的是(B )。

      A、3ax

      B、x

      C、case

      D、-e2 E)union

      選項A中的標識符以數字開頭不滿足(2);選項C,E均為為關鍵字,不滿足(3);選項D中的“-”不滿足(1);

      32.下列四組選項中,正確的C語言標識符是( C )。

      A、 %x

      B、a+b

      C、a123

      D、123

      選項A中的“%” ,選項B中“+”不滿足(1);選項D中的標識符以數字開頭不滿足(2)

      33、下列四組字符串中都可以用作C語言程序中的標識符的是( A)。

      A、print _3d db8 aBc

      B、Iam one_half start$it 3pai

      C、str_1 Cpp pow while

      D、Pxq My->book line# His.age

      選項B中的“”,”$” ,選項D中“>”,”#”,”.”,”-”不滿足(1);選項C中的while為關鍵字,不滿足(3)

      34.C語言中的簡單數據類型包括(D )。

      A、整型、實型、邏輯型

      B、整型、實型、邏輯型、字符型

      C、整型、字符型、邏輯型

      D、整型、實型、字符型

      35.在C語言程序中,表達式5%2的結果是 C 。

      A、2.5

      B、2

      C、1

      D、3

      %為求余運算符,該運算符只能對整型數據進行運算。且符號與被模數相同。5%2=1; 5%(-2)=1;(-5)%2=-1;(-5)%(-2)=-1;

      /為求商運算符,該運算符能夠對整型、字符、浮點等類型的數據進行運算,5/2=2

      全國計算機二級c語言真題 5

      一、選擇題((1)—(10)、(21)—(40)每題2分,(11)—(20)每題1分,共70分)

      (1)下列數據結構中,屬于非線性結構的是

      A.循環隊列

      B.帶鏈隊列

      C.二叉樹

      D.帶鏈棧

      (2)下列數據結果中,能夠按照“先進后出”原則存取數據的是

      A.循環隊列

      B.棧

      C.隊列

      D.二叉樹

      (3)對于循環隊列,下列敘述中正確的是

      A.隊頭指針是固定不變的

      B.隊頭指針一定大于隊尾指針

      C.隊頭指針一定小于隊尾指針

      D.隊頭指針可以大于隊尾指針,也可以小于隊尾指針

      (4)算法的空間復雜度是指

      A.算法在執行過程中所需要的計算機存儲空間

      B.算法所處理的數據量

      C.算法程序中的語句或指令條數

      D.算法在執行過程中所需要的臨時工作單元數

      (5)軟件設計中劃分模塊的一個準則是

      A.低內聚低耦合

      B.高內聚低耦合

      C.低內聚高耦合

      D. 高內聚高耦合

      (6)下列選項中不屬于結構化程序設計原則的是

      A.自頂向下

      B.可封裝

      C.模塊化

      D. 逐步求精

      (7)軟件詳細設計產生的圖如下:

      該圖是

      A.N-S圖

      B.PAD圖

      C.程序流程圖

      D. E-R圖

      (8)數據庫管理系統是

      A.操作系統的一部分

      B.在操作系統支持下的系統軟件

      C.一種編譯系統

      D. 一種操作系統

      (9)在E-R圖中,用來表示實體聯系的圖形是

      A.橢圓圖

      B.矩形

      C.菱形

      D. 三角形

      (10)有三個關系R,S和T如下:

      其中關系T由關系R和S通過某種操作得到,該操作為

      A.選擇

      B.投影

      C.交

      D.并

      (11)以下敘述中正確的是

      A.程序設計的任務就是編寫程序代碼并上機調試

      B.程序設計的任務就是確定所用數據結構

      C.程序設計的任務就是確定所用算法

      D.以上三種說法都不完整

      (12)以下選項中,能用作用戶標識符的是

      A.void

      B.8_8

      C._0_

      D.unsigned

      (13)閱讀以下程序

      #include

      main()

      { int case; float printF;

      printf(“請輸入2個數:”);

      scanf(“%d %f”,&case,&pjrintF);

      printf(“%d %f ”,case,printF);

      }

      該程序編譯時產生錯誤,其出錯原因是

      A.定義語句出錯,case是關鍵字,不能用作用戶自定義標識符

      B.定義語句出錯,printF不能用作用戶自定義標識符

      C.定義語句無錯,scanf不能作為輸入函數使用

      D.定義語句無錯,printf不能輸出case的值

      (14)表達式:(int)((double)9/2)-(9)%2的值是

      A.0

      B.3

      C.4

      D.5

      (15)若有定義語句:int x=10;,則表達式x-=x+x的值為

      A.-20

      B.-10

      C.0

      D.10

      (16)有以下程序

      #include

      main()

      { int a=1,b=0;

      printf(“%d,”,b=a+b);

      printf(“%d ”,a=2*b);

      }

      程序運行后的.輸出結果是

      A.0,0

      B.1,0

      C.3,2

      D.1,2

      17)設有定義:int a=1,b=2,c=3;,以下語句中執行效果與其它三個不同的是

      A.if(a>B. c=a,a=b,b=c;

      B.if(a>B. {c=a,a=b,b=c;}

      C.if(a>B. c=a;a=b;b=c;

      D.if(a>B. {c=a;a=b;b=c;}

      (18)有以下程序

      #include

      main()

      { int c=0,k;

      for (k=1;k<3;k++)

      switch (k)

      { default: c+=k

      case 2: c++;break;

      case 4: c+=2;break;

      }

      printf(“%d ”,C.;

      }

      程序運行后的輸出結果是

      A.3

      B.5

      C.7

      D.9

      (19)以下程序段中,與語句:k=a>b?(b>c?1:0):0;功能相同的是

      A.if((a>b)&&(b>C.) k=1;

      else k=0;

      B.if((a>b)||(b>C. k=1;

      else k=0;

      C.if(a<=B. k=0;

      else if(b<=C.k=1;

      D.if(a>B. k=1;

      else if(b>C.k=1;

      else k=0;

      20)有以下程序

      #include

      main()

      { char s[]={“012xy”};int i,n=0;

      for(i=0;s[i]!=0;i++)

      if(s[i]>=’a’&&s[i]<=’z’) n++;

      printf(“%d ”,n);

      }

      程序運行后的輸出結果是

      A.0

      B.2

      C.3

      D.5

      (21)有以下程序

      #include

      main()

      { int n=2,k=0;

      while(k++&&n++>2);

      printf(“%d %d ”,k,n);

      }

      程序運行后的輸出結果是

      A.0 2

      B.1 3

      C.5 7

      D.1 2

      (22)有以下定義語句,編譯時會出現編譯錯誤的是

      A.char a=’a’;

      B.char a=’ ’;

      C.char a=’aa’;

      D.char a=’x2d’;

      (23)有以下程序

      #include

      main()

      { char c1,c2;

      c1=’A’+’8’-‘4’;

      c2=’A’+’8’-‘5’;

      printf(“%c,%d ”,c1,c2);

      }

      已知字母A的ASCII碼為65,程序運行后的輸出結果是

      A.E,68

      B.D,69

      C.E,D

      D.輸出無定值

      (24)有以下程序

      #include

      void fun(int p)

      { int d=2;

      p=d++; printf(“%d”,p);}

      main()

      { int a=1;

      fun(a); printf(“%d ”,a);}

      程序運行后的輸出結果是

      A.32

      B.12

      C.21

      D.22

      (25)以下函數findmax擬實現在數組中查找最大值并作為函數值返回,但程序中有錯導致不能實現預定功能

      #define MIN -2147483647

      int findmax (int x[],int n)

      { int i,max;

      for(i=0;i

      { max=MIN;

      if(max

      return max;

      }

      造成錯誤的原因是

      A.定義語句int i,max;中max未賦初值

      B.賦值語句max=MIN;中,不應給max賦MIN值

      C.語句if(max

      D.賦值語句max=MIN;放錯了位置

      (26)有以下程序

      #include

      main()

      { int m=1,n=2,*p=&m,*q=&n,*r;

      r=p;p=q;q=r;

      printf(“%d,%d,%d,%d ”,m,n,*p,*q);

      }

      程序運行后的輸出結果是

      A.1,2,1,2

      B.1,2,2,1

      C.2,1,2,1

      D.2,1,1,2

      (27)若有定義語句:int a[4][10],*p,*q[4];且0≤i<4,則錯誤的賦值是

      A.p=a

      B.q[i]=a[i]

      C.p=a[i]

      D.p=&a[2][1]

      (28)有以下程序

      #include

      #include

      main()

      { char str[ ][20]={“One*World”, “One*Dream!”},*p=str[1];

      printf(“%d,”,strlen(p));printf(“%s ”,p);

      }

      程序運行后的輸出結果是

      A.9,One*World

      B.9,One*Dream

      C.10,One*Dream

      D.10,One*World

      (29)有以下程序

      #include

      main()

      { int a[ ]={2,3,5,4},i;

      for(i=0;i<4;i++)

      switch(i%2)

      { case 0:switch(a[i]%2)

      {case 0:a[i]++;break;

      case 1:a[i]--;

      }break;

      case 1:a[i[=0;

      }

      for(i=0;i<4;i++) printf(“%d”,a[i]); printf(“ ”);

      }

      A.3 3 4 4

      B.2 0 5 0

      C.3 0 4 0

      D.0 3 0 4

      (30)有以下程序

      #include

      #include

      main()

      { char a[10]=”abcd”;

      printf(“%d,%d ”,strlen(a),sizeof(a));

      }

      程序運行后的輸出結果是

      A.7,4

      B.4,10

      C.8,8

      D.10,10

      (31)下面是有關C語言字符數組的描述,其中錯誤的是

      A.不可以用賦值語句給字符數組名賦字符串

      B.可以用輸入語句把字符串整體輸入給字符數組

      C.字符數組中的內容不一定是字符串

      D.字符數組只能存放字符串

      (32)下列函數的功能是

      fun(char * a,char * b)

      { while((*b=*a)!=’’) {a++,b++;} }

      A.將a所指字符串賦給b所指空間

      B.使指針b指向a所指字符串

      C.將a所指字符串和b所指字符串進行比較

      D.檢查a和b所指字符串中是否有’’

      (33)設有以下函數

      void fun(int n,char * s) {……}

      則下面對函數指針的定義和賦值均是正確的是

      A.void (*pf)(); pf=fun;

      B.viod *pf(); pf=fun;

      C.void *pf(); *pf=fun;

      D.void (*pf)(int,char);pf=&fun;

      (34)有以下程序

      #include

      int f(int n);

      main()

      { int a=3,s;

      s=f(a);s=s+f(a);printf(“%d ”,s);

      }

      int f(int n)

      { static int a=1;

      n+=a++;

      return n;

      }

      程序運行以后的輸出結果是

      A.7

      B.8

      C.9

      D.10

      (35)有以下程序

      #include

      #define f(x) x*x*x

      main()

      { int a=3,s,t;

      s=f(a+1);t=f((a+1));

      printf(“%d,%d ’,s,t);

      }

      程序運行后的輸出結果是

      A.10,64

      B.10,10

      C.64,10

      D.64,64

      (36)下面結構體的定義語句中,錯誤的是

      A.struct ord {int x;int y;int z;}; struct ord a;

      B.struct ord {int x;int y;int z;} struct ord a;

      C.struct ord {int x;int y;int z;} a;

      D.struct {int x;int y;int z;} a;

      (37)設有定義:char *c;,以下選項中能夠使字符型指針c正確指向一個字符串的是

      A.char str[ ]=”string”;c=str;

      B.scanf(“%s”,C.;

      C.c=get);

      D.*c=”string”;

      (38)有以下程序

      #include

      #include

      struct A

      { int a; char b[10]; double c;};

      struct A f(struct A t);

      main()

      { struct A a={1001,”ZhangDa”,1098.0};

      a=f(a);jprintf(“%d,%s,%6.1f ”,a.a,a.b,a.C.;

      }

      struct A f(struct A t)

      ( t.a=1002;strcpy(t.b,”ChangRong”);t.c=1202.0;return t; )

      程序運行后的輸出結果是

      A.1001,ZhangDa,1098.0

      B.1001,ZhangDa,1202.0

      C.1001,ChangRong,1098.0

      D.1001,ChangRong,1202.0

      (39)若有以下程序段

      int r=8;

      printf(“%d ”,r>>1);

      輸出結果是

      A.16

      B.8

      C.4

      D.2

      (40)下列關于C語言文件的敘述中正確的是

      A.文件由一系列數據依次排列組成,只能構成二進制文件

      B.文件由結構序列組成,可以構成二進制文件或文本文件

      C.文件由數據序列組成,可以構成二進制文件或文本文件

      D.文件由字符序列組成,其類型只能是文本文件

      全國計算機二級c語言真題 6

      二、填空題(每空2分,共30分)

      (1)某二叉樹有5個度為2的結點以及3個度為1的結點,則該二叉樹中共有【1】 個結點。

      (2)程序流程圖中的菱形框表示的是 【2】 。

      (3)軟件開發過程主要分為需求分析、設計、編碼與測試四個階段,其中 【3】 階段產生“軟件需求規格說明書。

      (4)在數據庫技術中,實體集之間的聯系可以是一對一或一對多或多對多的,那么“學生”和“可選課程”的聯系為 【4】 。

      (5)人員基本信息一般包括:身份證號,姓名,性別,年齡等。其中可以作為主關鍵字的是 【5】 。

      (6)若有定義語句:int a=5;,則表達式:a++的`值是 【6】 。

      (7)若有語句double x=17;int y;,當執行y=(int)(x/5)%2;之后y的值為 【7】 。

      (8)以下程序運行后的輸出結果是 【8】 。

      #include

      main()

      { int x=20;

      printf(“%d”,0

      printf(“%d ”,0

      (9)以下程序運行后的輸出結果是 【9】 。

      #include

      main()

      { int a=1,b=7;

      do {

      b=b/2;a+=b;

      } while (b>1);

      printf(“%d ”,a);}

      (10)有以下程序

      #include

      main()

      { int f,f1,f2,i;

      f1=0;f2=1;

      printf(“%d %d”,f1,f2);

      for(i=3;i<=5;i++)

      { f=f1+f2; printf(“%d”,f);

      f1=f2; f2=f;

      }

      printf(“ ”);

      }

      程序運行后的輸出結果是 【10】 。

      (11)有以下程序

      #include

      int a=5;

      void fun(int b)

      { int a=10;

      a+=b;printf(“%d”,a);

      }

      main()

      { int c=20;

      fun(c);a+=c;printf(“%d ”,a);

      }

      程序運行后的輸出結果是 【11】 。

      (12)設有定義:

      struct person

      { int ID;char name[12];}p;

      請將scanf(“%d”, 【12】 );語句補充完整,使其能夠為結構體變量p的成員ID正確讀入數據。

      (13)有以下程序

      #include

      main()

      { char a[20]=”How are you?”,b[20];

      scanf(“%s”,b);printf(“%s %s ”,a,b);

      }

      程序運行時從鍵盤輸入:How are you?<回車>

      則輸出結果為 【13】 。

      (14)有以下程序

      #include

      typedef struct

      { int num;double s}REC;

      void fun1( REC x ){x.num=23;x.s=88.5;}

      main()

      { REC a={16,90.0 };

      fun1(a);

      printf(“%d ”,a.num);

      }

      程序運行后的輸出結果是 【14】 。

      (15)有以下程序

      #include

      fun(int x)

      { if(x/2>0) run(x/2);

      printf(“%d ”,x);

      }

      main()

      { fun(6);printf(“ ”); }

      程序運行后的輸出結果是 【15】 。

      全國計算機二級c語言真題 7

      1). 關于C語言的變量,以下敘述中錯誤的是( )

      A.所謂變量是指在程序運行過程中其值可以被改變的量

      B.變量所占的存儲單元地址可以隨時改變

      C.程序中用到的所有變量都必須先定義后才能使用

      D.由三條下劃線構成的符號名是合法的變量名

      正確答案:B

      答案解析:變量是指在程序運行過程中其值可以改變的值,一個變量實質上是代表了內存中的某個存儲單元。在程序中對某個變量的操作實際上就是對這個存儲單元的操作,程序運行期間,這個分配的存儲單元不會改變,但是其值可以變化。變量命名要符合標識符的規定,其中下劃線是標識符的組成字符。程序中所有變量都必須先定義后使用。

      2). 當變量c的值不為2、4、6時,值也為″真″的表達式是( )

      A.(c==2)||(c==4)||(c==6)

      B.(c>=2 && c<=6)&&!(c%2)

      C.(c>=2 &&c<=6)&&(c%2!=1)

      D.(c>=2 && c<=6) || (c!=3)|| (c!=5)

      正確答案:D

      答案解析:邏輯或運算中,只要有一項為真,表達式的值就為真,故選項D中c的值不為2、4、6時,那么表達式(c>=2&& c<=6)以及(c!=3)、(c!=5)必有一個成立,表達式的值也為真。

      3). 在C語言中,函數返回值的類型最終取決于

      A.函數定義時在函數首部所說明的函數類型

      B.return語句中表達式值的類型

      C.調用函數時主調函數所傳遞的實參類型

      D.函數定義時形參的類型

      正確答案:A

      答案解析:在C語言中,應當在定義函數時指定函數值的類型,凡不加類型說明的函數,一律按整型處理。在定義函數時,對函數值說明的類型一般應該和return語句中的表達式類型一致。如果函數值的類型和return語句中的表達式類型不一致,則以函數類型為主,即函數類型決定返回值的類型。

      4). 以下敘述中正確的是( )

      A.在C語言中,預處理命令行都以″#″開頭

      B.預處理命令行必須位于C源程序的起始位置

      C.#include 必須放在C程序的開頭

      D.C語言的預處理不能實現宏定義和條件編譯的功能

      正確答案:A

      答案解析:在C語言中,凡是以″#″號開頭的行,都稱為″編譯預處理″命令行。預處理命令可以放在程序中的任何位置,其有效范圍是從定義開始到文件結束。預處理命令有宏定義、文件包含和條件編譯三類。#include 命令行表示程序中要引用C標準函數庫中的標準輸入輸出函數。

      5). 下列敘述中,不屬于測試的特征的是

      A.測試的挑剔性

      B.完全測試的`不可能性

      C.測試的可靠性

      D.測試的經濟性

      正確答案:C

      答案解析:軟件測試的目標是在精心控制的環境下執行程序,以發現程序中的錯誤,給出程序可靠性的鑒定。它有3個方面的重要特征,即測試的挑剔性、完全測試的不可能性及測試的經濟性。其中,沒有測試的可靠性這一說法。

      6). 以下選項中不屬于C語言標識符的是( )

      A.用戶標識符

      B.關鍵字

      C.常量

      D.預定義標識符

      正確答案:C

      答案解析:C語言的標識符可分為以下3類:①關鍵字。C語言預先規定了一批標識符,它們在程序中都代表著固定的含義,不能另作他用。這些字符稱為關鍵字。例如,int、double、if、else、while、for等。②預定義標識符。即預先定義并具有特定含義的標識符。③用戶標識符。由用戶根據需要定義的標識符稱為用戶標識符,又稱自定義標識符,一般用來給變量、函數、數組等命名。

      7). 以下關于字符串的敘述中正確的是( )

      A.兩個字符串中的字符個數相同時才能進行字符串大小的比較

      B.可以用關系運算符對字符串的大小進行比較

      C.空串比空格打頭的字符串小

      D.C語言中有字符串類型的常量和變量

      正確答案:C

      答案解析:C語言本身并沒有設置一種類型來定義字符串變量,卻允許使用″字符串常量″。字符串常量是由雙引號括起來的一串字符。任意兩個字符串的大小比較要調用字符串比較函數strcmp(s1,s2 )來進行,其比較的方法是依次對s1和s2中對應位置上的字符兩兩進行比較,當出現第一對不相同的字符時,即由這兩個字符決定所在串的大小(比較字符大小的依據是其ASCⅡ碼值)。

      8). 下列敘述中正確的是( )。

      A.調用printf( )函數時,必須要有輸出項

      B.使用put )函數時,必須在之前包含頭文件stdio.h

      C.在C語言中,整數可以以二進制、八進制或十六進制的形式輸出

      D.調節get )函數讀入字符時,可以從鍵盤上輸入字符所對應的ASCII碼

      正確答案:B

      答案解析:選項A,若printf函數沒有輸出項,且格式字符串中不含格式信息,則輸出的是格式字符串本身,若格式字符串含有格式信息,運行時則出現錯誤提示;選項C,在C語言中,整數可以十進制、八進制或十六進制的形式輸出;選項D,getchar函數是從標準輸入設備讀取一個字符。

      9). 以下結構體類型說明和變量定義中正確的是( )

      A.typedefstruct { int n; char c; } REC; REC t1,t2;

      B.structREC ; { int n; char c; }; REC t1,t2;

      C.typedefstruct REC; { int n=0; char c=′A′; } t1,t2;

      D.struct{ int n; char c; } REC; REC t1,t2;

      正確答案:A

      答案解析:定義結構體類型的一般形式為:struct 結構體名 {成員列表};struct 結構體名后不能加″;″號,所以選項B、C)錯誤,選項D中定義無名稱的結構體類型同時定義結構體變量形式應為struct t1,t2;選項A為用戶自定義類型,其為正確的定義形式。

      10). 若實體A和B是一對多的聯系,實體B和C是一對一的聯系,則實體A和C的聯系是( )

      A.一對一

      B.一對多

      C.多對一

      D.多對多

      正確答案:B

      答案解析:由于B和C有一一對應的聯系,而A和B只間有一對多的聯系,則通過關系之間的傳遞,則A和C之間也是一對多的聯系。

      11). 待排序的關鍵碼序列為(15,20,9,30,67.65,45,90),要按關鍵碼值遞增的順序排序,采取簡單選擇排序法,第一趟排序后關鍵碼15被放到第( )個位置。

      A.2

      B.3

      C.4

      D.5

      正確答案:B

      答案解析:選擇排序的基本思想是掃描整個線性表,從中選出最小的元素,將它交換到表的最前面,然后對剩下的子表采用同樣的方法,直到子表為空。所以第一趟排序后,將選出最小的元素9放在第一個位置,元素15則被交換放在第三個位置。

      全國計算機二級c語言真題 8

      1下列有關內聯函數的敘述中,正確的是( )。

      A.內聯函數在調用時發生控制轉移

      B.內聯函數必須通過關鍵字inline來定義

      C.內聯函數是通過編譯器來實現的

      D.內聯函數函數體的最后一條語句必須是return語句

      參考答案:C

      參考解析:一般函數進行調用時,要將程序執行權轉到被調用函數中,然后再返回到調用它的函數中;而內聯函數在調用時,是將調用表達式用內聯函數體來替換,所以在調用時不發生控制轉移。在類內部實現的函數都是內聯函數,可以不用inline定義;只有函數外部定義的內聯函數才必須加關鍵字inline。編譯系統并非對內聯函數必須使用內聯,而且根據具體情況決定。內聯函數不是必須要有返回值的。

      2語句int*P=&k;定義了指針P,與這個語句等效的語句序列是( )。

      A.int* p;P=&k;B.int * P;P=k;C.int * p;* P=&k;D.int * p;* P=k;

      參考答案:A

      參考解析:本題考查指針和地址,題目中定義了一個指向變量k的一個指針p,那么與題目中等效的表達式A選項,即先定義一個指向整型的指針,然后指向k的.地址。

      3有如下程序:

      #include

      using namespace std;

      class A

      {

      public:

      A( ){cout<<”A”;}

      -A( ){cout<<”-A”;}

      };

      class B:public A

      {

      A*P;

      public:

      B( ){cout<<”B”;P=new A( );}

      -B( ){cout<<”~B”; p;}

      };

      int main( )

      {

      B obj;

      return 0;

      }

      執行這個程序的輸出結果是( )。

      A.BAA~A~B~AB.ABA~B~A~AC.BAA~B~A~AD.ABA~A~B~A

      參考答案:B

      參考解析:本題考查派生類的構造函數和析構函數,在定義一個派生類的對象時,先調用基類的構造函數,然后再執行派生類的構造函數。對象釋放時,先執行派生類的析構函數,再執行基類的析構函數。所以本題答案為B。

      4有如下類定義:

      class AA

      {

      im a:

      public:

      int getRef( )const{return&a;}//①

      int getValue( )const{return a;}//②

      void set(int n)const{a=n;}//③

      friend void show(AA aA.const{cout<

      };

      其中四個函數的定義中正確的是(  )。

      A.①B.②C.③D.④

      參考答案:B

      參考解析:本題考查常成員函數,常成員函數只能引用本類中的數據成員,而不能修改它。所以本題答案為B。

      5若要對Data類中重載的加法運算符成員函數進行聲明,下列選項中正確的是( )。

      A.Data+(DatA.;B.Data operator+(DatA.;C.Data+operator(DatA.;D.operator+(Data,DatA.;

      參考答案:B

      參考解析:根據重載加法運算符的格式,只有B選項正確。

      6有如下數組聲明:int num[10];,下標值引用錯誤的是( )。

      A.num[10]B.num[5]C.num[3]D.hum[o]

      參考答案:A

      參考解析:數組定義中的數字指的是數組的大小,而下標是從0開始的,所以本題中數組的最后一個元素是num[9]。

      7將前綴運算符“--”重載為非成員函數,下列原型中能正確用于類中說明的是(  )。

      A.DeCr&operator--(int);B.DeCr operator--(DeCr&,int);C.friend DeCr&operator--(DeCr&);D.friend DeCr operator--(DeCr&,int);

      參考答案:C

      參考解析:把“--”運算符重載為非成員(友元)函數格式:friend<返回類型>operator--( )是前綴的格式;friend<返回類型>operator--(int)是后綴的格式。當然也可以有參數如題中C選項所示。

      8如果派生類以proteCted方式繼承基類,則原基類的proteCted成員和publiC成員在派生類中的訪問屬性分別是( )。

      A.publiC和publiCB.publiC和proteCtedC.proteCted和publiCD.proteCted和proteCted

      參考答案:D

      參考解析:本題考查保護繼承中派生類對基類的訪問屬性,在受保護繼承中,基類的公用成員和保護成員在派生類中成了保護成員,其私有成員仍為基類私有,所以本題答案為D。

      9在函數中,可以用aut0、extem、register和static這四個關鍵字中的一個來說明變量的存儲類型,如果不說明存儲類型,則默認的存儲類型是(  )。

      A.autoB.externC.registerD.static

      參考答案:A

      參考解析:變量的存儲方法分為靜態存儲和動態存儲兩大類,包含4種:自動的(auto)、靜態的(static)、寄存器的(register)、外部的(extem)。變量如果沒有說明存儲類型,那么默認就是aut0。

      10下列程序的輸出結果是( )。

      #include

      int rain(iltl a,int B)

      {

      if(a

      else retum b;

      retum 0;

      }

      void main( )

      {

      eout<

      }

      A.0B.1C.2D.3

      參考答案:B

      參考解析:本題考查的是函數的調用,第一次調用min(2,3),因為2<3,所以返回值為2,第二次調用min(1,2),因為l<2,所以返回1。

    【全國計算機二級c語言真題】相關文章:

    計算機二級C語言真題及答案09-26

    計算機二級考試C語言歷年真題09-26

    計算機二級C語言考試真題及答案09-30

    二級c語言真題(精選5套)11-15

    2016年計算機二級c語言真題09-17

    計算機二級C語言新增無紙化真題試卷09-13

    計算機二級C語言筆試歷年真題及答案09-30

    c語言二級考試真題(精選5套)11-15

    計算機二級考試C語言歷年真題及答案解析07-01

    主站蜘蛛池模板: 亚洲精品WWW久久久久久| 人人妻人人澡人人爽人人精品| 欧美日韩国产精品 | 在线观看国产精品日韩av| 精品国产品香蕉在线观看75| 亚洲精品午夜国产VA久久成人| 国产精品毛片无码| 99精品视频免费| 亚洲国产精品成人精品无码区在线 | 无码人妻精品一区二区三区久久 | 老子影院午夜精品无码| 欧美777精品久久久久网| 午夜国产精品无套| 精品国产亚洲一区二区三区| 亚洲码国产精品高潮在线| 精品国产日韩亚洲一区| 精品国产亚洲一区二区三区| 亚洲AV日韩精品久久久久| 日韩亚洲精品福利| 国产精品青草久久久久福利99| 国产99精品久久| 无码精品人妻一区二区三区漫画 | 国产91精品在线观看| 久久久精品人妻一区二区三区四| 日韩欧美亚洲国产精品字幕久久久| 国产精品免费看久久久香蕉| 亚洲综合精品一二三区在线| 国产精品一在线观看| 国产亚洲精品资源在线26u| 欧美精品中文字幕亚洲专区| 亚洲精品自在在线观看| 中日精品无码一本二本三本| 亚洲&#228;v永久无码精品天堂久久 | 精品国产AⅤ一区二区三区4区| 久久精品视频网| 久久国产免费观看精品| 国产69精品久久久久777| 国产精品高清一区二区人妖| 国产精品久久久久久久| 秋霞午夜鲁丝片午夜精品久| 2024最新国产精品一区|