計(jì)算機(jī)等級(jí)二級(jí)C語(yǔ)言模擬試題1(九)

字號(hào):

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