計算機等級考試二級C語言考前密卷[2]上

字號:

一、選擇題(1)~(10)每小題2分,(11)-(50)每小題1分,共60分)
    下列各題A)、B)、c)、D)四個選項中,只有一個選項是正確的,請將正確選項涂寫在答題卡相應(yīng)位置上,答在試卷上不得分。
    (1)下面敘述正確的是________。
    A)算法的執(zhí)行效率與數(shù)據(jù)的存儲結(jié)構(gòu)無關(guān)
    B)算法的空間復(fù)雜度是指算法程序中指令(或語句)的條數(shù)
    C)算法的有窮性是指算法必須能在執(zhí)行有限個步驟之后終止
    D)算法的時間復(fù)雜度是指執(zhí)行算法程序所需要的時間
    答案:C
    評析:算法的設(shè)計可以避開具體的計算機程序設(shè)計語言,但算法的實現(xiàn)必須借助程序設(shè)計語言中提供的數(shù)據(jù)類型及其算法。數(shù)據(jù)結(jié)構(gòu)和算法是計算機科學的兩個重要支柱。
    (2)以下數(shù)據(jù)結(jié)構(gòu)屬于非線性數(shù)據(jù)結(jié)構(gòu)的________。
    A)隊列  B)線性表  C)二叉樹  D)棧
    答案:C
    評析:線性表、棧和隊列等數(shù)據(jù)結(jié)構(gòu)所表達和處理的數(shù)據(jù)以線性結(jié)構(gòu)為組織形式。棧又稱后進先出表(Last In First Out);隊列又稱先進先出表(First:In First Out)。二叉樹的數(shù)據(jù)結(jié)構(gòu)是樹型結(jié)構(gòu),結(jié)構(gòu)中數(shù)據(jù)元素之間存在著一對多的關(guān)系,因此它是一種非線性數(shù)據(jù)結(jié)構(gòu)。
    (3)在一棵二叉樹上第8層的結(jié)點數(shù)最多是________。
    A)8  B)16  C)128  D)256
    答案:C
    評析:根據(jù)二叉樹的性質(zhì):二叉樹第i(i≥1)層上至多有2i-1個結(jié)點。得到第8層的結(jié)點數(shù)最多是128。
    (4)下面描述中,不符合結(jié)構(gòu)化程序設(shè)計風格的是________。
    A)使用順序、選擇和重復(fù)(循環(huán))三種基本控制結(jié)構(gòu)表示程序的控制邏輯
    B)自頂向下
    C)注重提高程序的執(zhí)行效率
    D)限制使用goto語句
    答案:C
    評析:結(jié)構(gòu)化程序設(shè)計方法的四條原則是:1.自項向下;2.逐步求精;3.模塊化;4.限制使用goto語句。
    (5)下面概念中,不屬于面向?qū)ο蠓椒ǖ氖莀_______。
    A)對象、消息  B)繼承、多態(tài)  c)類、封裝  D)過程調(diào)用
    答案:D
    評析:面向?qū)ο蠓椒ㄊ且环N運用對象、類、封裝、繼承、多態(tài)和消息等概念來構(gòu)造、測試、重構(gòu)軟件的方法。面向?qū)ο蠓椒◤膶ο蟪霭l(fā),發(fā)展出對象、類、消息、繼承等概念。
    (6)在結(jié)構(gòu)化方法中,用數(shù)據(jù)流程圖(DFD)作為描述工具的軟件開發(fā)階段是________。
    A)可行性分析 B)需求分析  c)詳細設(shè)計  D)程序編碼
    答案:B
    評析:軟件開發(fā)階段包括需求分析、總體設(shè)計、詳細設(shè)計、編碼和測試五個階段。其中需求分析階段常用的工具是數(shù)據(jù)流圖和數(shù)據(jù)字典。
    (7)軟件生命周期中所花費用最多的階段是________。
    A)詳細設(shè)計  B)軟件編碼  c)軟件測試  D)軟件維護
    答案:D
    評析:軟件生命周期分為軟件定義、軟件開發(fā)及軟件運行維護3個階段。本題中詳細設(shè)計、軟件編碼和軟件測試都屬于軟件開發(fā)階段;維護是軟件生命周期的最后一個階段。
    (8)數(shù)據(jù)庫系統(tǒng)的核心是________。
    A)數(shù)據(jù)模型  B)DBMS  C)軟件工具  D)數(shù)據(jù)庫
    答案:B
    評析:數(shù)據(jù)庫管理系統(tǒng)DBMS是數(shù)據(jù)庫系統(tǒng)的核心。DBMS 是負責數(shù)據(jù)庫的建立、使用和維護的軟件。DBMS建立在操作系統(tǒng)之上,實施對數(shù)據(jù)庫的統(tǒng)一管理和控制。用戶使用的各種數(shù)據(jù)庫命令以及應(yīng)用程序的執(zhí)行,最終都必須通過DBMS。
    (9)下列敘述中正確的________。
    A)數(shù)據(jù)處理是將信息轉(zhuǎn)化為數(shù)據(jù)的過程
    B)數(shù)據(jù)庫設(shè)計是指設(shè)計數(shù)據(jù)庫管理系統(tǒng)
    c)如果一個關(guān)系中的屬性或?qū)傩越M并非該關(guān)系的關(guān)鍵字,但它是另一個關(guān)系的關(guān)鍵字,則稱其為本關(guān)系的外關(guān)鍵字
    D)關(guān)系中的每列稱為元組,一個元組就是一個字段
    答案:C
    評析:數(shù)據(jù)處理是指將數(shù)據(jù)轉(zhuǎn)換成信息的過程,故選項A敘述錯誤;設(shè)計數(shù)據(jù)庫的目的實質(zhì)上是設(shè)計出滿足實際應(yīng)用需求的實際關(guān)系模型;關(guān)系中的行稱為元組,對應(yīng)存儲文件中的記錄,關(guān)系中的列稱為屬性,對應(yīng)存儲文件中的字段,故D選項敘述錯誤。(10)下列模式中,________是用戶模式。
    A)內(nèi)模式 B)外模式  C)概念模式  D)邏輯模式
    答案:B
    評析:數(shù)據(jù)庫管理系統(tǒng)的三級模式結(jié)構(gòu)由外模式、模式和內(nèi)模式組成。外模式,指數(shù)據(jù)庫用戶所看到的數(shù)據(jù)結(jié)構(gòu),是用戶看到的數(shù)據(jù)視圖。模式,是數(shù)據(jù)庫中對全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特性的描述,是所有用戶所見到的數(shù)據(jù)視圖的總和。內(nèi)模式是指數(shù)據(jù)在數(shù)據(jù)庫系統(tǒng)內(nèi)的存儲介質(zhì)上的表示,即對數(shù)據(jù)的物理結(jié)構(gòu)和存取方式的描述。
    (11)C語言規(guī)定,程序中各函數(shù)之間________。
    A)既允許直接遞歸調(diào)用也允許間接遞歸調(diào)用
    B)不允許直接遞歸調(diào)用也不允許間接遞歸調(diào)用
    C)允許直接遞歸調(diào)用不允許間接遞歸調(diào)用
    D)不允許直接遞歸調(diào)用允許間接遞歸調(diào)用
    答案:A
    評析:c語言規(guī)定,程序中各函數(shù)之間既允許直接遞歸調(diào)用也允許間接遞歸調(diào)用。
    (12)在使用程序流程圖來表示算法時,菱形用來表示________。
    A)輸入與輸出B)子程序  C)判斷分支  D)循環(huán)邊界
    答案:C
    評析:美國國家標準化協(xié)會ANSI規(guī)定了一些常用的流程圖符號,其中橢圓框表示起止框,方框表示處理框,菱形框表示判斷分支,箭頭表示流程線。
    (13)C語言中下列敘述正確的是________。
    A)不能使用do…while語句構(gòu)成的循環(huán)
    B)do…while語句構(gòu)成的循環(huán),必須用break語句才能退出
    C)do…while語句構(gòu)成的循環(huán),當while語句中的表達式值為非零時結(jié)束循環(huán)
    D)do…while語句構(gòu)成的循環(huán),當while語句中的表達式值為零時結(jié)束循環(huán)
    答案:D
    評析:選項A是錯誤的,c語言支持d0…while語句;選項B是錯誤的,do...while構(gòu)成的循環(huán),當while語句中的表達式值為零時結(jié)束循環(huán),而不是非零;選項c也是錯誤的。
    (14)以下選項中屬于C語言的數(shù)據(jù)類型是________。
    A)復(fù)數(shù)型 B)邏輯型  C)雙精度型  D)集合型
    答案:C
    評析:c語言的數(shù)據(jù)類型分為基本類型、構(gòu)造類型、指針類型、空類型四大類。其中,基本類型分為整型、字符型、實型三類。實型又稱浮點型,包括單精度型和雙精度型兩種類型。
    (15)在C語言中,不正確的int類型的常數(shù)是________。
    A)32768  B)0  C)037   D)0xAF
    答案:A
    評析:c語言中int類型的常數(shù)的范圍是:-327 68~32767。c整常數(shù)可用三種形式表示:十進制整數(shù),八進制整數(shù),十六進制整數(shù)。選項A超出范圍,不正確。
    (16)以下程序輸出的結(jié)果是________。
    main()
    {
    int a=65535;
    printf("%d%u",a,a);
    }
    A)-1 -1  B)65535 65535   C)-1 65535  D)65535 -l
    答案:C
    評析:printf函數(shù)中不同類型的數(shù)據(jù)用不同的格式字符,其中%d是按整型數(shù)據(jù)的實際長度輸出十進制整數(shù)。變量a=65535以%d格式輸出時溢出輸出值為該數(shù)的補碼值,即.1;%u用來輸出unsigned型數(shù)據(jù),無符號整型變量的數(shù)值范圍為0~65535,所以變量a=65535以%u格式輸出的值為 65535。
    (17)下列描述中不正確的是________。
    A)字符型數(shù)組中可以存放字符串
    B)可以對字符型數(shù)組進行整體輸入、輸出
    c)可以對整型數(shù)組進行整體輸入、輸出
    D)不能在賦值語句中通過賦值運算符"="對字符型數(shù)組進行整體賦值
    答案:C
    評析:c語言規(guī)定只能逐個引用數(shù)組元素而不能一次引用整個數(shù)組。字符數(shù)組的輸入、輸出可以將整個字符串一次輸入或輸出。所以,選項c的說法是不正確的。
    (18)以下程序的輸出結(jié)果是________。
    main()
    { int i,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];
    for(I=0;i<4;i+=2)printf("%d",p[I]);
    }
    A)5 2  B)5 l  C)5 3  D)9 7
    答案:C
    評析:題中*p=&x[1][1];是指將數(shù)組x的數(shù)組元素x[1][1]的地址賦值給指針變量p,使p指向x[11[1]這個數(shù)組元素,那么p[0]即為指針變量p當前所指向的數(shù)組元素x[1][1]的值。
    (19)下列可用于C語言標識符的一組是________。
    A)voidWORDdefine  B)a 6$sysFor
    C)2a sizeof abc   D)Int define sizeof
    答案:D
    評析:c語言規(guī)定標識符只能由字母、數(shù)字和下劃線三種字符組成,且第一個字符必須為字母或下劃線。注意,大寫字母和小寫字母被認為是兩個不同的字符。C語言中的關(guān)鍵字不能用作標識符(20)以下程序的運行結(jié)果是__________。
    #include "stdio.H"
    main()
    {
    int a[]={1,2,3,4,5,6,7,8,9,10,1 1,12};
    int*p=a+5,*q=NULL;
    *q=*(p十5);
    printf("%d ?。、n",’p,*q);
    }
    A)運行后報錯     B)6 6
    C)6 12       D)5 5
    答案:A
    評析:題目中沒有給q分配存儲單元,只是簡單的給它賦了一個值,所以程序的運行結(jié)果是6 ll NULL pointer assignment,也就是運行后報錯。
    (21)以下說法中正確的是_________。
    A)C語言程序總是從第一個函數(shù)開始執(zhí)行
    B) 在C語言程序中,要調(diào)用函數(shù)必須在main()函數(shù)中定義
    c)c語言程序總是從main()函數(shù)開始執(zhí)行
    D)c語言程序中的main()函數(shù)必須放在程序的開始部分
    答案:C
    評析:c語言的程序是由主函數(shù)main()開始運行,由主函數(shù)來調(diào)用其他函數(shù),函數(shù)必須是并列的,定義后使用,不能在一個函數(shù)中定義其他函數(shù),main()函數(shù)不一定要放在程序的開始部分,故選c。
    (22)有如下程序
    float fun(int x,int y){return(x+y);}
    main()
    {
    int a=2,b=5,c=8;
    printf("%3.0f\n",fun((int)fun(a+c,b),(a-c)));
    }
    程序運行后的輸出結(jié)果為__________。
    A)編譯出錯     B)9    C)21   D)9.0
    答案:B
    評析:本題中先執(zhí)行(int)fun(a+c,b)函數(shù)的調(diào)用,值為整型數(shù)值15;然后再執(zhí)行fun(15,(a-e))函數(shù)調(diào)用,值為單精度實型數(shù)值9.000000。輸出為%3.0f,即有效數(shù)長度為3,沒有小數(shù)位數(shù),所以最后結(jié)果為9。
    (23)能正確表示a和b同時為正或同時為負的邏輯表達式是_________。
    A)(a>=‖b>=0)&&(a=0&&b>=O)&&(a<0&&b    C)(a+b>0)&&(a+b<=0)       D)a*b>0
    答案:D
    評析:選項A中,表達式表示的是a,b為異號;選項B中,表達式表示的是0,因為沒有滿足條件的值;選項c中,表達式表示的是0,因為沒有滿足條件的值;選項D表示的是a和b為同號。
    (24)若己定義:int a[9],*p=a;并在以后的語句中未改變p的值,不能表示a[l]地址的
    表達式是__________。
    A)p+l  B)a+l  C)a++  D)++p
    答案:C
    評析:數(shù)組名是指針常量,是個固定的指針,不能對數(shù)組名賦予一個新的地址值,也不能使這個指針常量"移動",指向數(shù)組的其它元素。
    (25)以下程序的輸出結(jié)果是__________。
    main()
    {  int a==-1,b=1,k;
    if((++a<0)&&!(b--<=0))
    printf("%d?。\n",a,b);
    else
    printf("%d?。\n",b,a);
    }
    A)-1 l  B)0 l
    C)1 0   D)0 0
    答案:C
    評析:邏輯運算符的優(yōu)先次序如下:!(非)→&&(與)→‖(或),但本題需特別、注意的是短路的概念。
    < p>
    (8)數(shù)據(jù)庫系統(tǒng)的核心是________。
    A)數(shù)據(jù)模型  B)DBMS  C)軟件工具  D)數(shù)據(jù)庫
    答案:B
    評析:數(shù)據(jù)庫管理系統(tǒng)DBMS是數(shù)據(jù)庫系統(tǒng)的核心。DBMS是負責數(shù)據(jù)庫的建立、使用和維護的軟件。DBMS建立在操作系統(tǒng)之上,實施對數(shù)據(jù)庫的統(tǒng)一管理和 控制。用戶使用的各種數(shù)據(jù)庫命令以及應(yīng)用程序的執(zhí)行,最終都必須通過DBMS。
    (9)下列敘述中正確的________。
    A)數(shù)據(jù)處理是將信息轉(zhuǎn)化為數(shù)據(jù)的過程
    B)數(shù)據(jù)庫設(shè)計是指設(shè)計數(shù)據(jù)庫管理系統(tǒng)
    c)如果一個關(guān)系中的屬性或?qū)傩越M并非該關(guān)系的關(guān)鍵字,但它是另一個關(guān)系的關(guān)鍵字,則稱其為本關(guān)系的外關(guān)鍵字
    D)關(guān)系中的每列稱為元組,一個元組就是一個字段
    答案:C
    評析:數(shù)據(jù)處理是指將數(shù)據(jù)轉(zhuǎn)換成信息的過程,故選項A敘述錯誤;設(shè)計數(shù)據(jù)庫的目的實質(zhì)上是設(shè)計出滿足實際應(yīng)用需求的實際關(guān)系模型;關(guān)系中的行稱為元組,對應(yīng)存儲文件中的記錄,關(guān)系中的列稱為屬性,對應(yīng)存儲文件中的字段,故D選項敘述錯誤。(10)下列模式中,________是用戶模式。
    A)內(nèi)模式 B)外模式  C)概念模式  D)邏輯模式
    答案:B
    評析:數(shù)據(jù)庫管理系統(tǒng)的三級模式結(jié)構(gòu)由外模式、模式和內(nèi)模式組成。外模式,指數(shù)據(jù)庫用戶所看到的數(shù)據(jù)結(jié)構(gòu),是用戶看到的數(shù)據(jù)視圖。模式,是數(shù)據(jù)庫中對全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特性的描述,是所有用戶所見到的數(shù)據(jù)視圖的總和。內(nèi)模式是指數(shù)據(jù)在數(shù)據(jù)庫系統(tǒng)內(nèi)的存儲介質(zhì)上的表示,即對數(shù)據(jù)的物理結(jié)構(gòu)和存取方式的描述。
    (11)C語言規(guī)定,程序中各函數(shù)之間________。
    A)既允許直接遞歸調(diào)用也允許間接遞歸調(diào)用
    B)不允許直接遞歸調(diào)用也不允許間接遞歸調(diào)用
    C)允許直接遞歸調(diào)用不允許間接遞歸調(diào)用
    D)不允許直接遞歸調(diào)用允許間接遞歸調(diào)用
    答案:A
    評析:c語言規(guī)定,程序中各函數(shù)之間既允許直接遞歸調(diào)用也允許間接遞歸調(diào)用。
    (12)在使用程序流程圖來表示算法時,菱形用來表示________。
    A)輸入與輸出B)子程序  C)判斷分支  D)循環(huán)邊界
    答案:C
    評析:美國國家標準化協(xié)會ANSI規(guī)定了一些常用的流程圖符號,其中橢圓框表示起止框,方框表示處理框,菱形框表示判斷分支,箭頭表示流程線。
    (13)C語言中下列敘述正確的是________。
    A)不能使用do…while語句構(gòu)成的循環(huán)
    B)do…while語句構(gòu)成的循環(huán),必須用break語句才能退出
    C)do…while語句構(gòu)成的循環(huán),當while語句中的表達式值為非零時結(jié)束循環(huán)
    D)do…while語句構(gòu)成的循環(huán),當while語句中的表達式值為零時結(jié)束循環(huán)
    答案:D
    評析:選項A是錯誤的,c語言支持d0…while語句;選項B是錯誤的,do...while構(gòu)成的循環(huán),當while語句中的表達式值為零時結(jié)束循環(huán),而不是非零;選項c也是錯誤的。
    (24)若己定義:int a[9],*p=a;并在以后的語句中未改變p的值,不能表示a[l]地址的
    表達式是__________。
    A)p+l  B)a+l  C)a++  D)++p
    答案:C
    評析:數(shù)組名是指針常量,是個固定的指針,不能對數(shù)組名賦予一個新的地址值,也不能使這個指針常量"移動",指向數(shù)組的其它元素。
    (25)以下程序的輸出結(jié)果是__________。
    main()
    {  int a==-1,b=1,k;
    if((++a<0)&&!(b--<=0))
    printf("%d?。\n",a,b);
     else
    printf("%d %d\n",b,a);
    }
    A)-1 l  B)0 l
    C)1 0   D)0 0
    答案:C
    評析:邏輯運算符的優(yōu)先次序如下:!(非)→&&(與)→‖(或),但本題需特別、注意的是短路的概念