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

字號:

一、選擇題(1)~(10)每小題2分,(11)-(50)每小題1分,共60分)
     下列各題A)、B)、C)、D)四個選項中,只有一個選項是正確的,請將正確選項涂寫在答題卡相應(yīng)位置上,答在試卷上不得分。
     (1)算法分析的目的是________。
     A)找出數(shù)據(jù)結(jié)構(gòu)的合理性   B)找出算法中輸入和輸出之間的關(guān)系
     C)分析算法的易懂性和可靠性 D)分析算法的效率以求改進
     答案:D
     評析:算法分析是指對一個算法的運行時間和占用空間做定量的分析,一般計算出相應(yīng)的數(shù)掌級,常用時間復(fù)雜度和空間復(fù)雜度表示。分析算法的目的就是要降低算法的時間復(fù)雜度和空間復(fù)雜度,提高算法的執(zhí)行效率。
     (2)n個頂點的強連通圖的邊數(shù)至少有________。
     A)n-1  B)n(n-1)  C)n   D)n+l
     答案:C
     評析:在有向圖中,若任意兩個頂點都連通,則稱該圖是強連通圖,這樣的有向圖的形狀是環(huán)狀,因而至少應(yīng)有n條邊。
     (3)已知數(shù)據(jù)表A中每個元素距其終位置不遠,為節(jié)省時間,應(yīng)采用的算法是________。
     A)堆排序  B)直接插入排序  C)快速排序 D)直接選擇排序
     答案:B
     評析:當數(shù)據(jù)表A中每個元素距其終位置不遠,說明數(shù)據(jù)表A按關(guān)鍵字值基本有序,在待排序序列基本有序的情況.下,采用插入排序所用時間少,故答案為選項B。
     (4)用鏈表表示線性表的優(yōu)點是________。
     A)便于插入和刪除操作     B)數(shù)據(jù)元素的物理順序與邏輯順序相同
     C)花費的存儲空間較順序存儲少 D)便于隨機存取
     答案:A
     評析:鏈式存儲結(jié)構(gòu)克服了順序存儲結(jié)構(gòu)的缺點:它的結(jié)點空間可以動態(tài)申請和釋放;它的數(shù)據(jù)元素的邏輯次序靠結(jié)點的指針來指示,不需要移動數(shù)據(jù)元素。故鏈式存儲結(jié)構(gòu)下的線性表便于插入和刪除操作。
     (5)下列不屬于結(jié)構(gòu)化分析的常用工具的是________。
     A)數(shù)據(jù)流圖  B)數(shù)據(jù)字典  C)判定樹  D)PAD圖
     答案:D
     評析:結(jié)構(gòu)化分析的常用工具有數(shù)據(jù)流圖、數(shù)據(jù)字典、判定樹和判定表。而PAD圖是常見的過程 設(shè)計 工具中的圖形設(shè)計。
     (6)軟件開發(fā)的結(jié)構(gòu)化生命周期方法將軟件生命周期劃分成________。
     A)定義、開發(fā)、運行維護
     B)設(shè)計階段、編程階段、測試階段
     C)總體設(shè)計、詳細設(shè)計、編程調(diào)試
     D)需求分析、功能定義、系統(tǒng)設(shè)計
     答案:A
     評析:通常,將軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程稱為軟件生命周期。它可以分為軟件定義、軟件開發(fā)及軟件運行維護三個階段。
     (7)在軟件工程中,白盒測試法可用于測試程序的內(nèi)部結(jié)構(gòu)。此方法將程序看做是________。
     A) 循環(huán)的集合 B)地址的集合 C)路徑的集合 D)目標的集合
     答案:C
     評析:軟件的白盒測試方法是把測試對象看做一個打開的盒子,它允許測試人員利用程序內(nèi)部的邏輯結(jié)構(gòu)及有關(guān)信息,設(shè)計或選擇測試用例,對程序所有邏輯路徑進行測試。
     (8)在數(shù)據(jù)管理技術(shù)發(fā)展過程中,文件系統(tǒng)與數(shù)據(jù)庫系統(tǒng)的主要區(qū)別是數(shù)據(jù)庫系統(tǒng)具有________。
     A)數(shù)據(jù)無冗余     B)數(shù)據(jù)可共享
     C)專門的數(shù)據(jù)管理軟件  D)特定的數(shù)據(jù)模型
     答案:D
     評析:在文件系統(tǒng)中,相互獨立的記錄其內(nèi)部結(jié)構(gòu)的簡單形式是等長同格式記錄的集合,易造成存儲空間大量浪費,不方便使用。而在數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)是結(jié)構(gòu)化的,這種結(jié)構(gòu)化要求在描述數(shù)據(jù)時不僅描速數(shù)據(jù)本身,還要描述數(shù)據(jù)間的關(guān)系,這正是通過采用特定的數(shù)據(jù)模型來實現(xiàn)的。
     (9)分布式數(shù)據(jù)庫系統(tǒng)不具有的特點是________。
     A)分布式          B)數(shù)據(jù)冗余
     C)數(shù)據(jù)分布性和邏輯整體性  D)位置透明性和復(fù)制透明性
     答案:B
     評析:分布式數(shù)據(jù)庫系統(tǒng)具有數(shù)據(jù)分布性、邏輯整體性、位置透明性和復(fù)制透明性的特點,其數(shù)據(jù)也是分布的;但分布式數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)經(jīng)常重復(fù)存儲,數(shù)據(jù)也并非必須重復(fù)存儲,主要視數(shù)據(jù)的分配模式而定。若分配模式是一對多,即一個片段分配到多個場地存放,則是冗余的數(shù)據(jù)庫,否則是非冗余的數(shù)據(jù)庫。
     (10)下列說法中,不屬于數(shù)據(jù)模型所描述的內(nèi)容的是________。
     A)數(shù)據(jù)結(jié)構(gòu) B)數(shù)據(jù)操作  C)數(shù)據(jù)查詢  D)數(shù)據(jù)約束
     答案:C
     評析:數(shù)據(jù)模型所描述的內(nèi)容有3個部分,它們是數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和數(shù)據(jù)約束。數(shù)據(jù)操作主要是描述在相應(yīng)數(shù)據(jù)結(jié)構(gòu)上的操作類型與操作方式;數(shù)據(jù)模型中的數(shù)據(jù)約束主要描述數(shù)據(jù)結(jié)構(gòu)內(nèi)數(shù)據(jù)間的語法、語義聯(lián)系,它們之間的制約與依存關(guān)系,以及數(shù)據(jù)動態(tài)變化的規(guī)則,以保證數(shù)據(jù)的正確、有效與胡容。
     (11)在結(jié)構(gòu)化程序設(shè)計中,限制使用goto語句的原因是________。
     A)提高程序的執(zhí)行效率
     B)提高程序的清晰性和可靠性
     C)便于程序的合成
     D)該語句對任何結(jié)構(gòu)的程序都不適用
     答案:B
     評析:在c語言中,限制使用goto語句,其目的是為了提高程序的清晰性與可靠性,一般來說,除了從多重循環(huán)中跳出,一般不使用goto語句。
     (12)以下選項中合法的實型常數(shù)是________。
     A)5E2.0  B)E-3  C).2E0  D)1.3E
     答案:C
     評析:以指數(shù)形式表示實數(shù)時,字母e(或E)之前必須有數(shù)字,且e后面指數(shù)必須為整數(shù)。
     (13)下列敘述中,正確的是________。
     A)C語言中既有邏輯類型也有集合類型
     B)c語言中沒有邏輯類型但有集合類型
     B)C語言中有邏輯類型但沒有集合類型
     B)C語言中沒有邏輯類型也沒有集合類型
     答案:B
     評析:在c語言中只提供了整型、浮點型、字符型這幾種基本類型,c語言沒有提供邏輯類型,在c中一般用整型來表示邏輯類型。在自定義類型中,c提供了struct,enum及union類型,但沒有提供集合類型,在pascal中提供了集合類型set。
     (14)已知大寫字母A的ASCII碼是65,小寫字母a的ASCII碼是97,則用八進制表示的字符常量'\10l'是________。
     A)字符A  B)字符a  C)字符e  D)非法的常量
     答案:A
     評析:八進制101轉(zhuǎn)換為十進制即為65,而字母A的ASCII碼是65,所以用八進制表示的字符常量'\101'是A。
     (15)設(shè)a和b均為double型常量,且a=5.5、b=2.5,則表達式(int)a+b/b的值是________。
     A)6.500000 B)6  C)5.500000  D)6.000000
     答案:D
     評析:各類數(shù)值型數(shù)據(jù)在進行混合運算時,不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,然后進行運算。轉(zhuǎn)換的規(guī)則為:總是轉(zhuǎn)換為精度更大的數(shù)據(jù)類型,字符數(shù)據(jù)轉(zhuǎn)換為整數(shù),short型轉(zhuǎn)為int型,float型數(shù)據(jù)在運算時轉(zhuǎn)換成雙精度型,以提高運算精度。
     (16)以下四個選項中不能看作一條語句的是________。
     A){;}  B)a=0,b:0,c=0; C)if(a>0);  D)if(b==0)m=l;n=2;
     答案:D
     評析:選項A為空語句,選項B是一個由逗號運算符表達式形成的語句,選項c為一個條件語句,選項D有兩個分號,是由兩個語句構(gòu)成,不能看成一條語句。
     (17)已知i、j、k為int型變量,若從鍵盤輸入:1,2,3↙,使i的值為l、j的值為2、k的值為3,以下選項中正確的輸入語句是________。
     A)scanf("%2d%2d%2 dtt,&i,&j,&k);
     B)scanf("%d?。?。",&i,&j,&k);
     C)scanf("%d,%d,%dfI,&i,&j,&k);
     D)scanf("i=%d,j=%d,k=%d-t,&i,&j,&k);
     答案:C
     評析:如果在"格式控制"字符串中除了格式說明以外還有其它字符,則在輸入數(shù)據(jù)時應(yīng)輸入與這些字符相同的字符。
     (18)關(guān)于goto語句的使用,下面正確的是________。
     A)goto 2;   B)goto g;   C)goto g:;   D)goto 2;
     2:exit(0);  g:exit(O);  g:exit(O);  2 exit(0);
     答案:B
     評析:在c中,goto語句后面的標號的命名規(guī)則與c語言中標識符的命名規(guī)則相同,在goto語句后面的標號后不要加":"號,在某一行上添加標號時,在標號的后面要添加":"號。
     (19)若有以下程序:
     main()
     {int k=2,i=2,m;
     m=(k+=I*=k);
     printf("%d,%d、n",m,i);
     }
     執(zhí)行后的輸出結(jié)果是__________。
     A)8,6  B)8,3  C)6,4  D) 7,4
     答案:C
     評析:在賦值符"="之前加上其它運算符,可以構(gòu)成復(fù)合的運算符。此運算為右結(jié)合性,即從右往左計算。I*=k即i=i*k=2*2=4,k=k+i=2+4=6,然后將k的值賦給m。
     (20)以下函數(shù)的功能是:通過鍵盤輸入數(shù)據(jù),為數(shù)組中的所有元素賦值。
     #define N 10
     void arrin(int x[N])
     { int i=0;
     while(i     }
     在下劃線處應(yīng)填入的是_________。
     A)x+i  B)&x[i+l]  C)x+(i++)  D)&x[++I]
     答案:C
     評析:在c中,對于一維數(shù)組而言,數(shù)組變量表示數(shù)組中首元素的的地址。當用scanf函數(shù)向數(shù)組x的第i個元素中輸入整型數(shù)據(jù)時,只要執(zhí)行scanf("%d"x+i):由于要循環(huán)輸入數(shù)組中和各個元素,必須要使其地址值不斷自增。故本題答案為c。
     (21)已有定義:int x=3,y=4,z=5;,則表達式!(x+y)+z-l&&y+z/2的值是_________。
     A)6  B)0  C)2  D)1
     答案:D
     評析:在本題中,運算符的優(yōu)先級分別為:!>/>+,->&&即:!(3+4)+5-1&&4+5/2=0+5-1&&4+2=4&&6=l。
     (22)以下選項中,與k=11++完全等價的表達式是__________。
     A)k=n,n=n+1  B)n=n+1,l(=n  C)l(=什n  D)k+--n+1
     答案:A
     評析:n++是自增運算,是先使用,然后再使n加1,分開來寫即為:k=n,n=n+l。
     (23)以下程序運行后,輸出結(jié)果為__________。
     main()
     {
     int y=18,i=0J,a[8];
     do
     {a[I]=y%2;i++;y。y/2;
     }while(y>。1);
     for(j=i一1 0>=00一)
     printf("%d"a[j]);
     printf("\n");
     }
     A)10000  B)10010  C)00l 10  D)10100
     答案:B
     評析:分析程序不難得知該程序的功能實際上就是采用除余取整法實現(xiàn)將10進制數(shù)據(jù)轉(zhuǎn)換成二進制數(shù)。對于10進制數(shù)18,其轉(zhuǎn)化為二進制數(shù)后,結(jié)果為10010。
     (24)以下程序的功能是:按順序讀入10名學(xué)生4門課程的成績,計算出每位學(xué)生的平均分并輸出,程序如下:
     main()
     {int n,k;
     float score,sum,ave;
     sum=0.0;
     for(n=1;n<=10;n++)
     {for(k=l;k<=4;k++)
     {seal3f("%f",&score);
     sum+=score;
     }
     ave=sum/4.0;
     printf("NO%d:%f\n",n,ave);
     }
     }
     上述程序運行后結(jié)果不正確,調(diào)試中發(fā)現(xiàn)有一條語句出現(xiàn)在程序的位置不正確。這條  語句是________。
     A)sum=O.O;     B)sum+=score;
     C)ave=sum/4.0;  D)printf("NO%d:%fua",n,ave);
     答案:A
     評析:題目中要求每位學(xué)生的平均分數(shù),首先要求每位學(xué)生的總分,也就是程序中的Sum,所以sum應(yīng)在第一個for循環(huán)體內(nèi)賦初值,如果在循環(huán)體外賦初值就會得到所有學(xué)生的分數(shù)總和,不合題意。
     (25)下面程序執(zhí)行后的輸出結(jié)果是__________。
     main()
     {
     charx=Oxddff;
     printf("%d\n",x);
     }
     A)-35  B)-1  C)255  D)-8705
     答案:B
     評析:由于程序中對字符變量x賦值為0xddff,而字符型變量只占一個字節(jié),故實際存入c單元的為該16進制的低字節(jié)部分,即ff。對該數(shù)按整型格式輸出,其結(jié)果為-1。
     (26)有以下程序
     main()
     { int a=15,b=21,m=O;
     switch(a%3)
     { case O:m++;break;
     case l:m++:
     switch(b%2)
     { default:m++;
     case O:m++;break;
     }
     }
     printf("%d\n",m);
     }
     程序運行后的輸出結(jié)果是_________。
     A)l  B)2  C)3  D)4
     答案:A
     評析:因為a%3是個常數(shù),所以只執(zhí)行就跳出switch結(jié)構(gòu)。即只執(zhí)行m++,此時m為1。
     (27)若有說明:int n=2,*p=&n,*q=p;,則以下非法的賦值語句是_________。
     A)p=q;  B)*p=*q;    C)n=*q;  D)p*n;
     答案:D
     評析:指針變量不同于整型變量和其它類型的變量,它是用來存放地址(指針)的,不能將一個整型量(或任何其它非地址類型的數(shù)據(jù))賦給一個指針變量,這樣的賦值是不合法的。