計算機等級二級C語言模擬試題1(八)

字號:

一、選擇題(1)~(10)每小題2分,(11)-(50)每小題1分,共60分)
     下列各題A)、B)、C)、D)四個選項中,只有一個選項是正確的,請將正確選項涂寫在答題卡相應位置上,答在試卷上不得分。
     (1)數(shù)據(jù)結構中,與所使用的計算機無關的是數(shù)據(jù)的________。
     A)存儲結構   B)物理結構      C)邏輯結構     D)物理和存儲結構
     答案:C
     評析:數(shù)據(jù)結構概念一般包括3個方面的內(nèi)容,數(shù)據(jù)的邏輯結構、存儲結構及數(shù)據(jù)上的運算集合。數(shù)據(jù)的邏輯結構只抽象的反映數(shù)據(jù)元素之間的邏輯關系,而不管它在計算機中的存儲表示形式。
     (2)棧底至棧頂依次存放元素A、B、C、D,在第五個元素E入棧前,棧中元素可以出棧,
     則出棧序列可能是________。
     A)ABCED     B)DBCEA       C)CDABE       D)DCBEA
     答案:D
     評析:棧操作原則上"后進先出",棧底至棧頂依次存放元素A、B、c、D,則表明這4個元素中D是最后進棧,B、c處于中間,A最早進棧。所以出棧時一定是先出D,再出c,最后出A。
     (3)線性表的順序存儲結構和線性表的鏈式存儲結構分別是________。
     A)順序存取的存儲結構、隨機存取的存儲結構
     B)隨機存取的存儲結構、順序存取的存儲結構
     C)隨機存取的存儲結構、隨機存取的存儲結構
     D)任意存取的存儲結構、任意存取的存儲結構
     答案:B
     評析:順序存儲結構中,數(shù)據(jù)元素存放在一組地址連續(xù)的存儲單元中,每個數(shù)據(jù)元素地址可通過公式LOC(ai)。LOC(a1)+(i-1)L計算得到,從而實現(xiàn)了隨機存取。對于鏈式存儲結構,要對某結點進行存取,都得從鏈的頭指針指向的結點開始,這是一種順序存取的存儲結構。
     (4)在單鏈表中,增加頭結點的目的是________。
     A)方便運算的實現(xiàn)          B)使單鏈表至少有一個結點
     C)標識表結點中首結點的位置     D)說明單鏈表是線性表的鏈式存儲實現(xiàn)
     答案:A
     評析:頭結點不僅標識了表中首結點的位置,而且根據(jù)單鏈表(包含頭結點)的結構,只要掌握了表頭,就能夠訪問整個鏈表,因此增加頭結點目的是為了便于運算的實現(xiàn)。
     (5)軟件 設計 包括軟件的結構、數(shù)據(jù)接口和過程設計,其中軟件的過程設計是指________。
     A)模塊間的關系            B)系統(tǒng)結構部件轉(zhuǎn)換成軟件的過程描述
     C)軟件層次結構            D)軟件開發(fā)過程
     答案:B
     評析:軟件設計包括軟件結構設計、數(shù)據(jù)設計、接口設計和過程設計。其中結構設計是定義軟件系統(tǒng)各主要部件之間的關系;數(shù)據(jù)設計是將分析時創(chuàng)建的模型轉(zhuǎn)化為數(shù)據(jù)結構的定義;接口設計是描述軟件內(nèi)部、軟件和 操作系統(tǒng) 之間及軟件與人之間如何 通信 ;過程設計則是把系統(tǒng)結構部件轉(zhuǎn)換成軟件的過程性描述。
     (6)為了避免流程圖在描述程序邏輯時的靈活性,提出了用方框圖來代替?zhèn)鹘y(tǒng)的程序流程  圖,通常也把這種圖稱為________。
     A)PAD圖    B)N-S圖       C)結構圖       D)數(shù)據(jù)流圖
     答案:B
     評析:常見的過程設計工具有:程序流程圖、N-S圖、PAD圖和HIPO圖。其中,為了避免流程圖在描述程序邏輯時的靈活性,提出了用方框圖來代替?zhèn)鹘y(tǒng)的程序流程圖,通常也把這種圖稱為N-S圖。
     (7)數(shù)據(jù)處理的最小單位是________。
     A)數(shù)據(jù)     B)數(shù)據(jù)元素      C)數(shù)據(jù)項      D)數(shù)據(jù)結構
     答案:C
     評析:數(shù)據(jù)處理的最小單位是數(shù)據(jù)項;由若干數(shù)據(jù)項組成數(shù)據(jù)元素;而數(shù)據(jù)是指能夠被計算機識別、存儲和加工處理的信息載體;數(shù)據(jù)結構是指數(shù)據(jù)之間的相互關系和數(shù)據(jù)運算。
     (8)下列有關數(shù)據(jù)庫的描述,正確的是________。
     A)數(shù)據(jù)庫是一個DBF文件       B)數(shù)據(jù)庫是一個關系
     C)數(shù)據(jù)庫是一個結構化的數(shù)據(jù)集合   D)數(shù)據(jù)庫是一組文件
     答案:C
     評析:數(shù)據(jù)庫(Database,簡稱DB)是數(shù)據(jù)的集合,它具有統(tǒng)一的結構形式并存放于統(tǒng)一的存儲介質(zhì)內(nèi),是多種應用數(shù)據(jù)的集成,并可被各個應用程序所共享。數(shù)據(jù)庫中的數(shù)據(jù)具有"集成"、"共享"之特點。
     (9)單個用戶使用的數(shù)據(jù)視圖的描述稱為 ______ 。
     A)外模式    B)概念模式     C)內(nèi)模式      D)邏輯模式
     答案:A
     評析:外模式是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式;全局數(shù)據(jù)視圖的描述稱為概念模式,即數(shù)據(jù)庫中全部數(shù)據(jù)的整體邏輯結構的描述;物理存儲數(shù)據(jù)視圖的描述稱為內(nèi)模式,即數(shù)據(jù)庫在物理存儲方面的描述;存儲模式即為內(nèi)模式。
     (10)需求分析階段的任務是確定______。
     A)軟件開發(fā)方法  B)軟件開發(fā)工具  C)軟件開發(fā)費用    D)軟件系統(tǒng)功能
     答案:D
     評析:需求分析是軟件定義時期的最后一個階段,它的基本任務就是詳細調(diào)查現(xiàn)實世界要處理的對象(組織、部門、企業(yè)等),充分了解原系統(tǒng)的工作概況,明確用戶的各種需求,然后在此基礎上確定新系統(tǒng)的功能。
     (11)若變量a是int類型,并執(zhí)行了語句:a='A'+1.6;,則正確敘述是______。
     A)a的值是字符C           B)a的值是浮點型
     C)不允許字符型和浮點型相加     D)a的值是字符'A'的ASCII值加上l
     答案:D
     評析:在賦值表達式中,賦值符右邊的值的類型會自動轉(zhuǎn)換成賦值符左邊的變量的類型。在本題中,先用"A"的ASCII碼值加上1.46得到66.46,然后將它強制轉(zhuǎn)換成int型,轉(zhuǎn)換后,實數(shù)的小數(shù)部分全部
     (12)若以下選項中變量已正確定義,則正確的賦值語句是______。
     A)x1=26.8%3;  B)1+2=x2;   C)x3=0x12;     D)x4=1+2=3;
     答案:C
     評析:賦值符號"="就是賦值運算符,它的作用是將一個數(shù)據(jù)賦給一個變量。如果賦值運算符兩側的類型不一致,但都是數(shù)值型或字符型時,在賦值時要進行類型轉(zhuǎn)換,所以選項A錯誤。在賦值表達式中,賦值運算符的左側必須是一個變量,所以選項B、D錯誤。選項C是將一個十六進制數(shù)賦值給變量x3。
     (13)以下程序段的輸出結果是______。
     int a=1234;
     printf("%2d\n",a);
     A)12       B)34        C)1234       D)提示出錯、無結果
     答案:C
     評析:本題主要考查對primf函數(shù)域?qū)捗枋龇睦斫猓谶@里我們要特別注意:輸出數(shù)據(jù)的實際精度并不主要決定于格式項中的域?qū)捙c精度,也不決定于輸入的數(shù)據(jù)精度,而主要決定于數(shù)據(jù)在機器內(nèi)的存儲精度。
     (14)以下選項中不屬于C語言的類型的是______。
     A)signed short int         B)unsigned char
     C)signed long            D)long short
     答案:D
     評析:c語言中歸納起來,基本類型數(shù)據(jù)有以下幾種:
     [signed]char;unsigned char;[signed]short[int];unsigned short[int];[signed]long[int];unsigned long[int];float;double.
     (15)設有定義:int a,*pa=&a;以下scanf語句能正確為變量a讀入數(shù)據(jù)的是______。
     A)scanf("%d",B);         B)scanf("%d",a);
     C)scanf("%d",&pa);        D)scanf("%d",*pa);
     答案:C
     評析:scanf函數(shù)要求其中的輸入項必須是地址形式,比如:普通變量的地址、數(shù)組名、指針變量等。對于普通變量,地址形式為:&變量名;當一個普通變量的地址賦予了一個指針變量名,scanf函數(shù)的輸入項處就可以直接寫這個指針變量名。
     (16)以下程序的輸出結果是______。
     main()
     {int a=5,b=4,c=6,d;
     printf("%d\n",d=a>c?(a>c?a:C):(b));
     }
     A)5       B)4         C)6        D)不確定
     答案:B
     評析:本題最重要的分析d=a>c?(a>c?a:C):(b)),首先運算括號內(nèi)的式子a>c?a:c,它的值是c的值6,即式子化成d=a>c?6:4。顯然a=c,所以將4賦給d。
     (17)以下程序中,while循環(huán)的循環(huán)次數(shù)是______ 。
     main()
     { int i=0:
     while(i<10)
     {if(i<1)continue;
     if(i==5)break;
     i++:
     }
     ……
     }
     A)1       B)10        C)6        D)死循環(huán),不能確定次數(shù)
     答案:D
     評析:進入循環(huán)后,先執(zhí)行一個條件語句,如果i的值小于l,那么直接進入下一輪循環(huán),因為i的初始值是0,小于l,故直接進入下一輪循環(huán),又因為i的值始終沒有改變,所以這個循環(huán)成了死循環(huán)。
     (18)有以下程序:
     main()
     {
     char k;int i;
     for(i=1;i<3;i++)
     {
     scanf("%c",&k);
     switch(k)
     {
     case'0':printf["another\n"];
     case'1':printf["number\n");
     }
     }
     }
     程序運行時,從鍵盤輸入:0l<回車>,程序執(zhí)行后輸出結果是______。
     A)another   B)another      C)another      D)number
     number      number        number       number
     another       number
     答案:C
     評析:switch語句是多分支選擇語句,執(zhí)行完一個case后面的語句后,流程控制轉(zhuǎn)移到下一個case繼續(xù)執(zhí)行。"case常量表達式"只是起語句標號作用,并不是在該處進行條件判斷。在執(zhí)行switch語句時,根據(jù)switch后面表達式的值找到匹配的入口標號,就從此標號開始執(zhí)行下去,不再進行判斷
     (19)以下程序的輸出結果是______。
     main()
     {Int a=O,i;
     for(i=1;i<5;i++)
     {switch(i)
     { case 0:
     case 3:a+=2:
     case l:
     case 2:a+=3:
     default:a+=5;
     }
     }
     printf("%d\n",a)
     }
     A)3l       B)13        C)10         D)20
     答案:A
     評析:switch結構的執(zhí)行過程同上題。
     (20)己定義c為字符型常量,則下列語句中正確的是______。
     A)C='97'    B)c="97"     C)c=97        D)c="a"
     答案:C
     評析:字符變量占內(nèi)存一個字節(jié),只能放一個字符;字符常量為單引號括起的單個字符;字符串常量為雙引號括起的一串字符(可以0個字符,即"",稱為空串)。選項c為字符ASCII碼的整數(shù)形式。
     (21)以下程序的輸出結果是_________。
     main()
     f int a=4,b=5,c=0,d;
     d=!a&&!b||!c;
     printf("%d\n",d);
     }
     A)l       B)0         C)非0的數(shù)     D)-1
     答案:A
     評析:!a值為0,故!a&&!b的值為0,!c的值為l,而0IIl的值應該是l。所以答案是A。
     (22)以下程序的輸出結果是_________。
     #include
     main()
     {int i=0,a=0;
     while(i<20)
     {for(;;)
     {if((i%10)==0)break;
     else  I--:
     }
     i+=ll;a+=i;
     }
     printf("%d\n",a);
     }
     A)21      B)32        C)33        D)11
     答案:B
     評析:本題中,有兩個循環(huán)語句。首先,i=0,進入while循環(huán),for語句中對循環(huán)沒有任何條件,故直接進入for循環(huán),因為0%10結果還是O,所以跳出for循環(huán),執(zhí)行i+:11,i的值變?yōu)?1,執(zhí)行a+=i,a的值變?yōu)?1:接著進入下一輪while循環(huán),在for循環(huán)中,因為i的值是11,對10取余結果為l,所以執(zhí)行i自減,i的值變成10,進入又一輪for循環(huán),因為10%10==0,所以跳出for循環(huán),執(zhí)行i+=1l,i的值變成21,執(zhí)行a+=i,也就是將21+1 1的和賦給a,a=32,因為此時i的值不再小于20,所以結束循環(huán),
     故輸出結果是32。
     (23)有以下程序:
     int n(int x,int y)
     {retum x>y?x:y;}
     Int f2(int x,int y)
     {return x>y?y:x;)
     main()
     { int a=4,b=3,c=5,d,e,f;
     d=f1(a,b);d=fl(d,C);
     e=f2(a,b);e=f2(e,C);
     f=a+b+C-d-e;
     printf("%d,%d,%d\n",d,e,f);
     }
     程序運行后的輸出結果是_________ 。
     A)3,4,5    B)5,3,4      C)5,4,3       D)3,5,4
     答案:B
     評析:函數(shù)n是一個求兩個整數(shù)中值的函數(shù),函數(shù)f2是一個求兩個整數(shù)中最小值的函數(shù)。在main函數(shù)中兩次調(diào)用函數(shù)n,求得變量a、b、、c中的值賦值給d;兩次調(diào)用函數(shù)f2,求得變量a、b、c中的最小值賦值給e;表達式a+b+c-d-e得到中間值,輸出5,3,4。
     (24)以下程序的輸出結果是_________。
     int f()
     {static int i=0;
     int s=1:
     s+=i;i++;
     return s;
     }
     main()
     {inti,a=0;
     for(i=0;i<5;j++)a+=f();
     printf("%d\n",a);
     }
     A)20      B)24        C)25         D)15
     答案:D
     評析:靜態(tài)變量,在編譯時就為其分配了存儲空間,程序一開始執(zhí)行便被建立,直到該程序執(zhí)行結束都存在,而不像動態(tài)變量只存在于函數(shù)或分程序被調(diào)用期間。在函數(shù)多次被調(diào)用的過程中靜態(tài)局部變量的值具有可繼承性。
     (25)已定義以下函數(shù):
     fun(int *p)
     {retum *p;}
     該函數(shù)的返回值是______ 。
     A)不確定的值 B)形參p中存放的值 C)形參p所指存儲單元中的值 D)形參p的地址值
     答案:C.
     評析:函數(shù)首部fun(int*p)中+p表示這是一個指針變量,指向整型數(shù)據(jù),用來從主調(diào)函數(shù)接收地址;而語句return *p;中的*p代表p所指向存儲單元中的值。
     (26)若有以下程序
     #include
     Void f(int n);
     main()
     {void f(int n);
     f(5);
     }
     Void f(int n)
     {print("%d\n",n);}
     則以下敘述中不正確的是______ 。
     A)若只在主函數(shù)中對函數(shù)f進行說明,則只能在主函數(shù)中正確調(diào)用函數(shù)f
     B)若在主函數(shù)前對函數(shù)f進行說明,則在主函數(shù)和其后的其它函數(shù)中都可以正確調(diào)用函數(shù)f
     C)對于以上函數(shù)程序,編譯時系統(tǒng)會提示出錯信息;提示對f函數(shù)重復說明
     D)函數(shù)f無返回值,所以可用void將其類型定義為無值型
     答案:C
     評析:一個函數(shù)在一個文件中的定義只能有一次,但對它的聲明卻可以有很多個。一個函數(shù)可以正確調(diào)用在當前函數(shù)之前聲明的函數(shù)。