國家二級(C語言)筆試模擬試卷6_第1頁
國家二級(C語言)筆試模擬試卷6_第2頁
國家二級(C語言)筆試模擬試卷6_第3頁
國家二級(C語言)筆試模擬試卷6_第4頁
國家二級(C語言)筆試模擬試卷6_第5頁
已閱讀5頁,還剩123頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

國家二級(C語言)筆試模擬試卷第1

一、公共基礎(chǔ)選擇題(本題共10題,每題7.0分,共

10分。)

1、算法的空間復(fù)雜度是指

A、算法程序的長度

B、算法程序中的指令條數(shù)

C、算法程序所占的存儲空間

D、算法執(zhí)行過程中所需要的存儲空間

標(biāo)準(zhǔn)答案:8

知識點解析:算法的空間復(fù)雜度一般是指這個算法執(zhí)行時所需要的內(nèi)存空間,其中

包括算法程序所占的空間、輸入的初始數(shù)據(jù)所占的存儲空間以及算法執(zhí)行過程中所

需要的額外空間,其中額外空間還包括算法程序執(zhí)行過程的工作單元以及某種數(shù)據(jù)

結(jié)構(gòu)所需要的附加存儲空間。

2、數(shù)據(jù)的存儲結(jié)構(gòu)是指

A、數(shù)據(jù)所占的存儲空間量

B、數(shù)據(jù)的邏輯結(jié)構(gòu)在汁算機中的表示

C、數(shù)據(jù)在計算機中的順序存儲方式

D、存儲在外存中的數(shù)據(jù)

標(biāo)準(zhǔn)答案:2

知識點解析:數(shù)據(jù)的存儲結(jié)構(gòu)是數(shù)據(jù)元素在計算機存儲器內(nèi)的表示。數(shù)據(jù)的存儲結(jié)

構(gòu)是邏輯結(jié)構(gòu)用計算機語言的實現(xiàn),即建立數(shù)據(jù)的機內(nèi)表示。

3、設(shè)有下列二叉樹:對此二叉樹后序遍歷的結(jié)果為

A、ABCDEF

B、BDAECF

C、ABDCEF

D、DBEFCA

標(biāo)準(zhǔn)答案:8

知識點解析:二叉樹的遍歷分為先序、中序、后序三種不同方式.本題要求后序遍

歷,其遍歷順序應(yīng)該為:后序遍歷左子樹,后序遍歷右子樹,訪問根結(jié)點。按照定

義,后序遍歷序列是DBEPCA,故答案為D。

4、源程序中應(yīng)包含一些內(nèi)部文檔,以幫助閱讀和理解程序,源程序的內(nèi)部文檔通

常包括選擇合適的標(biāo)識符、注釋和

A、程序的視覺組織

B、盡量不用或少用GOTO語句

C、檢查輸入數(shù)據(jù)的有效性

D、設(shè)計良好的輸出報表

標(biāo)準(zhǔn)答案:1

知識點解析:源程序文檔化主要包括三個方面的內(nèi)容:標(biāo)識符的命名、程序中添加

注釋以及程序的視覺組織。

5、對于長度為n的線性表,在最壞情況下,下列各排序法所對應(yīng)的比較次數(shù)中正

確的是

A、冒泡排序為n/2

B、冒泡排序為n

C、快速排序為n

D、快速排序為n(n-l)/2

標(biāo)準(zhǔn)答案:8

知識點解析:假設(shè)線性表的長度為n,在最壞情況下,冒泡排序和快速排序需要的

比較次數(shù)為n(n-4)/2。由此可見,選項D正確。

6、下面不屬于軟件設(shè)計原則的是

A、抽象

B、模塊化

C、自底向上

D、信息隱藏

標(biāo)準(zhǔn)答案:4

知識點解析:軟件設(shè)計的原則包括:抽象、模塊化,信息隱蔽和模塊獨立性。所以

自底向上不是軟件設(shè)計原則。答案為C。

7、在數(shù)據(jù)庫管理系統(tǒng)提供的數(shù)據(jù)語言中,負(fù)責(zé)數(shù)據(jù)的完整性、安全性的定義與檢

查以及并發(fā)控制、故障恢復(fù)等功能的是

A、數(shù)據(jù)定義語言

B、數(shù)據(jù)轉(zhuǎn)換語言

C、數(shù)據(jù)操縱語言

D、數(shù)據(jù)控制語言

標(biāo)準(zhǔn)答案:8

知識點解析:在數(shù)據(jù)庫管理系統(tǒng)提供的數(shù)據(jù)語言中,數(shù)據(jù)控制語言負(fù)責(zé)數(shù)據(jù)的完整

性、安全性的定義與檢查以及并發(fā)控制、故障恢復(fù)等功能。

8、下列對于線性鏈表的描述中正確的是

A、存儲空間不一定是連續(xù),且各元素的存儲順序是任意的

B、存儲空間不一定是連續(xù),且前件元素一定存儲在后件元素的前面

C、存儲空間必須連續(xù),且前件元素一定存儲在后件元素的前面

D、存儲空間必須連續(xù),且各元素的存儲順序是任意的

標(biāo)準(zhǔn)答案:1

知識點解析:在鏈?zhǔn)酱鎯Y(jié)構(gòu)中,存儲數(shù)據(jù)的存儲空間可以不連續(xù),各數(shù)據(jù)結(jié)點的

存儲順序與數(shù)據(jù)元素之間的邏輯關(guān)系可以不一致,數(shù)據(jù)元素之間的邏輯關(guān)系,是由

指針域來確定的。由此可見,選項A的描述正確。

9、以下敘述中正確的是

A、C程序中注釋部分可以出現(xiàn)在程序中任意合適的地方

B、花括號“{”和“}”只能作為函數(shù)體的定界符

C、構(gòu)成C程序的基本單位是函數(shù),所有函數(shù)名都可以由用戶命名

D、分號是C語句之間的分隔符,不是語句的一部分

標(biāo)準(zhǔn)答案:1

知識點解析:與"*尸之間的信息稱為注釋信息,在C語言中,允許在任何能夠

插入空格符的位置插入注釋,但C語言的注釋不能進(jìn)行嵌套,故選項A正確;在

C語言中,函數(shù)體是從花括號“{”開始,到花括號“}”結(jié)束.但沒有規(guī)定花括號氣”和

只能作為函數(shù)體定界符,故選項B錯誤;選項C中前半句是正確的,在C程序

中由有一個或多個函數(shù)所組成,但不是所有的函數(shù)都由用戶自己命名,有些函數(shù)比

如庫函數(shù),主函數(shù)main。就不能由用戶來命名,故選C不正確:在C語言中明確

規(guī)定每條語句以分號結(jié)束,分號是語句不可缺少的一部分,故選項D不正

確。所以,4個選項中選項A符合題意。

10、以下選項中合法的實型常數(shù)是

A、5E2.0

B、E-3

C、2E0

D、I.3E

標(biāo)準(zhǔn)答案:4

知識點解析?:在C語言中,實數(shù)有兩種表示形式:十進(jìn)制數(shù)形式與指數(shù)形式。

般形式的實數(shù):小數(shù)形式的實數(shù)由整數(shù)部分、小數(shù)點和小數(shù)部分組成(必須要有小

數(shù)點),指數(shù)形式的小數(shù);指數(shù)形式的實數(shù)由尾數(shù)部分、e(E)和指數(shù)部分組成(字母

e或E的前后必須要有數(shù)字,且其后面的指數(shù)必須為整數(shù))。選項A中,5E2.0中E

后面的2.0不是整數(shù);選項B中,E前面沒有數(shù)字:選項D中,E后面沒有數(shù)字。

最終可以判斷選項C正確。

二、選擇題(1分)(本題共10題,每題1.0分,共10

分。)

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

A、構(gòu)成c程序的基本單位是函數(shù)

B、可以在一個函數(shù)中定義另一個函數(shù)

C、main函數(shù)必須放在其他函數(shù)之前

D、C函數(shù)定義的格式是K&R格式

標(biāo)準(zhǔn)答案:1

知識點解析:構(gòu)成C程序的基本單位是函數(shù),A)正確;函數(shù)的定義是互相平行、

獨立的,一個函數(shù)內(nèi)不能定義另一個函數(shù),B)錯誤;main函數(shù)可以在其他函數(shù)之

前定義,也可以在其他函數(shù)之后定義,。錯誤;C函數(shù)定義的一般格式分為傳統(tǒng)

格式和現(xiàn)代格式,傳統(tǒng)格式也稱K&R格式,是早期編譯系統(tǒng)使用的格式,現(xiàn)代格

式又稱ANSI格式,是現(xiàn)代編譯系統(tǒng)使用的格式。

12、結(jié)構(gòu)化程序所規(guī)定的三種最基本控制結(jié)構(gòu)是(),

A、輸入、處理、輸出

B、樹形、網(wǎng)形、環(huán)形

C、順序、選擇、循環(huán)

D、主程序、子程序、函數(shù)

標(biāo)準(zhǔn)答案:4

知識點解析:結(jié)構(gòu)化程序設(shè)計方法采用順序、選擇和循環(huán)三種基本程序控制結(jié)構(gòu)編

寫程序,從而使程序具有好的結(jié)構(gòu)。

13、一個C語言程序是由()。

A、一個主程序和若干子程序組成

B、函數(shù)組成

C、若干過程組成

D、若干子程序組成

標(biāo)準(zhǔn)答案:2

知識點解析:一個C源程序是由一個main函數(shù)和若干個其他函數(shù)組成的。函數(shù)是

C程序的基本單位,被調(diào)用的函數(shù)可以是系統(tǒng)提供的庫函數(shù),也可以是用戶根據(jù)需

要自己定義的函數(shù)。

14、請選出可用作C語言用戶標(biāo)識符的是()。

A、void,define,WORD

B、a3_b3,_123,IF

C、FOR,-abc,Case

D、2a,Do,$izeof

標(biāo)準(zhǔn)答案:2

知識點解析:C語言規(guī)定用戶標(biāo)識符由字母、數(shù)字和下劃線組成,且第一個字符必

須是字母或下劃線,可見選項C),D)是錯誤的;此外,C語言不允許用戶將關(guān)鍵

字作為標(biāo)識符,而選項A)中的void是C語言的關(guān)犍字。

15、下列各數(shù)據(jù)類型不屬于構(gòu)造類型的是()。

A、枚舉型

B、共用型

C、結(jié)構(gòu)型

D、數(shù)組型

標(biāo)準(zhǔn)答案:1

知識點解析:本題考查高級語言的數(shù)據(jù)類型。

16、在16位C編譯系統(tǒng)中,若定義longa:則能給a賦值40000的正確語句是

()。

A、a=2000p+20000;

B、a=4000*10;

C、a=30000+10000;

D、a=4000L*10L;

標(biāo)準(zhǔn)答案:8

知識點解析:40000已經(jīng)超過了C語言規(guī)定的短整型的范圍。要將這樣的數(shù)賦值給

一個長整型變量,需要在整型常量后面加字母L。

17、以下不正確的敘述是()。

A、在C程序中,逗號運算符的優(yōu)先級最低

B、在C程序中,APH和aph是兩個不同的變量

C、若變量a和b類型相同,執(zhí)行了賦值表達(dá)式a=b后b中的值將放入a中,用b

中的值不變

D、當(dāng)從鍵盤輸入數(shù)據(jù)時,對于整型變量只能輸入整型數(shù)值,而實型變量只能輸入

實型數(shù)值

標(biāo)準(zhǔn)答案:8

知識點解析:在C語言的所有運算符中,逗號運算符的優(yōu)先級最低;C語言中的字

母區(qū)分大小寫,所以APH和aph是兩個不同的變量:賦值表達(dá)式a=b表示將b的

值賦給a,而b本身的值保持不變;當(dāng)從鍵盤輸入數(shù)據(jù)時、對于整型變量可以輸入

整型數(shù)值和字符,對于實型變量可以輸入實型數(shù)和整型數(shù)值等,選項D)錯。

18、sizeof(float)是()。

A、一個雙精度型表達(dá)式

B、一個整型表式

C、一種函數(shù)調(diào)用

D、一個不合法的表達(dá)式

標(biāo)準(zhǔn)答案:2

知識點解析:sizeof是長度運算符,或稱字節(jié)數(shù)運算符,用于計算數(shù)據(jù)類型和變量

的長度。

19、若x,i,j和k都是int型變量,則計算表達(dá)式x=(i=4,j=16,k=32)后,x的值

為()。

A、4

B、16

C、32

D、52

標(biāo)準(zhǔn)答案:4

知識點解析:逗號表達(dá)式的形式如下:表達(dá)式1,表達(dá)式2,表達(dá)式3,……,表

達(dá)式n逗號表達(dá)式作為一個整體,其運算過程是從左往右逐個計算表達(dá)式,它的值

為最后一個表達(dá)式(也即表達(dá)式n)的值。逗號運算符的優(yōu)先級別在所有運算符口最

低。

20、下面程序的功能是衛(wèi)316表示為兩個加數(shù)的和,使兩個加數(shù)分別能被13和11

整除,請選擇填空。#include<stdio.h>main(){inti=0,j,k;do{i++;k=316-

13*i}while();j=k/ll;printf("316=13*%d+ll,%d”,i,j);)

A、k/11

B、k%II

C、k/ll==0

D、k%ll==0

標(biāo)準(zhǔn)答案:2

知識點解析:本題的關(guān)鍵是兩個加數(shù)分別能被13和11整除。當(dāng)k%ll的值為0

時,則退出循環(huán),將執(zhí)行j=k/U:語句,輸出結(jié)果,所以該表達(dá)式合理的條件是

k%llo

三、選擇題(2分)(本題共30題,每題7.0分,共30

分。)

21、以下選項中可以作為C語言合法常旱的是

A、-80

B、-80

C、-8el.O

D、-80.0e

標(biāo)準(zhǔn)答案:1

知識點解析:本題考查的是C語言中整型常量與實型常量的部分表示方法。選項

A用的是整型常量的十進(jìn)制表示法,是正確的。以0或-0開頭的整數(shù)是八進(jìn)制數(shù)表

示法,八進(jìn)制數(shù)的原則是“逢八進(jìn)一”它只可能包含。?7這8個符號,故選項B是

錯誤的。選項C和D椰是實型常量的指數(shù)表示法,其規(guī)則是用字母。(或E)將一個

實數(shù)的小數(shù)部分和指數(shù)部分分隔開。字母e(或E)之前是小數(shù)部分,之后是指數(shù)部

分,這兩部分都不能省略,且指數(shù)部分必須為整數(shù)。故選項C和D都不正確。所

以,4個選項中選項A符合題意。

22、下列條件語句中,功能與其他語句不同的是

A、if(a)printf("%d\n",x);elseprinff("%d\nn,y);

B、if(a==O)printf("%d\n,\y);elseprintf("%d\nM,x);

C、fi(a!=O)prinff("%d\n"x);elseprintf("%d\n",y);

D、if(a==O)prinff("%d\n,\x);elseprintf("%d\n",y);

標(biāo)準(zhǔn)答案:8

知識點解析:本題考核的知識點是計語句的用法。選項A、選項B和選項C都是

在a的值為。的時候輸出y,a不為。的時候輸出x,而選項D是在a為0的時候

輸出x,a不為0的時候輸出y,所以,4個選項中選項D符合題意。

23、以下不能定義為用戶標(biāo)識符是

A、Main

B、_0

C、_int

D、sizeof

標(biāo)準(zhǔn)答案:8

知識點解析:本題考查的是C語言中的標(biāo)識符與關(guān)鍵字。合法的標(biāo)識符由字母,

數(shù)字和下劃線組成,并且第一個字符必須為字母或下劃線。另外,C語言規(guī)定了一

批關(guān)鍵字,它們在程序中都代表著固定的含義,不能另作它用,所以合法的標(biāo)識符

也不能是C語言的任一關(guān)鍵字。本題中,選項A、B、C都符合上述條件,只有選

項Dsizeof是C語言中的關(guān)鍵字,所以,4個選項中選項D符合題意。

24、有以下程序main(){inti,n=0;for(i=2;i<5;i++){do{if(i%3)continue;n++;}

while(!i);n++;}printf("n=%d\n",n);}程序執(zhí)行后的輸出結(jié)果是

A、n=5

B、n=2

C、n=3

D、n=4

標(biāo)準(zhǔn)答案:8

知識點解析:本題考核的知識點是do…while結(jié)構(gòu)和算術(shù)運算符%的應(yīng)用。

do…while的結(jié)構(gòu)形式為:do循環(huán)體while(條件表達(dá)式),當(dāng)程序執(zhí)行到do后,先

執(zhí)行循環(huán)體一次,然后才對條件表達(dá)式進(jìn)行計算、判斷。若條件表達(dá)式的值為真,

則重復(fù)執(zhí)行一次循環(huán)體;否則退出,與while結(jié)構(gòu)相比,do…while結(jié)構(gòu)至少要執(zhí)

行一次循環(huán)體;運算符%是求模運算,即求兩個數(shù)相除的余數(shù)。continue語句的作

用時結(jié)束本次循環(huán),即跳過本次循環(huán)中余下尚未執(zhí)行的語句,接著再一次進(jìn)行循環(huán)

的條件判定。本題中,當(dāng)i=2時,執(zhí)行如循環(huán)。由于if表達(dá)式的條件為真,執(zhí)行

continue語句,結(jié)束本次循環(huán),判斷while循環(huán)條件為假,故退出while循環(huán),執(zhí)行

n++,此時n的值為1,當(dāng)i=3時,執(zhí)行do循環(huán).曰于if(3%3)為假,執(zhí)行下面的

n++語句,此時n的值為2,結(jié)束本次循環(huán),繼續(xù)判斷while循環(huán)條件為假,故退

出while循環(huán),執(zhí)行n++語句,此時n的值為3;當(dāng)i=4時,執(zhí)行如循環(huán)。由于

if(4%3)為真,執(zhí)行continue語句,結(jié)束本次循環(huán),繼續(xù)判斷whHe循環(huán)條件為假,

故退出while循環(huán),執(zhí)行n++,此時n的值為4;當(dāng)i=5時,退出for循環(huán),因此最

后輸出的n的值為4,所以,4個選項中選項D符合題意。

25、有以下程序main(){inta=15,b=21,m=0;switCh(a%3){case0:m++;break;

casel:m++;switch(b%2){default:m++;case0:m++;break;})printf("%d\n",m);

程序運行后的輸出結(jié)果是

A、1

B、2

C、3

D、4

標(biāo)準(zhǔn)答案:1

知識點解析:在switch語句中break語句的作用是退出分支語句,若沒有break語

句則一直向下執(zhí)行。本題中首先計算switch后面括號里的表達(dá)式a%3,印15%3為

0:執(zhí)行case。:后面的語句m++;m自加1,即m為1遇到break語句;然后跳出

switch語句,所以最后輸出的m的值為1,所以選項A正確。

26、以下程序的輸出結(jié)果是main(){inta=4,b=5,c=0,d;d=!a&&!h||!c;printf

("%d\n",d);)

A、1

B、0

C、非0的數(shù)

D、-1

標(biāo)準(zhǔn)答案:1

知識點解析:本題考核的知識點是邏輯運算符的運用。由于單目運算符優(yōu)先級高

于“&&”和“II”、運算,所以先計算!a、!b和!c分別為“假”、“假”、“真”,然后是

&&運算和“II”運算,原表達(dá)式就等價于“假”&&“假F“真”又由于“&&”的優(yōu)先級

高于“II”運算符,所以先計算“假"&&"假",還是為假,最后是“假”11,"真''為

真。因此最后d被賦值為1,故最后輸出為1。所以,4個選項中A為所選。

27、若有說有:intn=2,*p=&n,*q=p;,則以下非法的賦值語句是

A^P=q;

B、*p=*q;

C、n=*q;

D、p=n;

標(biāo)準(zhǔn)答案:8

知識點解析:本越考查的知識點是指針的賦值。本題中首先定義了一整型變量n并

賦初值為2,接著定義了一個整型指針變量p并讓它指向n,接著又定義了一指向

指針的指針變量q,選項A中給指針變量p賦值小故這個賦值語句正確;選項B中

*p=*q就是將*q的值賦給指針變量p所指向的變量n,故這個賦值語句不是非法的

賦值語句;選項C中是將*q的值賦給變量n,故這個表達(dá)式不是非法的賦值語

句:選項D中p為一指針變量應(yīng)該杵一地址賦給它,而在此選項的表達(dá)式中將變

量n而不是n的地址賦給它,故這個表達(dá)式不合法,

28>以下程序的輸出結(jié)果是charcchar(charch){if(ch>='A,&&ch<=,Z,)

ch=ch-,A,+,a,;returnch;}main(){chars[]=nABC+abc=defDEFn,*p=s;while(*p)

{*p=cchar(*p);p++;)printf{"%$\n",s);}

A、abc+ABC=DEFdef

B、abc+abc=defdef

C、abcABCDEFdef

D、abcabcdefdef

標(biāo)準(zhǔn)答案:2

知識點解析:本題考核的知識點是字符型指針變量與函數(shù)的綜合應(yīng)用。本題首先定

義了一個函數(shù)cchar(),有一個字符型參數(shù)ch。在函數(shù)中首先判斷該字符是否為大

寫字母,如果是則把它轉(zhuǎn)換成小寫字符再賦值給cb,把ch作為函數(shù)值返回。在主

函數(shù)中定義了一個字符數(shù)組s并初始化,然后定義了一個指針變量并使它指向數(shù)組

so接著通過一個while循環(huán)利用指針變量p,依次取出字符數(shù)組的字符(直到遇到

字符串結(jié)束標(biāo)志「\0'為止),并調(diào)用cchar。函數(shù),把大寫字母轉(zhuǎn)換成小寫字母,其

他字符不變。最后輸出字符數(shù)組為s中的內(nèi)容,結(jié)果為“abc+abc=defdeF"。所以,4

個選項中B為所選3

29、有以下程序main(){inta=7,b=8,*p,*q,*r;p-&a;q=&b;r=p;p=q;q=r;printf

(”%d,%d,%d,%d\n”,*p,*q,a,b);程序運行后的輸出結(jié)果是

A、8,7,8,7

B、7,8,7,8

C、8,7,7,8

D、7,8,8,7

標(biāo)準(zhǔn)答案:4

知識點解析:本題考核的知識點是指針變量的基本應(yīng)用。程序中定義了兩個變量a

和b,并分別賦初值為7和8,定義了三個指針變量p、q、r,并讓指針p指向變

量a,讓Q指向變量b,然后通過一個中間指針變量r,使指針變量p和q互換,

互換后p指向q所指的內(nèi)容即b,Q指向開始p所指向的內(nèi)容即a,因此最后輸出

的*p,*q的值為8,7,a,b的值沒有改變?nèi)詾?,8,所以,4個選項中選項C符

合題意。

30、以下程序的功能是:給r輸入數(shù)據(jù)后計算半徑r圓面積s。程序在編譯時出錯。

main()/*Beginning*/{intr;floats;scanf(n%dn,&r);s=*7t*r*r;printf(,,s=%f\n'\s);

出錯的原因是

A、注釋語句書寫位置錯誤

B、存放圓半徑的變量r不應(yīng)該定義為整型

C、輸出語句中格式描達(dá)符非法

D、計算圓面積的賦值語句中使用了非法變量

標(biāo)準(zhǔn)答案:8

知識點解析:在C語言源程序中了注釋部分、字符串常量部分可以使用任意字符

外,其余部分只能由52個大小寫:字母、10個阿拉伯?dāng)?shù)字以及'心?

|!#%&()[「V>“空格”30個特殊符號組成。所以在計算圓面積的賦值語句中出現(xiàn)的

兀是非法字符,將引起編譯出錯.應(yīng)該選擇D。

31、有以下程序main(){intx[8]={8,7,6,5,0,0},*s;s=x+3;printf(M%d\n",s[2]);)

執(zhí)行后輸出結(jié)果是

A、隨機值

B、0

C、5

D、6

標(biāo)準(zhǔn)答案:2

知識點解析:本題考核的知識點是指向一維數(shù)組的指針變量,通過賦值語句

“s=x+3”,使指針變量s指向數(shù)組元素x[3],輸出語句中的s[2]等價于*(s+2),即

x[5]僖為0。所以,B選項為所選。

32>有以下程序main(){chara[inti,j;i=sizcof

(a);j=strlen(a);printf(”%d,%d\n"ij);}程序運行后的輸出結(jié)果是

A、9,9

B、8,9

C、1,8

D、9,8

標(biāo)準(zhǔn)答案:8

知識點解析:本題中首先定義了字符數(shù)組a,由于它的長度省略,所以其長度由初

值個數(shù)確定,為9。接著將sizeof。函數(shù)返回的值賦給i(SIZeof()函數(shù)的作用是返回

運算對象占用的字符數(shù)),所以i值為9。然后將strlcn。函數(shù)的返回值賦給j(strlcn()

函數(shù)的作用是返回字符串的長度,不包括字符串的結(jié)束標(biāo)記所以j值為3,

所以最后輸出的i.j的值為9.Xc所以4個選項中D正確.

33、有以下程序main(){chara[7]="a0\0a0\0";inti.j;i=sizcof(a);j=strlcn(a);printf

("%d%d\n",i,j);)程序運行后的輸出結(jié)果是

A、22

B、76

C、72

D、62

標(biāo)準(zhǔn)答案:4

知識點解析:本題主要考查的是C語言中的數(shù)組長度和字符串長度。數(shù)組長度指

的是一個數(shù)組所占內(nèi)存空間的字節(jié)數(shù),數(shù)組長度可以通過sizeof(V數(shù)組名〉)來求

得;字符串長度是指從指定內(nèi)存地址開始直到碰到第一個‘\0'字符為止所經(jīng)過的字

符數(shù)(不包括'\0'字符),字符串長度可以通過字符串函數(shù)sirlen(〈字符串首地址值

〉)來求得。所以本題程序運行后,變量i中是數(shù)組a的長度7,變量j中是數(shù)組a

中第一個、(T字符之前的字符數(shù)2:選項C符合題意。

34、有以下定義:#include<stdio.h>chara|10|,*b=a;不能給數(shù)組a輸入字符串的語

句是

A、gets(a)

B>gets(a|O])

C、gets(&a[O]);

D、gets(b);

標(biāo)準(zhǔn)答案:2

知識點解析:本題考核的知識點是函數(shù)gets。的應(yīng)用。函數(shù)gets。的調(diào)用形式為

gcts(stjadr);stjadr是存放字符串的起始地址??梢允亲址麛?shù)組名、字符指針或

字符數(shù)組元素的地址。gels函數(shù)用來從終端鍵盤讀入字符串(包括空格符),直到讀

入一個換行符為止。換行符讀入后,不作為字符串的內(nèi)容。本題中定義一個長度為

10的字符數(shù)組,和一個指針變量b,并且通過賦值讓它指向數(shù)組a;選項A。選項

Bo選項C和選項D中只有選項B中g(shù)ets函數(shù)的參數(shù)a|0]不能表示數(shù)組a的首地

址,故選項B不正確。所以,4個選項中選項B符合題意。

35、有以下程序:main(){char*p[10]={',abcu,naabdfgn,"dcdbc","abbd","cd"};

printf("%d\n",strten(p|4|));}執(zhí)行后輸出結(jié)果是

A、2

B、3

C、4

D、5

標(biāo)準(zhǔn)答案:1

知識點解析:本題考核的知識點是指針數(shù)組的定義和strlen。函數(shù)的應(yīng)用。本題中

首先定義了一個長度為10的指針數(shù)組,并賦初值,因此執(zhí)行stHen(p[4]后的返回值

為字符串“cd”的長度為2。所以,4個選項中選項A符合題意。

36、下列函數(shù)定義中,會出現(xiàn)編譯錯誤的是

A、max(intx,inty,int*7.){*z=x>y?x:y;)

B、intmax(intx,y){intz;z=x>y?x:y;returnz;}

C、max(intx,inty){intz;z=x>y?x:y;return(z);

D^intmax(intx,inty){return(x>y?x:y);)

標(biāo)準(zhǔn)答案:2

知識點解析:本題考核的知識點是函數(shù)的定義方法。選項B中在說明形參時,省

略了第二個參數(shù)的類型,故選項B編譯不能通過。所以,4個選項中選項B符合

題意。

37、設(shè)有定義:intnl=0.n2,*p=&n2,*q=&nl;,以下賦值語句中與n2=nl;語

句等價的是

A、*p;*q;

B、p=q;

C^*p=&nl;

D、p=*q;

標(biāo)準(zhǔn)答案:1

知識點解析:本題考查的是指針的運算。題目中定義了兩個變量nl和n2,又定義

了兩個指針p和q分別指向變量n2和nl。要通過指針實現(xiàn)n2=nl,就是要將q所

指內(nèi)容賦給p所指內(nèi)容,即*p*q。所以應(yīng)該選擇A。

38、以下敘述中正確的是

A、局部變量說明為stmic存儲類,其生存期將得到延長

B、全局變量說明為sioic存儲類,其作用域?qū)⒈粩U大

C、任何存儲類的變量在未賦初值時,其值都是不確定的

D、形參可以使用的存儲類說明符與局部變量完全相同

標(biāo)準(zhǔn)答案:1

知識點解析:靜態(tài)局部變量在整個程序運行期間,靜態(tài)局部變量在內(nèi)存的靜態(tài)存儲

區(qū)中占據(jù)著永久性的存儲單元。由此可知靜態(tài)局部變量的生存期將一直延長到程序

運行結(jié)束。故選項A正確;而全局變量的只有一種靜態(tài)存儲類別,故全局變量說

明為static存儲類,和沒有說明為static存儲類其生存期都是一直延長到程序運行

結(jié)束,故選項B不正確;未賦初值的auto型變量的初值是隨機的,未賦初值的

stalic型變量的初值是0(故選項C和選項D不正確)。所以;4個選項中選項A符合

題意。

39、設(shè)函數(shù)fun的定義形式為voidfun(charch,floatx){…}則以下對函九fun的調(diào)

節(jié)器用語句中,正確是

A、fun(nabc,r,3.0);

B、t=fun(,D\16.5);

C、fun(,65\2.8):

D、fun(32,32);

標(biāo)準(zhǔn)答案:8

知識點解析:本題考查了函數(shù)的定義。題目中定義的函數(shù)「un()有兩個參數(shù),一個

是字符型變量ch.另一個是浮點型變量x,函數(shù)類型是void即無返回值-選項A

調(diào)用fun的第1個參數(shù)是字符串常量與字符變量不匹配,所以不正確。選項B是有

返回值函數(shù)的調(diào)用形式,不正確。選項C的第1個參數(shù)是錯誤的字符常量,字符

常量是用單引號括起來的一個字符(是轉(zhuǎn)義字符可能有多個字符),故也不正確。選

項D使用兩個整型常量調(diào)用fun這在C語言中是允許的。因為整型到字符型可以

自動轉(zhuǎn)換,整型到浮點型也可以自動轉(zhuǎn)換。故應(yīng)該選擇D。

40、有以下程序main()inta[10]={l,2,3,4,5,6,7,8,9,10),*p=.&a[3],*q=p+2;printf

("%d\n",*p+*q);程序運行后輸出結(jié)查是

A、16

B、10

C、8

D、6

標(biāo)準(zhǔn)答案:2

知識點解析:本題考查的是指針的簡單應(yīng)用。題目中首先定義了一個血型數(shù)組a

并初始化了,然后定義了兩個指針變量p和q,并分別初始化p為指向數(shù)組元素

a[3]、q指向p后面的第2個元素即指向a[5].所以最終輸出的值為a[3]+a[5]的值

10o應(yīng)該選B。

41、有以下程序main(){charp[]={,a,;b,,,c},q[]=nabcH;printf("%d%d\nH,sizeof

(p),sizeof(q));)程序運行后輸出結(jié)果是

A、44

B、33

C、34

D、43

標(biāo)準(zhǔn)答案:4

知識點解析:本題考查的是字符數(shù)組的初始化。字符數(shù)組即可以用{初始化列裹}來

初始化,也可以用一個字符串常量來初始化。但字符串常量系統(tǒng)會自動為其添加結(jié)

束標(biāo)記、(T,故比實際長度要多一位,所以本題輸出為34,應(yīng)該選擇C。

42、有以下程序#definef(x)(x'x)main(){intil,i2;il=f(8)/f(4);i2=f(4+4)/f(2+2);

printf("%d,%d\n”,ilj2);}程序運行后的輸出結(jié)果是

A、64,28

B、4,4

C、4,3

D、64,64

標(biāo)準(zhǔn)答案:4

知識點解析:本題考查的是帶參數(shù)的宏。宏替換與函數(shù)調(diào)用不同,前者是字面上

的,在編譯期間完成,后者是內(nèi)容上的,在運行期間才進(jìn)行。題目中第1條要替換

的語句il=(8)/f(4);展開后是il=(8*)/(4*4);結(jié)果使il=4.而第2條語句

i2=f(4+4)/f(2+2);展開后為i2=(4+4*4+4)/(2+2*2+2);結(jié)果使i2=24/8=3。故應(yīng)該選

擇U

43、有以下程序main(){charal='M',a2='m';printf(H%c\n",(al,a2));}以下敘述

中正確的是

A、程序輸出大寫字母M

B、程序輸出小寫字母m

C、格式說明符不足,編譯出錯

D、程序運行時產(chǎn)生錯信息

標(biāo)準(zhǔn)答案:2

知識點常析:本題考查的是逗號表達(dá)式。因為整個逗號表達(dá)式的值為逗號表達(dá)式最

后一個于表達(dá)式的值,所以本題輸出的是a2的值,故應(yīng)該選擇B。

44>有以4程序main(){unsignedinta;intb=-l;a=b;printf(M%u",a);}程序運行后的

輸出結(jié)果是

A、-1

B、65535

C、32767

D、-32768

標(biāo)準(zhǔn)答案:2

知識點編析:本題考核的知識點是無符號整型數(shù)據(jù)的簡單運用。程序中定義了一個

無符號整型變量a和一個整型變量b,并且給它賦初值為-1,整型在計算機中都以

二進(jìn)制表示的,-I在二進(jìn)制表示為1000000000000001,所以當(dāng)表示為無符號整

數(shù)時轉(zhuǎn)換為十進(jìn)制為32767,故最后輸出的無符號型a的值為32767。所以,4個

選項中選項B符合題意

45、有以4程序:#include<string.h>main(){char

str[][20]={"Hello","Beijing")*p=str;printf("%\n,',strlen(p+20));}程序運行后的輸出結(jié)

果是

A、0

B、5

C、7

D、20

標(biāo)準(zhǔn)答案:4

知識點解析:本題考核的知識點是二維數(shù)組的初始化及庫函數(shù)s〔rlcn()的應(yīng)用。主

函數(shù)中定義了一個二維字符數(shù)組并初始化,初始化后的結(jié)果為str[0|="Hello%

str[l]="Beijing'\然后定義一個字符指針變量p并讓它指向數(shù)組的首地址,即指向

str[O],而在C語言中無論是一維還是多維數(shù)組,其元素在內(nèi)存中都是順序存放

的,故p+20后指針指向所以stHen(P+20);返回的是中的字符串的長

度,即Beijing的長度為7,所以最后輸出的值為7,所以,4個選項中選項C符合

題意。

46、有以卜程序:#include<string.h>main(intargc,char*argv||){intiJen-0;

for(i=l;i<argc;i+=2)len+=strlen(argv[i]);printf("%d\nH,len);}經(jīng)編譯鏈接后生成的可

執(zhí)行文件是cx.cxc,若運行時輸入以下帶參數(shù)的命令行exabedcfgh3k44執(zhí)行后輸

出的結(jié)果是

A、14

B、12

C、8

D、6

標(biāo)準(zhǔn)答案:8

知識點解析:本題考核的知識點是帶寥數(shù)的主函數(shù)的應(yīng)用。主函數(shù)的第一個參數(shù)

argc為整形參數(shù),記下從命令行輸入的參數(shù)的個數(shù);第二個參數(shù)argv是一個字符

型的指針數(shù)組,它的每一個元素指向命令行輸入的參數(shù)字符數(shù)。在本例中argc的

值為5,argv[0]指向字符串“ex”,argv[l]指向參數(shù)字符串“abed",argv⑵指向字符

串“efg”,argv[3]指向參數(shù)字符串“h3”,argv[4]指向參數(shù)字符串“K44”。在main。函

數(shù)中,for循環(huán)執(zhí)行了2次,當(dāng)i-1時,len=O+strlen〔argv[1]),而其中

argv[l]=<4abcd,\故此時len的值為4;當(dāng)i=3時,len=4+strlen(argv[3]),而其小

argv[3]-th3,\故此時len的值為6;當(dāng)i=5時,退出循環(huán),故最后輸出的len的住

為6。所以,4個選項中選項D符合題意。

47、在說明語句:中,標(biāo)識符f代表的是

A、一個用于指向整型數(shù)據(jù)的指針變量

B、一個用于指向一維數(shù)組的行指針

C、一個用于指向函數(shù)的指針變量

D、一個返回值為指針型的函數(shù)名

標(biāo)準(zhǔn)答案:8

知識點解析:本題考核的知識點是指針作為函數(shù)返回值的定義方式。定義指向整型

元素的指針變量形式為:hat*指針變量名。定義指向整型一維數(shù)組的行指針形式

為:int(*指針變量名[長度],定義指向返回值為整型的函數(shù)的指針變量的形式為:

int(*函數(shù)名)(),定義返回值為指向整型的指針型函數(shù)的形式為:int*函數(shù)名(),本

題定義的是一個返回值為指針型的函數(shù)f()。所以,4個選項中D為所選。

48、有如下程序#inckide<stdio.h>main(){FILE旺pl;fpl;fopen("ftxt","w'');

fprintf(fpl,"abc")fclose(fpl);)若文本文件fl.txt中原看內(nèi)容為:good,則運行以

上:程序后文件fl.Ml中的內(nèi)容為

A、goodabc

abed

C、abc

D^abegood

標(biāo)準(zhǔn)答案:4

知識點解析:本題考核的知識點是操作文件的幾個基本函數(shù)。主函數(shù)中定義了一個

文件指針中1,然后通過fopen()函數(shù),以寫的方式打開文件“fl.tx「,并讓指針印

1指向它,接著調(diào)用fptind。函數(shù)將“abc”寫到文件fpl所指的文件里,由于開始fpl

指向文件的“fl.tx「的開始位置,因此“abc”將把文件“fl.txt”里原來的內(nèi)容“good”覆

蓋掉,故文件F.txt”里最后的內(nèi)容為“ahc”,所以,4個選項中選項C符合題意°

49、下列關(guān)于C語言數(shù)據(jù)文件的敘述中正確的是

A、文件由ASCII碼字符序列組成,C語言只能讀寫文本文件

B、文件由二進(jìn)制數(shù)據(jù)序列組成,C語言只能讀寫二進(jìn)制文件

C、文件由記錄序列組成,可按數(shù)據(jù)的存放形式分為二進(jìn)制文件和文本文件

D、文件由數(shù)據(jù)流形式組成,可按數(shù)據(jù)的存放形式分為二進(jìn)制文件和文本文件

標(biāo)準(zhǔn)答案:8

知識點解析:本題考核的知識點是文件的基本概念。C語言可以讀寫二進(jìn)制文件和

文本文件兩種,故選項A和選項B不正確;文件按數(shù)據(jù)的存放格式可分為二進(jìn)制

文件和文本文件兩種,其中二進(jìn)制文件中數(shù)據(jù)都是以二進(jìn)制的形式存放,故選項C

不正確。所以,4個選項中選項D符合題意。

50、以下敘述中不正確的是

A、C語言中的文本文件以ASCII碼形式存儲數(shù)據(jù)

B、C語言中對二進(jìn)制位的防問速度比文本文件快

C、C語言中,隨機讀寫方式不使用于文本文件

D、C語言中,順序讀寫方式不使用于二進(jìn)制文件

標(biāo)準(zhǔn)答案:8

知識點解析:本題考核的知識點是文件的讀寫方式。在C語言中文本文件是以

ASCH碼形式存放的,每個字符占一個字節(jié)。由于數(shù)據(jù)在計算機中是以;進(jìn)制形式

存放的,因此二進(jìn)制文件中的數(shù)據(jù)可以直接讀出,而不需要像文本文件那樣把

ASCH碼轉(zhuǎn)換成二進(jìn)制,因此速度較快。在文本文件中,數(shù)據(jù)以ASCII碼形式存放

的,用戶很難判定一個數(shù)據(jù)到底占幾個字節(jié),所以不適合使用隨機讀寫方式。數(shù)據(jù)

以二進(jìn)制形式存放,占有的字節(jié)數(shù)是固定的,所以可以進(jìn)行隨機讀寫,當(dāng)然也可以

順序讀寫。所以,D選項為所選。

四、公共基礎(chǔ)填空題(本題共5題,每題1.0分,共5

分。)

51、算法執(zhí)行過程中所需要的基本運算次數(shù)稱為算法的o

標(biāo)準(zhǔn)答案:時間復(fù)雜度

知識點解析:算法在執(zhí)行過程中所執(zhí)行的基本運算的次數(shù),也就是執(zhí)行算法所需要

的計算工作量,稱為算法的時間復(fù)雜度。

52、數(shù)據(jù)的結(jié)構(gòu)在計算機存儲空間中的存放形式稱為數(shù)據(jù)的存儲結(jié)構(gòu)或物理

結(jié)構(gòu)。

標(biāo)準(zhǔn)答案:邏輯

知識之解析:數(shù)據(jù)的邏輯結(jié)構(gòu)在計算機存儲空間中的存放形式稱為數(shù)據(jù)的存儲結(jié)構(gòu)

或物理結(jié)構(gòu)。

53、數(shù)據(jù)流圖的類型有和事務(wù)型。

標(biāo)準(zhǔn)答案:變換型

知識點解析:典型的數(shù)據(jù)流出有兩種,印變換型和事務(wù)型。

54、在關(guān)系數(shù)據(jù)庫中,將數(shù)據(jù)表示成二維表,每一個二維表稱為o

標(biāo)準(zhǔn)答案:關(guān)系或關(guān)系表

知識點解析:在關(guān)系模型中,把數(shù)據(jù)看成一個二維表,每一個二維表稱為一個關(guān)

系.表中的每一列稱為一個屬性,相當(dāng)于記錄中的一個數(shù)據(jù)項,對屬性的命名稱為

屬性名,表中的一行稱為一個元組,相當(dāng)于記錄值。

55、在數(shù)據(jù)庫理論中,數(shù)據(jù)庫總體邏輯結(jié)構(gòu)的改變,如修改數(shù)據(jù)模式、增加新的數(shù)

據(jù)類型、改變數(shù)據(jù)間聯(lián)系等,不需要相應(yīng)修改應(yīng)用程序,稱為o

標(biāo)準(zhǔn)答案:邏輯獨立性

知識點解析:數(shù)據(jù)庫總體邏輯結(jié)構(gòu)改變,而不需要相應(yīng)修改應(yīng)用程序叫做邏輯獨立

性。

五、填空題(本題共12題,每題1.0分,共12分。)

56、以下程序運行后的輸出結(jié)果是[]。main(){intx=0210;

printf("%X\nH,x);}

標(biāo)準(zhǔn)答案:88

知識點解析:C語言規(guī)定,以0開頭的整型常量為八進(jìn)制。另外,在primf()函數(shù)

中,%X表示以十六進(jìn)制無符號形式輸出一個整數(shù),且十六進(jìn)制中的ABCDEF為

大寫字母。本題的輸出應(yīng)該是八進(jìn)制210的十六進(jìn)制形式。將八進(jìn)制轉(zhuǎn)換為十六進(jìn)

制,可以先將其轉(zhuǎn)換為二進(jìn)制。因為1位八進(jìn)制表示3位二進(jìn)制,4位二進(jìn)制表示

1位十六進(jìn)制。(210)8=(10001000)2=(88)16,故本題輸出為880

57、若有程序:main(){intij;scanq("i=%d,j=%d",&i,&j);printf("i=%d,j=%d\n",

ij);)要求給i賦10,給j賦20,則應(yīng)該從鍵盤輸入【】。

標(biāo)準(zhǔn)答案:i=0,j=20

知識點解析:該函數(shù)的第一個參數(shù)是格式字符串,主要由兩類字符組成,一類是非

格式符要求原樣輸入,一類是格式符對應(yīng)要輸入的變量,所以說本題中應(yīng)該原樣輸

入口,戶,后面分別給變量0和20,所以說空格處應(yīng)該填入i=0,戶20。

58、若有以下程序:main(){int,p,a=5;if(P=a!=O)printf("%d\n",p);else

printf("%d\n",p+2);}執(zhí)行后輸出結(jié)果是【】。

標(biāo)準(zhǔn)答案:1

知識點解析:首先計算if語句后面的表達(dá)式,根據(jù)運算符的優(yōu)先級可知,先算

“a!=0",該值為1,再把1賦值給p,結(jié)果為1(真),執(zhí)行其后的printf語句,輸出

的值為1。

59、當(dāng)運行以下程序時,輸入abed,程序的輸出結(jié)果是:【】。insert(charstr[])

{intii=strlen(str);while(i>0)(str[2*i]=str[i];str[2*-l]=,*,ji—;)printf("%s\nH,

str);)main(){charstr|40|;scanf(,,%s",sB);inscrt(str);}

標(biāo)準(zhǔn)答案:a*b*c*d,

知識點解析:在insert。函數(shù),因為題目要求輸入的字符串為abed,所以執(zhí)行完“i=

strlen(str);”后,i中存放的是字符串a(chǎn)bed的長度值4。所以接F來的while循環(huán)會

循環(huán)4次,每次讓i減1,故4次循環(huán)中i的值依次為4、3、2、1。每次循環(huán)會執(zhí)

行兩條語句str[2*i]=str[i];str[2*i-l]=,*\當(dāng)i=4時為:str[8]=str[4];

str[7=^\o執(zhí)行結(jié)果是將字符串a(chǎn)bed末尾的結(jié)束符、(T復(fù)制到其下標(biāo)值2倍的位

置,并在其前1位插入一個哼符。接下來i=3,執(zhí)行str[6]=str[3];str[5]='*',執(zhí)

行后會將字符串a(chǎn)bed最后--個字符,d復(fù)制到其下標(biāo)值2倍的位置,并在其前1位

插入一個,*,字符。依次類推,直到i=1,執(zhí)行sir⑵二將字符

tb,往后移動了1位,并在原位置插入,字符。所以,循環(huán)結(jié)束后,字符串sir會

變?yōu)閍*b*c*d*。這就是程序的輸出結(jié)果。

60、以下程序運行后的輸出結(jié)果是[1omain(){inta[4][4]={{1,2,3,4},{5,6,

7,8),{11,12,13,14},{15,16,17,18}};inti=0,j=0,s=0;while(i++<4)

{if(i==2||=4)continue;j=0;do{s+=a|i]|j|;j++;)while(j<4);}

Printf(H%d\n",s);)

標(biāo)準(zhǔn)答案:92

知識點解析:主函數(shù)中首先定義了一個4行4列的二維數(shù)組,然后執(zhí)行一個while

循環(huán),該循環(huán)中又嵌套了一個do-while循環(huán)。現(xiàn)看while循環(huán),該循環(huán)通過i++的

值來判斷是否結(jié)束循環(huán)當(dāng)i++的值為4的時候結(jié)束循環(huán),當(dāng)i=0時,執(zhí)行while的

循環(huán)體,顯然if語句條件不滿足不執(zhí)行,接著讓i=0,然后執(zhí)行do-while循環(huán)體,

我們不難看出do-whilo循環(huán)的功能是將第i+1行的所有元素加起來,所以這時s的

值為s=a[l][O]+a[l][l]+a[l]⑵+a[l][3)=26,當(dāng)i=l時,i+l=2,uf后面括號里的表達(dá)

式的值為真執(zhí)行后面的continue語句,結(jié)束該次循環(huán);當(dāng)i=2時,i加1變?yōu)?,把

第3+1行的所有元素的加到s上,此時s=s+a⑵⑼-a⑵⑴+a⑵⑵+a⑵[3]=92,當(dāng)

i=3時,3+1=4,if后面括號里的表達(dá)式的值為真執(zhí)行后面的continue語句,結(jié)束該

次循環(huán),當(dāng)i=3時,if后面括號里的表達(dá)式的值為真執(zhí)行后面的conlinue語句,結(jié)

束該次循環(huán)當(dāng)i=4時while循環(huán)結(jié)束,所以最后輸Hi的s的值為92。

61、己定義定arch='$';inti=l,j;,執(zhí)行j=!ch&&ii++以后,i的值為[】。

標(biāo)準(zhǔn)答案:1

知識點解析?:本題中的ch是一個字符變量,其初始值為芍,(非0值即為真),所

以!ch的結(jié)果為假,此時&&右邊的i十十被“短路,、,即不會被訂算。由此可見,i的

值不會改變,故本題應(yīng)該填1。

62、以下程序運行后的瑜出結(jié)果是。mam(){chara[]="12345678917:p;int

i=0;p=a;while(*p){if(i%2=0)p++;i++;}puts(A);}

標(biāo)準(zhǔn)答案:*2*4*6*8*

知識點解析:程序中定義了一個字符數(shù)組a,并初始化為123456789,接著定義了

一個指針p并讓它指向數(shù)組a,緊接著執(zhí)行了一個while循環(huán),此循環(huán)的作用是:

當(dāng)i為偶數(shù)時,將"*''賦給a[i],p指向數(shù)組末尾,循環(huán)結(jié)束,此時數(shù)組中a[0]、

a⑵、a[4]、a[6]和a[用的值都為“*”.所以最后調(diào)用puts。函數(shù)輸出的a的值為

*2*4*6*8*

63、以下程序運行后的輸出結(jié)果是[]omain(){inti,n[]=(0,0,0,0,0);

for(i=l;i<=4;i++){n[i]=n[i-l]*2+l;printfi["%d",n[i]);)}

標(biāo)準(zhǔn)答案:13715

知識點解析:本題中,定義了個整型數(shù)組n并初始化,在for循環(huán)語句中,再對數(shù)

組中各元素重新賦值。循環(huán)執(zhí)行第一次時,n[l]=n[0]*2+l=0+l=l,primf函數(shù)輸出

1,然后i的值加1,比較iV=4成立,繼續(xù)執(zhí)行循環(huán)體語句,相應(yīng)輸出3、7、

15,直至i<=4不成立,退出循環(huán)。所以最后輸出為1、3、7、150

64、以下程序運行后的輸出結(jié)果是[1ostructNODE{intnum;stmetNODE

*next;};main(){structNODEs[3]=({I,{2,{3,'\0'}),*p,*q,

*r;intsum=0;s[0].next=s+l;s[l].next=s+2;s[2].next=s;p=sq=p->

next;r=q->next;sum+=q->next->num;sum+=r->next->next->num;

printf("%d\n",sum);)

標(biāo)準(zhǔn)答案:5

知識點解析:主函數(shù)首先聲明了一個結(jié)點數(shù)組s[3],并分別初始化其成員num為

1、2、3,而成員next全部被初始化為、(T也就是0。下面又用三條語句

s[0].ncxt=s+l;s[l].ncxt=s+2;s[2].ncxt=s;分別將三個結(jié)點指向其后面一個結(jié)點,

而最后一個結(jié)點指向第1個結(jié)點,構(gòu)造出一條單向循環(huán)鏈表。接下來用結(jié)點指針

p=s即讓其指向s[0],然后讓q=p->next,即指向了s[l],r=q->next即讓r指向

s[2],然后讓一個累計變量sum累加q->next->num和r->ncxt->next->nm,因

為q指向s[l]所以它的next指針指向的是s[2],故第1次累加的是s[2].num=3,而

r指向的是s⑵所以它的next是s[0],s[0]的next指向s[l],故第2次累加的是

s[l].num=2o所以程序最終輸出結(jié)果為5。

65、下面程序的運行結(jié)果是[]。intf(inta[],intn){if(n>l)retuma[0]+f(&a[l],n-

1);elsereturna[0];)main(){intaa[3]=[1?2,3},s;s=f(&aa[0]?3);

printf("%d\n",s);)

標(biāo)準(zhǔn)答案:6

知識點解析?:經(jīng)過分析將遞歸函數(shù)寫成其數(shù)學(xué)表達(dá)式如下:

f(&a,n)=a⑼+f(&a[l],n-I)n>l

f(&a.n)=a[0]。本題中定義了一個長度為3的數(shù)組aa并初始化。接著

調(diào)用遞歸函數(shù)f,由上面的數(shù)學(xué)表達(dá)式以計算其返回值s=l+2+3=6,所以空格處應(yīng)

該填6。

66、以下程序中函數(shù)f的功能是在數(shù)組x的n個數(shù)(假定n個數(shù)互不相同)小找出最

大最小數(shù),將其中最小的數(shù)與第一個數(shù)對換,把最大的數(shù)與最后一個數(shù)對換。請?zhí)?/p>

空。#include<stdio.h>voidf(intx[],intn){intp0?pl,i,j?t,m;i=j=x|O];

pO=pl=O;for(m=O:m<n;m++){if(x[m]>i){i=x[m];p0=m;)elseif(x[m]<j)

{j=x[m]:pi=m:))t=x[pO]:x[pO]=x[n-l];x[n-l]=t;t=x[pl]:x[pl]=[1;[1=t}

main())inta|10],u;for(u=0;u<10;u++)scamp(n%d",&a|u]);f(a,10);

for(u=0;u<10;u++)printf("%d",a[u]);ptintf("\nH);}

標(biāo)準(zhǔn)答案:x[O]x[O]

知識點解析:根據(jù)題意,f()函數(shù)要“將其中最小的數(shù)與第一個數(shù)對換,把最大的數(shù)

與最后一個數(shù)對換“,而填空處的上一行語句正是使用交換算法,將下標(biāo)為pO的元

素與數(shù)組x的最后一個元素(n個元素的數(shù)組,其最后一個元素的下標(biāo)為n-1)交換。

所以不難得知,填空所在行的語句是要將下標(biāo)為pl的元素與數(shù)組x的第1個元素

交換。故兩個空都應(yīng)該填x[0]。

67>以下程序中,函數(shù)SumColumMin的功能足:求出M行N列二維數(shù)組每列元

素中的最小值,并計算它們的和值。和值通過形參傳回主函數(shù)輸出。請?zhí)羁铡?/p>

#defineM2#defineN4voidSumColumMm(inta[M][N],int*sum){inti,j,k,s=O;

for(i=0;i<N;i++){k=0;for(j=l;j<M;j++)if(a[k][i]>a[j][i])k=j;s+=[];)

[]=s;}main(){intx[M][n])={3;,5,L4,1,8,3},s;

SumC01umMm([]);ptintf("%d\nu,s);)

標(biāo)準(zhǔn)答案:a[k][i]*sumx,&s

知識點解析:本題定義了一個函數(shù)SumColumMin(),該函數(shù)有兩個參數(shù),第一個

參數(shù)為數(shù)組名,第二個參數(shù)為一個指針,用來訪問存放數(shù)組中每列元素中的最小值

的存儲空間的變量。所以在主函數(shù)中調(diào)用SumColunMin。函數(shù),應(yīng)該將數(shù)組x和

sam作為實參傳給SumColumMin。中的形參,故第20個空格處應(yīng)該填x,&s。在

SumColumMin。函數(shù)中用了兩重循環(huán),用N記錄數(shù)組的列,M記錄數(shù)組的行。內(nèi)

循環(huán)共循環(huán)了M次,每循環(huán)一次將a[k][i]比較(當(dāng)k=0時,a[k皿第一行第一

列的值,然后將該值依次和第一列中的每個值比較,讓a[k][i]表示較小的值,那么

比較到最后一個元素后a[k][i]就是改列中最小元素的值),讓k記錄較小值元素的

行下標(biāo),這樣通過M次循環(huán)得到每列中的最小元素,然后退出內(nèi)循環(huán),繼續(xù)執(zhí)行

該次外循環(huán)里的其他語句,即將剛求得第i列的最小值a[k][i]累加到s中,故第一

個空格處應(yīng)該填最后外循環(huán)共循環(huán)N次,將每列得最小值累加到s中,退

出循環(huán),然后讓指針sum所指向得存儲空間得值為s故第二個空格處應(yīng)該填

*sum。

因家二級(C語言)筆試模擬試卷第2

一、公共基礎(chǔ)選擇題(本題共70題,每題7.0分,共

70分。)

1、算法的時間復(fù)雜度是指

A、執(zhí)行算法程序所需要的時間

B、算法程序的長度

C、算法執(zhí)行過程中所需要的基本運算次數(shù)

D、算法程序中的指令條數(shù)

標(biāo)準(zhǔn)答案:C

知識點解析:算法的復(fù)雜度主要包括算法的時間復(fù)雜度和空間復(fù)雜度。所謂算法

的時間復(fù)雜度是指執(zhí)行算法所需要的計算工作量,即算法執(zhí)行過程中所需要的基本

運算的次數(shù);算法的空間復(fù)雜度一般是指執(zhí)行這個算法所需要的內(nèi)存空間。

2、常采用的兩種存儲結(jié)構(gòu)是()。

A、順序存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)構(gòu)

B、散列方法和索引方式

C、鏈表存儲結(jié)構(gòu)和數(shù)組

D、線性存儲結(jié)構(gòu)和非線性存儲結(jié)構(gòu)

標(biāo)準(zhǔn)答案:A

知識點解析:線性表的存儲通常要用兩種存儲結(jié)構(gòu):順序存儲結(jié)構(gòu)和鏈?zhǔn)酱鎯Y(jié)

構(gòu)。

3、下列敘述中,不屬于軟件需求規(guī)格說明書的作用的是

A、便于用戶、開發(fā)人員進(jìn)行理解和交流

B、反映出用戶問題的結(jié)構(gòu),可以作為軟件開發(fā)工作的基礎(chǔ)和依據(jù)

C、作為確認(rèn)測試和驗收的依據(jù)

D、便于開發(fā)人員進(jìn)行需求分析

標(biāo)準(zhǔn)答案:D

知識點解析:軟件需求規(guī)格說明書(SRS,SoftwareRequirementSpecification)是需求

分析階段的最后成果,是軟件開發(fā)中的重要文檔之一。它具有以下兒個方面的作

用:①便于用戶、開發(fā)人員進(jìn)行理解和交流;②反熾出用戶問題的結(jié)構(gòu),可以作為軟

件開發(fā)工作的基礎(chǔ)和依據(jù);③作為確認(rèn)測試和驗收的依據(jù)。

4、線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)是一種的存儲結(jié)構(gòu)。

A、隨機存儲

B、順序存儲

C、索引結(jié)構(gòu)

D、散列結(jié)構(gòu)

標(biāo)準(zhǔn)答案:2

知識點解析:線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu)中的每一個存儲結(jié)點不僅含有一個數(shù)據(jù)元素,

還包括指針,每一個指針指向一個與本結(jié)點有邏輯關(guān)系的結(jié)點。此類存儲方式屬于

順序存儲。

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

A、黑箱(盒)測試方法完全不考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征

B、黑箱(盒)測試方法主要考慮程序的內(nèi)部結(jié)構(gòu)和內(nèi)部特征

C、白箱(盒)測試不考慮程序內(nèi)部的邏輯結(jié)構(gòu)

D、上述3種說法都不對

標(biāo)準(zhǔn)答案:1

知識點解析:黑箱測試方法完全不

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論