國家二級C語言機試(選擇題)模擬試卷27_第1頁
國家二級C語言機試(選擇題)模擬試卷27_第2頁
國家二級C語言機試(選擇題)模擬試卷27_第3頁
國家二級C語言機試(選擇題)模擬試卷27_第4頁
國家二級C語言機試(選擇題)模擬試卷27_第5頁
已閱讀5頁,還剩61頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

國家二級C語言機試(選擇題)模擬試

卷第1套

一、選擇題(本題共25題,每題1.0分,共25分。)

1、以下敘述中正確的是

A、C程序中的每一行只能寫一條語句

B、簡單C語句必須以分號結(jié)束

C、C語言程序中的注釋必須與語句寫在同一行

D、C語句必須在一行內(nèi)寫完

標準答案:B

知識點解析:C語言的書寫格式自由,一行可寫多條語句,一條語句也可寫在不同

行上。C語言注釋是比較自由的,可以寫在一行或者多行。C語言規(guī)定每條語句和

數(shù)據(jù)定義的最后必須有一個分號,分號是C語句的必要組成部分。

2、在長度為n的順序表中查找一個元素,假設(shè)需要查找的元素有一半的機會在表

中,并且如果元素在表中,則出現(xiàn)在表中每個位置上的可能性是相同的。則在平均

情況下需要比較的次數(shù)大約為()。

A、n

B、3n/4

C、n/2

D、n/4

標準答案:B

知識點解析:在順序表中查找,最好情況下第一個元素就是要查找的元素,則比較

次數(shù)為1;在最壞情況下,最后一個元素才是要找的元素,則比較次數(shù)為n。這是

找到元素的情況。如果沒有找到元素,則要比較n次。因此,平均需要比較:找到

元素的情況xT+未找到元素的情況x7=(l+2+…+n)/nxT+nx7=一1,大約為3n

/4o

3、下列敘述中錯誤的是

A、在雙向鏈表中,可以從任何一個結(jié)點開始直接遍歷到所有結(jié)點

R、在循環(huán)鏈表中.可以從任何一個結(jié)點開始直接遍歷到所有結(jié)點

C、在線性單鏈表中,可以從任何一個結(jié)點開始直接遍歷到所有結(jié)點

D、在二叉鏈表中,可以從根結(jié)點開始遍歷到所有結(jié)點

標準答案:C

知識點解析:線性隊列是一種線性單鏈表,對線性隊列的遍歷只能從隊列的頭開

始,從中間的結(jié)點開始不能夠遍歷到所有的結(jié)點。選項C的描述是錯誤的。

4、在軟件設(shè)計中,不屬于過程設(shè)計工具的是

A、PDL(過程設(shè)計語言)

B、PAD圖

C、N—S圖

D、DFD圖

標準答案:D

知識點解析:PDL語言[PDLlanguage)一種設(shè)計性語言。它是軟件設(shè)計中廣泛使用

的語言之一;PAD是問題分析圖(ProblemAnalysisDiagr鋤)的英文縮寫,自1974

年由口本的二村良彥等人提出的乂一種主要用于描述軟件詳細設(shè)計的圖形表示工

具;數(shù)據(jù)流圖(DataFlowDiagram):簡稱DFD,是結(jié)構(gòu)化系統(tǒng)分析方法的主要表達

工具及用于表示軟件模型的一種圖示方法;N-S圖也被稱為盒圖或CHAPIN圖。

由一些基本的框組成一個大的框,這種流程圖又稱為N-S結(jié)構(gòu)流程圖(以兩個人

的名字的頭一個字母組成)。N—S圖包括順序、選擇和循環(huán)三種基本結(jié)構(gòu)。常見的

過程設(shè)計工具有:圖形工具:程序流程圖,N—S,PAD,HIPO;表格工具:判定

表:語言工具:PDL(偽碼)。

5、C語言規(guī)定,在一個C程序中,main。函數(shù)的位置()。

A、必須在系統(tǒng)調(diào)用的庫函數(shù)之后

B、必須在程序的開始

C、必須在程序的最后

D、可以在任意位置

標準答案:D

知識點解析:每個C程序有且只有一個主函數(shù)(main),且程序必須從“main。"函數(shù)

開始執(zhí)行,而且“main(廣函數(shù)可以放在程序中的任意位置。

6、設(shè)二義樹的前序序列為ABDEGHCFIJ,中序序列為DBGEHACIFJ。則按層次

輸出(從上到下,同一層從左到右)的序列為

A、ABCDEFGHIJ

B、DGHEBIJFCA

C、JIHGFEDCBA

D、GHIJDEFBCA

標準答案:A

知識點解析:前序遍歷中,第一個字母是根結(jié)點,也就是A是根結(jié)點;在中序遍

歷中,根結(jié)點前面的是左子樹、后面的是右子樹。前序中,B在A的后面,中序

中在左子樹中,可知B為A的左結(jié)點。中序中D在B的前面,前序中在B的后

面,可知D為B的左結(jié)點,GEH為B的右子樹。前序中順序為EGH,由此可知,

E為B的右結(jié)點,G為E的左結(jié)點、H為E的右結(jié)點。右子樹中,前序中C在最

前'因為右子樹根結(jié)點,也就是A的右結(jié)點,根據(jù)前序中的子樹FIJ和中序中的

IFJ子樹可知F為C的右結(jié)點,I為F的左結(jié)點、J為F的右結(jié)點。由此可畫出這個

二叉樹,然后根據(jù)二叉樹

7、公司中有多個部門和多名職員,每個職員只能屬于一個部門,一個部門可以有

多名職員。則實體部門和職員間的聯(lián)系是

A>1:1聯(lián)系

B%m:1聯(lián)系

C、1:m聯(lián)系

D、m:n聯(lián)系

標準答案:C

知識點解析:一個部門可以有多名員工,所以實體部門和職員間的聯(lián)系是1:m聯(lián)

系。

8、以下敘述中正確的是

A、語句inta口={0};是不合法的,遺漏了數(shù)組的大小

B、語句chara[2]={“A“,“B”);是合法的,定義了一個包含兩個字符的數(shù)組

C、語句inta[8]={0};是合法的

D、語句chara[3];a="AB";是合法的,因為數(shù)組有三個字符空間的容量,可以保

存兩個字符

標準答案:C

知識點小析:當(dāng)系統(tǒng)為所定義的數(shù)組在內(nèi)存中開辟一串連續(xù)的存儲單元時,這些存

儲單元中并沒有確定的值,可以在定義語句中為所定義數(shù)組的各個元素賦初值。

數(shù)組初始化賦值是指在數(shù)組定義時給數(shù)組元素賦予初值。初始化賦值的一般形式

為:類型說明符數(shù)組名[常量表達式]二{值,值,…,值};需要注意的是當(dāng)所賦初

值多于所定義數(shù)組的元素個數(shù)時,在編譯時將給出出錯信息,在指定初值時,第一

個初值必定賦給下標為。的元素,然后按這些數(shù)值的排列順序賦初值,只能給元素

逐個賦值,不能給數(shù)組整體賦值。如果給全部元素賦值,則在數(shù)組說明中,可以不

給出數(shù)組元素的個數(shù)C

9、DOS文件系統(tǒng)的組織結(jié)構(gòu)屬于

A、星形結(jié)構(gòu)

B、網(wǎng)形結(jié)構(gòu)

C、環(huán)形結(jié)構(gòu)

D、樹形結(jié)構(gòu)

標準答案:D

知識點解析:DOS中目錄結(jié)構(gòu)是層次的,由根目錄到子目錄形成一個樹型結(jié)構(gòu)。

10、有以下結(jié)構(gòu)體說明、變量定義和賦值語句:structSTD{charname[10];int

age:charsex;|srs],*ps;ps=&g[O];則下列scanf函數(shù)調(diào)用語句有錯誤的是()。

A、scanf("%s",s[0].name);

B、seanfC'%dn,&s[0].age);

C^scanf("%c",&(ps->sex));

D、seanf("%d",ps->age);

標準答案:D

知識點解析:本題考查結(jié)構(gòu)體的相關(guān)知識。題目中需要輸入一個變量,scarff要求

參數(shù)為指針,而D選項中ps->age為一個變量,不是指針,所以錯誤。

11、設(shè)有定義charstr[]="HeHo";則語句printf("%d%d",sizeof(str),strlen(stri);

的輸出結(jié)果是

A、66

B、65

C、55

D、56

標準答案:B

知識點解析:sizeof主要用于測試變量所占的實際內(nèi)存,而strlcn函數(shù)主要測試字

符串中實際字符的個數(shù),字符串”Hello”占有內(nèi)存6個字節(jié),而字符串中共有5個字

符。

12、下列關(guān)系表達式中,結(jié)果為“假”的是

A、(3<4)==1

B、(3+4)>6

C、(3!=4)>2

D、3<=4

標準答案:C

知識點解析:關(guān)系表達式和邏輯表達式的結(jié)果為非零或者0,其中。表示假,而非

零表示真,由于3!=4的結(jié)果為1,而1>2的結(jié)果為假。

13、若有定義:inta,b:通過語句scanf("%d;%d“,&a,&b):能把整數(shù)3賦給

變量a,5賦給變量b的輸入數(shù)據(jù)是

A、3,5

B、35

C、3;5

D、35

標準答案:C

知識點解析:在采用seanf這個函數(shù)輸入數(shù)據(jù)時,要嚴格遵守其輸入的規(guī)則定義。

本題此函數(shù)定義的規(guī)則是,在兩個整數(shù)之間加分號輸入。

14^若有定義語句:inia=3,b=2,c=l;以下選項中錯誤的賦值表達式是()。

A、a=(b=4)=3;

B、a=b=c+1;

C^a=(b=4)+c;

D、a=l+(b=c=4);

標準答案:A

知識點解析:不能將變量或常量賦給一個表達式,所以A選項中(b=4)=3是錯誤的。

15、下列關(guān)于棧的敘述中,正確的是

A、棧底元素一定是最后入棧的元素

B、棧頂元素一定是最先入棧的元素

C、棧操作遵循先進后出的原則

D、以上說法均錯誤

標準答案:C

知識點解析:棧頂元素總是后被插入的元素,從而也是最先被刪除的元素;棧底元

素總是最先被插入的元素,從而也是最后才能被刪除的元素。棧的修改是按后進先

出的原則進行的。因此,棧稱為先進后出表,或“后進先出”表,所以選擇C。

16、有下列程序:structS{intn:inta[20];);voidflint*a,intn){inti;for(i=0;i<

n-1:i++)a[i]+:i;)main(){inti;structSs={10,{2,3,1,6,8,7,5,4,10,

9|);f(s.a,s.n);for(i=0;i<s.n;i++)printfp%d,“,s.a[i]);)程序運行

后的輸出結(jié)果是

A、3,4,2,7,9,8,6,5,11,10,

B、2,3,1,6,8,7,5,4,10,9,

C、2,4,3,9,12,12,11,11,18,9,

D、1,2,3,6,8,7,5,4,10,9

標準答案:C

知識點解析:voidf(int*a,intn)函數(shù)的功能是對數(shù)組叫的每一個元素力口上其下標的

值。所以在main()函數(shù)中f(s.as.n)語句會調(diào)用intn涵數(shù),此時指針a指

向數(shù)組s.a={2,3,I,6,8,7,5,4,10,9),n=IO:然后執(zhí)行for(i=0;i<

n.1;i++)a[i]+=i;語句,也就是從0開始到8對數(shù)組s.a={2,3,1,6,8,7,

5,4,10,9}中的每一個元素加上其下標值。

I7N若有以下程序#includeint*f(int*s,int*t)(int*k;if(*s<*t){k=s;s=t;t=k;}

returns;)main(){inti=3,j=5,*p=&i,*q=&j,*r;r=f(p,q);

printf("%d,%d,%d,%d,%d\n",i,j,*p,*q,*r);)則程序的輸出結(jié)果是

A、3,5,5,3,5

B、3,535,5

C、5,3,5,3,5

D^5,3,3,5,5

標準答案:B

知識點解析:在主函數(shù)中分別給整型變量i、j和指針型變量p、q賦初值,并聲明

指針變量r;調(diào)用f函數(shù),并將實參變量p和q的值傳遞給形參變量s和t,并且f

函數(shù)是指針型函數(shù),即函數(shù)的返回值將是一個地址。在f函數(shù)中,如果條件成立,

則將指針變量s和t互換,并且將指針s的地址返回主函數(shù)。最后輸出

*i?的值,即3,535,5。因此B選項正確。

18、有以下程序voidfun(inln,int*s){intf;if(n=l)*s=n+l;else{fun(n-l,&f);

*s=f;))main(){intx=0:fun(4,&x);printf(n%d\n",x);)程序運行后的輸出

結(jié)果是

A、I

B、3

C、4

D、2

標準答案:D

知識點解析:函數(shù)fun為遞歸調(diào)用函數(shù),如果n的值為1,那么后面形參指向的空

間存放n+1,否則繼續(xù)計算fun(n?l)的值°調(diào)用分析過程:fun(4,&x)-fun(3,

&x)->fun(2,&x)->fun(l,&x)在回歸的過程中,對丁x內(nèi)的數(shù)據(jù)并沒有改動。

19、有下列程序:voidf(intbU){inti;for(i=2;i<6;i++)b[ij本=2;)mam()

{inta[10]={l,2,3,4,5,6,7,8,9,10),i;f(a);for(i=0;i<l0,i+

4-)printf("%d,a[i]);}程序運行后的輸出結(jié)果是

A、1,2,3,4,5,6,7,8,9,10,

B、I,2,3,4,10,12,14,16,9,10,

C、1,2,6,8,10,12,7,8,9,10,

D、1,2,6,8,10,12,14,16,9,10,

標準答案:C

知識點解析:函數(shù)voidf(intb[])的功能是對數(shù)組b口中第2個到第5個元素的值逐

個擴大2倍。所以在main。函數(shù)中,f(8)語句的作用是對數(shù)組a[10]中從a[2]到a[5]

的各個數(shù)字乘以2,因而數(shù)組a[10]的元素就變成了{1,2,6,8,10,12,7,8,

9,10)o

20、有以下結(jié)構(gòu)體說明、變量定義和賦值語句structSTD{charname(J0];intage;

charsex;}s[5],*ps;ps=&s[O];則以下scanf函數(shù)調(diào)用語句有錯誤的是

A、scanf("d",&s[0].age);

B、scanf("%c",&(ps->sex));

C、scanf("%s",s[0].name);

D、scanf("%d”.ps->age):

標準答案:D

知識點解析:程序段定義了結(jié)構(gòu)體變量數(shù)組s[5]和指針變量ps,然后ps指向數(shù)組

s[5]中的第一個元素,因而ps->age用s[0].age。因為在輸入scanf()函數(shù)中,第2

個參數(shù)應(yīng)該表示為地址變量,而選項A)表示的值,而不是一個地址值。

21、一個棧的初始狀態(tài)為空。現(xiàn)將元素1,23A,B,C依次入棧,然后再依次出棧,

則元素出棧的順序是

A、1,2,3,A,B,C

B、C,B,A』,2,3

C、C,B,A,3,2,1

D、1,2,3,C,B,A

標準答案:c

知識點解析:棧的修改是按后進先出的原則進行的,所以順序應(yīng)與入棧順序相反,

故選C。

22、有以卜.程序#inc1udeVstdio.h>main()voidfun(int*a,int*b){intx=3,y=5,

*p=&x,*q=&y;{int*c;fun(p,q);printf("%d,%d,",*p,*q);c=a;a=b;

b=c;}fun(&x,&y);printf("%d,%d\n",*p,*q);}程序運行后的輸出結(jié)果是

A、3,5,5,3

B、3,5,3,5

C^5,3,3,5

D、5,3,5,3

標準答案:B

知識點解析:本題考查函數(shù)的調(diào)用與指針。p和q分別為指向x和y的指針,函數(shù)

fun()的兩個形參均為指針型,主要功能為交換兩個指針的指向,當(dāng)調(diào)用結(jié)束以后,

該操作不能返回主函數(shù)。而主函數(shù)中,fun(p,q)、fun(&x,&y)的實參均為x與y

的地址,因此,兩者結(jié)果相同,并且兩者指針指向的值不能變化。

23、有以卜程序structS{inta,b;}data[2]={10,100,20,200);main(){structS

p=data[l];printf("%d\n,',++(p.a));}程序運行后的輸出結(jié)果是

A、11

B、20

C、21

D、10

標準答案:C

知識點解析?:在題目中定義了結(jié)構(gòu)體S類型的數(shù)組變量data,并對其賦初值。在程

序中定義了指向結(jié)構(gòu)體S類型的變量p,并把數(shù)組data的第二個元素da⑷1]的值賦

給它,所以此時成員變量p.a的值等于20,在輸出時分別加1,所以輸入結(jié)果為選

項A。

24、以下敘述中錯誤的是

A、用typedef可以說明一種新的類型名

R、typedef的作用是用一個新的標識符來代表已存在的類型名

C、可以用typedef說明的新類型名來定義變量

D、typedef說明的新類型名必須使用大寫字母,否則會出編譯錯誤

標準答案:D

知識點解析:本題考查typedef的使用方法,typed”對已存在的類型使用一個新的

名字,新類型可以使用小寫,所以D選項錯誤。

25、以下敘述中正確的是

A、在C程序中的八進制和十六進制,可以是浮點數(shù)

B、整型變量可以分為int型、short型、long型和unsigned型四種

C、八進制數(shù)的開頭要使用英文字母。,否則不能與十進制區(qū)分開

D、英文大寫字母X和英文小寫字母x都可以作為二進制數(shù)字的開頭字符

標準答案:B

知識點解析:C程序中的實型常量只有十進制一種數(shù)制,所以A錯誤。八進制數(shù)以

0打頭,所以C錯誤。C語言中整數(shù)只有十進制、八進制、十六進制三種沒有二進制

數(shù)制,所以D錯誤。

國家二級C語言機試(選擇題)模擬試

卷第2套

一、選擇題(本題共25題,每題1.0分,共25分。)

1、以下敘述中正確的是

A、在C語言程序設(shè)計中,所有函數(shù)必須保存在一個源文件中‘

B、在算法設(shè)計時,可以把復(fù)雜任務(wù)分解成一些簡單的子任務(wù)

C、只要包含了三種基本結(jié)構(gòu)的算法就是結(jié)構(gòu)化程序

D、結(jié)構(gòu)化程序必須包含所有的三種基本結(jié)構(gòu),缺一不可

標準答案:B

知識點解析:模塊化設(shè)計思想,就是把復(fù)雜的任務(wù)分成簡單的子任務(wù),心函數(shù)或者

過程描述子任務(wù),C語言中一個程序可以包括多個源文件,每個源文件可以有符干

個函數(shù),結(jié)構(gòu)化的程序由順序結(jié)構(gòu)、循環(huán)結(jié)構(gòu)和選擇結(jié)構(gòu)三種基本結(jié)構(gòu)組成,不一

定全要包括這三種結(jié)構(gòu),而算法不等于程序。

2、以下關(guān)于結(jié)構(gòu)化程序設(shè)計的敘述中正確的是

A、結(jié)構(gòu)化程序使用got。語句會很便捷

B、一個結(jié)構(gòu)化程序必須同時由順序、分支、循環(huán)三種結(jié)構(gòu)組成

C、由三種基本結(jié)構(gòu)構(gòu)成的程序只能解決小規(guī)模的問題

D、在C語言中,程序的模塊化是利用函數(shù)實現(xiàn)的

標準答案:D

知識點解析:C語言是結(jié)構(gòu)化程序設(shè)計語言,順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)是結(jié)

構(gòu)化程序設(shè)計的二種基本結(jié)構(gòu),研究證明任何程序都可以由這三種基本結(jié)構(gòu)組成。

但是程序可以包含一種或者兒種結(jié)構(gòu),不是必須包含全部三種結(jié)構(gòu)。自從提倡結(jié)構(gòu)

化設(shè)計以來,gol。就成了有爭議的語句。首先,由于g。。語句可以靈活跳轉(zhuǎn),如

果不加限制,它的確會破壞結(jié)構(gòu)化設(shè)計風(fēng)格。其次,got。語句經(jīng)常帶來錯誤或隱

患。它可能跳過了某些對象的構(gòu)造、變量的初始化、重要的計算等語句。Goto語

句的使用會使程序容易發(fā)生錯誤并且也不易閱讀,所以應(yīng)避免使用。由三種基本結(jié)

構(gòu)構(gòu)成的程序幾乎能解決大部分問題。

3、下列敘述中正確的是

A、)順序存儲結(jié)構(gòu)的存儲一定是連續(xù)的,鏈式存儲結(jié)構(gòu)的存儲空間不一定是連續(xù)

B、順序存儲結(jié)構(gòu)只針對線性結(jié)構(gòu),鏈式存儲結(jié)構(gòu)只針對非線性結(jié)構(gòu)

C、順序存儲結(jié)構(gòu)能存儲有序表,鏈式存儲結(jié)構(gòu)不能存儲有序表

D、鏈式存儲結(jié)構(gòu)比順序存儲結(jié)構(gòu)節(jié)省存儲空間

標準答案:A

知識點解析:順序存儲方式主要用于線性的數(shù)據(jù)結(jié)構(gòu),它把邏輯上相鄰的數(shù)據(jù)元素

存儲在物理上相鄰的存儲單元里,結(jié)點之間的關(guān)系由存儲單元的鄰接關(guān)系來體現(xiàn)。

而鏈式存儲結(jié)構(gòu)的存儲空間不一定是連續(xù)的。

4、對下列二叉樹()。進行前序遍歷的結(jié)果是()。

A、DYBEAFCZX

B、YDEBFZXCA

C、ABDYECFXZ

D、ABCDEFXYZ

標準答案:C

知識點解析:二叉樹前序遍歷的簡單描述:若二叉樹為空,則結(jié)束返回;否則,

①訪問根節(jié)點;②前序遍歷左子樹;③前序遍歷石子樹。可見,前序遍歷二叉樹

的過程是一個遞歸的過程。根據(jù)題目中給出的二叉樹的結(jié)構(gòu)可知前序遍歷的結(jié)果是

ABDYECFXZo

5、有以下程序main。{charcl='A',c2=*Y*;prin【f("%d,%d\n",cl,c2);)

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

A、輸出格式不合法,輸出出錯信息

B、65,90

C、65,89

D、A,Y

標準答案:C

知識點解析:C語言允許對整型變量賦以字符值,也允許對字符變量賦以整型值。

在輸出時,允許把字符變量按整型量輸出,也允許把整型量按字符量輸出。

6、若變量已正確定義,以下選項中非法的表達式是

A、a!=4l|b'

B、V%4

C>a,=l/2*(x=y=20,x*3)

D、'A'+32

標準答案:C

知識點解析:賦值表達式左邊應(yīng)為變量,選項C中左邊為字符常最,因此非法,

其余表達式均為合法的表達式。

7、C語言中允許用外部說明來指定變量、函數(shù)和其他標識符的特征,這里所說的

外部指的是()。

A、冠以關(guān)鍵字extern

B、位置在函數(shù)體外部

C、作用范圍是全程的

D、位置在函數(shù)的外部

標準答案:D

知識點解析:C語言中允許用位置在函數(shù)外部的說明來指定變量、函數(shù)和其他標識

符的特征。

8、下面不屬于軟件需求規(guī)格說明書內(nèi)容的是

A、軟件的可驗證性

B、軟件的功能需求

C、軟件的性能需求

D、軟件的外部接口

標準答案:A

知識點解析:軟件需求說明書的編制是為了使用戶和軟件開發(fā)者雙方對該軟件的初

始規(guī)定有一個共同的理解,使之成為整個開發(fā)工作的基礎(chǔ)。包含硬件、功能、性

能、輸入輸出、接口需求、警示信息、保密安全、數(shù)據(jù)與數(shù)據(jù)庫、文檔和法規(guī)的要

求。

9、關(guān)于算法,以下敘述中錯誤的是

A、同一個算法對于相同的輸入必能得出相同的結(jié)果

B、一個算法對于某個輸入的循環(huán)次數(shù)是可以事先估計出來的

C、某個算法可能會沒有輸入

D、任何算法都能轉(zhuǎn)換成計算機高級語言的程序,并在有限時間內(nèi)運行完畢

標準答案:D

知識點解析:算法和程序不同,算法滿足以下特性:算法有5個特性,即有窮性、

確定性、可行性、有零個或多個輸入以及有一個或多個輸出。算法的確定性是指算

法中的每一個步驟都必須有明確定義,不允許有模棱兩可的解釋,也不允許有多義

性,因此對于相同的輸入必有相同的輸出,同時可以事先估計算法的時間復(fù)雜度,

對于有循環(huán)的算法,以循環(huán)體內(nèi)的循環(huán)次數(shù)來估測時間復(fù)雜度。

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

A、conlinue語句的作用是使程序的執(zhí)行流程跳出包含它的所有循環(huán)

B、break語句只能用在循環(huán)體內(nèi)和switch語句體內(nèi)

C^在循環(huán)體內(nèi)使用break語句和continue語句的作用相同

D、break語句只能用于switch語句體中

標準答案:B

知識點解析:continue語句的作用是跳過循環(huán)體中剩余的語句而進行下一次循環(huán),

所以A選項錯誤。break語句的作用是終止正在執(zhí)行的switch流程,跳出switch結(jié)

構(gòu)或者強制終止當(dāng)前循環(huán),從當(dāng)前執(zhí)行的循環(huán)中跳出,所以C、D選項錯誤。

11、有三個關(guān)系R、S和T如下:

關(guān)系R和S通過運算得到關(guān)系T,

A、并

B、自然連接

C、笛卡爾積

D、交

標準答案:D

知識點解析:關(guān)系R與S經(jīng)交運算后所得到的關(guān)系是由那些既在R內(nèi)又在S內(nèi)的

有序組組成的,記為Rns。

12^有以下程序:#include<stdio.h>voidf(intb|]){inti;for(i=2;i<6;i++)

b[i]*=2;}main(){inta[10]={l,2,3,4,5,6,7,8,9,10),i;f(a);

for(i=0;i<10;i++)pfinff("%d,",a[i]);}程序的運行結(jié)果是()°

A、1,2,3,4,5,6,7,8,9,10,

B、1,2,6,8,10,12,7,8,9,10,

C、1,2,3,4,10,12,14,16,9,10,

D、1,2,6,8,10,12,14,16,9,10,

標準答案:B

知識點解析:數(shù)組名是常量,表示的是數(shù)組首元素的地址。當(dāng)執(zhí)行f(a)的時候,由

于傳遞的是首地址,相當(dāng)于直接對數(shù)組a進行操作,所以從數(shù)組a的第3個元素

a[2]到元素a[5],每個元素值擴大兩倍,因此B選項正確。

13、有以下程序#includcmain(){chara,b,c,d;scanf("%c%c",&a,&b);c=getchar();

d=getchar();printf("%c%c%c%c\nn,a,b,c,d);)當(dāng)執(zhí)行程序時,按卜列方式輸入數(shù)據(jù)

(從第1列開始,代表回車,注意:回車也是一個字符)1234則輸出結(jié)果是

()O

A、123

B、12

C、1234

D、1234

標準答案:A

知識點解析:考查字符數(shù)據(jù)的輸入輸出。gelchar()函數(shù)只能接受單個字符,數(shù)字和

回車也會按照字符處理,輸入多于一個字符時,只接受第一個字符。本程序輸入結(jié)

束之后,a=T,b=2,c=<回車>,d=3。則輸出的結(jié)果為A)。

14>有以卜程序^includevoidfun(char*a,char*b){while(*a=,*,)a++;

while(*b=*a){b++;a++:))main(){char*s="*****a*b*****”,t[80];fun(s,t);

puts(t);)程序的運行垢果是

A、a*b

B、*****a*b

C、a*b****

D、ab

標準答案:C

知識點解析:主函數(shù)main()定義了指向字符串的指針和一個字符數(shù)組,接著調(diào)

fun(s,I)函數(shù),進行實參向形參傳遞,函數(shù)fun()第一個while語句判斷*a中的值為

“”時繼續(xù)掃描,當(dāng)遇到不是“”時結(jié)束,接著第二個while循環(huán)語句,將*&中從“a”

開始的后續(xù)所有字符都賦予*b,也就是t[80]中的內(nèi)容為"a*b****”。

15、有以下程序#include<stdio.h>typedefstruct{intb,p;)A;voidf(Ac)/*注

意:C是結(jié)構(gòu)變量名*/{intj;c.b+=hc.p+=2;|main(){i;Aa={L2):f(a);

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

A、274

B、1,2

C、I,4

D、2,3

標準答案:B

知識點解析:在C語言中,數(shù)據(jù)只能從文參單向傳遞給形參,稱為“按值“傳遞。

也就是說,當(dāng)簡單變量作為實參時,用戶不可能在函數(shù)中改變對應(yīng)實參的值。所以

本題中在main()函數(shù)f(a)語句中結(jié)構(gòu)體實參a作為值,傳遞給函數(shù)f(AC中的形參

c;這種值傳遞的方式不會對實參a產(chǎn)生任何影響,所以結(jié)構(gòu)體實參a的值不會發(fā)

生變化。

16、若有以下說明和定義uniondt{inta;charb;doublec;)data:以下敘述中錯

誤的是

A、data的每個成員起始地址都相同

B、變量data所占內(nèi)存字節(jié)數(shù)與成員c所占字節(jié)數(shù)相等

C、程序段:data.a=5;printfC'%f\n",data.c);輸出結(jié)果為5.000000

D、data可以作為函數(shù)的實參

標準答案:C

知識點解析:本題主要考查聯(lián)合的定義和使用。選項A)聯(lián)合中每個成員起始地址

都是一樣的,正確;選項B)聯(lián)合的長度等于長度最長成員的長度,在dala中,成

員c是double類型,長度為8個字節(jié)最長,因此data所占用字節(jié)數(shù)和成員c長度

一致。選項C)整型和double類型的存儲格式不一致,整數(shù)5在內(nèi)存中的存儲格式

和浮點數(shù)5存儲格式不一樣,因此daac輸出不會是5.000000;選項D)聯(lián)合和

結(jié)構(gòu)體都可以作為函數(shù)實參。

17、設(shè)變量已正確定義并賦值,以下正確的表達式是

A、x=y+z+5,++y

B、int(15.8%5)

C^x=y*5=x+z

D、x=25%5.0

標準答案:A

知識點解析:在賦值表達式中,賦值符號'、="的左邊只能為賦值的變量,不能為表

達式,右邊可以為常量或者是表達式,故選項C錯誤;在取余運算中,運算符“%”

兩邊都必須是整型數(shù)據(jù),所以選項B、D錯誤,選項A是C語言中的逗號表達

式。

18、有以F#include#defineN4voidfun(inta(][N],intb[]){inti;for(i=0;i

A、-3,-1,1,3,

B、-12,-3,0A

C、0,1,2,3,

D、-3,-3,-3,-3,

標準答案:A

知識點解析:函數(shù)fun()的功能是計算b[i]:b[0]=a[0][0]-a[0][3]=-3,b[l]=a[l][l]-

a[l][2]=-l,b[2]=a[2][2]-a[2][l]=l,b[3]=a[3][3]-a[3][O]=3,所以計算得到的y值為

選項A)o

19、有以下程序段charname[20];intnum;scanf(nname=%snum=%dM,name,&num);

當(dāng)執(zhí)行上述程序段,并從鍵盤輸入:name=Lilinum=1001后,name的值為

A、name=Lili

B、Lilinum=

C、nanie=Lilinum=1001

D、Lili

標準答案:D

知識點解析:在題目中以字符串的形式給字符數(shù)組賦值,所以字符數(shù)組name的值

為Lili。

20、有以下程序#includeintf(intn){intt=0,a=5;if(n/2){inta=6;t+=a++;}e:se

{inta=7;t+=a++;}returnt+a++;)main(){ints=0,i=0;for(;i<2;i++)s+=f(i);

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

A、24

B、28

C、32

D、36

標準答案:A

知識點解析:一個源文件中如果外部變量和局部變量同名,則在該局部變量的作用

域內(nèi),該外部變量會被“屏蔽",main。函數(shù)中調(diào)用兩次f()函數(shù),兩次調(diào)用均進入

else選擇支句,t=7,返回7+5=12,所以s=O+f(O)+f(1)=24,答案選A。

21、有下列程序:voidf(intb|]){intI:for(i=2;i<6;i++)b|i]=2;}main(){int

a[10]={l,2,3,4,5,6,7,8,9,10),i;f(a);for(i=0;i<10,

i++)printf("%d,“,a[i]);}程序運行后的輸出結(jié)果是

A、1,2,3,4,5,6,7,8,9,10,

B、1,2,3,4,10,12,14,16,9,10,

C、1,2,6,8,10,12,7,8,9,10,

D、1,2,6,8,10,12,14,16,9,10,

標準答案:C

知識點解析:函數(shù)voidf(intb[])的功能是對數(shù)組b口中第2個到第5個元素的值逐

個擴大2倍。所以在main。函數(shù)中,f(a)語句的作用是對數(shù)組a[10]中從a⑵到。5]

的各個數(shù)字乘以2,因而數(shù)組a[10]的元素就變成了{1,2,6,8,10,12,7,8,

9,I0)o

22、以下敘述中正確的是

A、當(dāng)break出現(xiàn)在循環(huán)體中的switch語句體內(nèi)時,其作用是跳出該switch語句

體,并中止循環(huán)體的執(zhí)行

B、只能在循環(huán)體內(nèi)和switch語句體內(nèi)使用break語句

C、continue語句的作用是:在執(zhí)行完本次循環(huán)體中剩余語句后,中止循環(huán)

D、在while語句和do-while語句中無法使用continue語句

標準答案:B

知識點解析:break語句可以使程序流程跳出switch語句體,也可用break語句在

循環(huán)結(jié)構(gòu)中終止循環(huán)體,從而提前結(jié)束循環(huán),而當(dāng)break出現(xiàn)在循環(huán)體中的switch

語句體內(nèi)時,其作用只是跳出該switch語句體,并不能中止循環(huán)體的執(zhí)行。若想

強行終止循環(huán)體的執(zhí)行,可以在循環(huán)體中.但并不在*witch語句中設(shè)置break語

句,滿足某種條件則跳出循環(huán)體。continue語句的作用是結(jié)束本次循環(huán),在while

和do-while循環(huán)中,cominue語句使得流程直接跳到循環(huán)控制條件的測試部分,然

后決定循環(huán)是否繼續(xù)進行。

23、若有以下程序typedefstructstu{charname|J0|,gender;intscore;}STU;void

f(char*p){sgcpy(p,"Qian");}main(){STUa={,,Zhao",290),b;b=a;

f(b.name);b.gender=T;b.score=350;printf("%s,%c,%d,",a.name,

a.gender,a.score);printf("%s,%c,%d\n",b.name,b.gender,b.sc

A、Zhao,m,290,Zhao,m,290

Qian,f,350,Qian,f,350

C、Zhao,m,290,Qian,f,350

D、Zhao,m,290,Zhao,f,350

標準答案:C

知識點解析:主函數(shù)中結(jié)構(gòu)體變量定義同時賦初值。執(zhí)行b=a;語句后,b的數(shù)據(jù)

和a的數(shù)據(jù)相同,調(diào)用函數(shù)f(b.name),形參指針p接收實參b.name的地址,此

時p和b.name指向同一個存儲空間,流程轉(zhuǎn)到f執(zhí)行,p指向的存儲空間存放字

符串“Qian",流程結(jié)束返回主函數(shù)。主函數(shù)中變量b的其他成員存放數(shù)據(jù)。因此a

的數(shù)據(jù){“Zhao",'m',290},b的數(shù)據(jù)為{“Qian",’3350}。注意本題結(jié)構(gòu)體STU

類型變量a和b中的name成員為數(shù)組,不是指針,它具有自己的存儲空間。

24、若實體A和B是一對多的聯(lián)系,實體B和C是一對一的聯(lián)系,則實體A和C

的聯(lián)系是

A、一對一

B、——對多

C、多對一

D、多對多

標準答案:B

知識點解析:A和B為一對多的聯(lián)系,則對于A中的每一個實體,B中有多個實

體與之聯(lián)系,而B與C為一對一聯(lián)系,則對于B中的每一個實體,C中之多有一

個實體與之聯(lián)系,則可推出對于A中的每一個實體,C中有多個實體與聯(lián)系,所

以為一對多聯(lián)系。

25、有以卜程序#includeintfun(inta,intB){retuma+b;}main(){intx=6,y=7,z=8,r;

r=fun(fun(x,y),z-);printf("%d\n",r);}程序運行后的輸出結(jié)果是

A、21

B、15

C、20

D、31

標準答案:A

知識點解析:函數(shù)fun的功能是返回兩個形參的和。調(diào)用函數(shù)fun(x,y)時,將變量

x=6和y=7的值分別傳送變量a和b,并且通過語句returna+h:將13返|口|給主函

數(shù)。繼續(xù)調(diào)用函數(shù)fun(13,z--),這里z--指將z的值參與運算后,再將z的值減1操

作;將13和8分別傳送變量a和b,且通過語句relurna+b:將21返回給主函數(shù)。

因此A選項正確。

國家二級C語言機試(選擇題)模擬試

卷第3套

一、選擇題(本題共25題,每題1.0分,共25分。)

1、設(shè)一棵樹的度為3,其中沒有度為2的結(jié)點,且葉子結(jié)點數(shù)為6。該樹中度為3

的結(jié)點數(shù)為

A、1

B、2

C、3

D、不可能有這樣的樹

標準答案:D

知識點解析:樹的度是指一棵樹中,最大的結(jié)點的度稱為樹的度。木題中樹的度為

3,也就是坡少有一個度為3的結(jié)點。要求沒有度為2的結(jié)點,且葉子結(jié)點為6,

如果要有度為3的結(jié)點,那么最多只有5個葉子結(jié)點,而畫不出6個葉子結(jié)點。因

此這樣的樹是沒有的。

2、以下不能輸出字符A的語句是(注:字符A的ASCII碼值為65,字符a的

ASCH碼值為97)

A、pnntf("%c\n",,a,-32);

B、printf(%d\n",

C、printfC%c\n",65);

D、printf("%c\n",'B-l);

標準答案:B

知識點解析:在選項B的輸出函數(shù)中,大寫字符以整型數(shù)據(jù)的形式輸出。

3、Wchara[4]="xyM;char*p;執(zhí)行了語句p=a之后,*(p+2)的值是()。

A、'B'

B、、(r

c^不確定

D、字符'B,的地址

標準答案:B

知識點解析:在C語言中定義數(shù)組指定的是元素的個數(shù),因此a[4]定義了一個含4

個元素的數(shù)組。對于字符數(shù)組,數(shù)組名a實際上是指向該串第一個元素a[0]的指

針,即其值為&a[0],在執(zhí)行了語句p=a之后,p指向a[0],而木(p+2)的含義為:

指針p加上偏移2,從而指向a[2],然后取a[2]的值。由于C語言中任何字符串都

必須以一個‘'0'字符串結(jié)束,因而聲明chara[3]二"AB”;實際上隱含賦值a[2]=,\

0\所以正確答案是B),

4、下列程序段的輸出結(jié)果是()。main。{chars[]="HellowoHd":s[5]=0:

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

A、HelloOworld

B、Helloworld

C、Hello

D、HelloO

標準答案:C

知識點解析:由于s數(shù)組中數(shù)組下標為5的元素賦值為0,0是字符串的結(jié)束標

志,所以在輸出字符串的時,僅輸出數(shù)組下標為0~4的數(shù)組元素。

5、以下正確的字符串常量是

A、'abc'

B、OlympicGames

C、””

D、"\\\"

標準答案:C

知識點解析:字符串常量是由雙引號括起來的一串字符。在C語言中,以一個反

斜線開頭后跟一個特定的字符,用來代表一個特定的ASCH字符。利用兩個,\\\'

表示一個反斜杠,因此選項D的表示無法確認表示幾個反斜杠。

6、設(shè)表的長度為n。下列算法中,最壞情況下比較次數(shù)小于n的是

A、二分查找法

B、堆排序

C、快速排序

D、順序查找法

標準答案:A

知識點解析:二分法查找只適用于順序存儲的有序表。二分查找的基本方法是:將

被查元素x與線性表的中間項進行比較,若中間項的值等于X,則說明查到;若小

于中間項的值則在線性表的前半部分;以相同的方法進行查找;若大于中間項的

值,則在線性表的后半部分以相同的方法進行查找。在最壞情況下,二分查找需要

比較log2n次。所以選項A正確。

7^有如下程序:#include<stdio.h>main(){FILE*fpl;fpl=fopen("fl.txt",

"wH);fprintf(fpl,"abc');fclose(fpl);}若文本文件fl.txt中原有內(nèi)容為

good,則運行以上程序后,文件fl.txt中的內(nèi)容為()。

A、goodabc

B、abed

C、abe

D、abegood

標準答案:C

知識點解析:當(dāng)用“w”方式打開一個已有內(nèi)容的文件時,文件中的已有內(nèi)容將全部

丟失,新寫入的內(nèi)容就是文件的內(nèi)容。

8、在關(guān)系數(shù)據(jù)庫中,用來表示實體間聯(lián)系的是()。

A、屬性

B、二維表

C、網(wǎng)狀結(jié)構(gòu)

D、樹狀結(jié)構(gòu)

標準答案:B

知識點解析:在關(guān)系數(shù)據(jù)庫中,用二維表表示實體間的聯(lián)系。

9、以下程序段中的變量已正確定義:for(i:0;i<4;i}{,i}{)for(k=l;k<3:

u,,

k++);prinff(*);程序的運行結(jié)果是()。

A、**

B、****

c、*

D、********

標準答案:C

知識點解析:由于內(nèi)層循環(huán)tor(k=l;k<3;k++)后面直接跟了空語句;所以在

循環(huán)內(nèi)部什么操作也不做,跳出外層循環(huán)后執(zhí)行打印語句,所以打印了一個“松,

選擇C選項。

10、以下敘述中正確的是

A、continue語句的作用是:使程序的執(zhí)行流程跳出包含它的所有循環(huán)

B、break語句只能用在循環(huán)體內(nèi)和switch語句體內(nèi)

C^在循環(huán)體內(nèi)使用break語句和continue語句的作用相同

D、break語句只能用于switch語句體中

標準答案:B

知識點解析:只能在循環(huán)體內(nèi)和swish語句體內(nèi)使用break語句。continue語句的

作用是結(jié)束本次循環(huán),即跳過本次循環(huán)體中continue語句后面的語句,立刻進行下

一次的循環(huán)條件判斷,可以理解為僅結(jié)束本次循環(huán)。而break語句可以使程序流程

跳出switch語句體,也可用break語句在循環(huán)結(jié)構(gòu)中終止循環(huán)體。

11、下列描述中正確的是

A、為了建立一個關(guān)系,首先要構(gòu)造數(shù)據(jù)的邏輯關(guān)系

B、表示關(guān)系的二維表中各元組的每一個分量還可以分成若干數(shù)據(jù)項

C、一個關(guān)系的屬性名表稱為關(guān)系模式

D、一個關(guān)系可以包括多個二維表

標準答案:C

知識點解析:為了建立一個關(guān)系,首先要指定關(guān)系的屬性,所以選項A是錯誤

的。表示關(guān)系的二維表中各元組的每一個分量必須是不可分的基本數(shù)據(jù)項,所以選

項B是錯誤的。在關(guān)系數(shù)據(jù)庫中,把數(shù)據(jù)表示成二維表,而一個二維表就是一個

關(guān)系,所以選項D是錯誤的。一個關(guān)系的屬性名表稱為該關(guān)系的關(guān)系模式,其記

法為:〈關(guān)系名〉(V屬性名1>,V屬性名2>,…,V屬性名n>)。

12、以下敘述中正確的是

A、語句inta口={0};是不合法的,遺漏「數(shù)組的人小

B、語句chara[2]={”A",”B"};是合法的,定義了一個包含兩個字符的數(shù)組

C、語句inla[8]={0};是合法的

D、語句chara[3];a="AB":是合法的,因為數(shù)組有三個字符空間的容量,可以保

存兩個字符

標準答案:c

知識點3析:當(dāng)系統(tǒng)為所定義的數(shù)組在內(nèi)存中開辟一串連續(xù)的存儲單元時.這些存

儲單元中并沒有確定的值,可以在定義語句中為所定義數(shù)組的各個元素賦初值。

數(shù)組初始化賦值是指在數(shù)組定義時給數(shù)組元素賦予初值。初始化賦值的一般形式

為:類型說明符數(shù)組名[常量表達式]={值,值,…,};。需要注意的是當(dāng)所賦初

值多于所定義數(shù)組的元素個數(shù)時,在編譯時將給出出錯信息,在指定初值時,第一

個初值必定賦給下標為0的元素,然后按這些數(shù)值的排列順序賦初值,只能給元素

逐個賦值,不能給數(shù)組整體賦值。如果給全部元素賦值,則在數(shù)組說明中,可以不

給出數(shù)組元素的個數(shù)。

13、若有以F程序#include〈stdio.h>intk=7,m=5;yoidflint**S){int*t=&k:

s=&t;*s=&m;printf(''%d,%d,%d,k,*t>**s);}main(){inti=3,*p=

&i,**r=&p;fir);printf(''%d,%d,%d\n”,i.*P,**r);}則程序的輸出結(jié)

果是

A、7,5,7,3,3,3,

B、7,5,7,3,5,7,

C^7,5,5,3,3,3,

D、7,7,5,3,3,3

標準答案:C

知識點解析:本題考查二級指針作為函數(shù)的參數(shù),可以通過函數(shù)調(diào)用來改變主函數(shù)

中一級指針的指向。主函數(shù)中指針變量p指向i,r指向p,調(diào)用f函數(shù),形參指針

s指向p,流程轉(zhuǎn)到f函數(shù)執(zhí)行,指針變量指向k,s指向3此時更改了s的指i,

uj,s指向了3更改了s指向的地址空間內(nèi)容為m的地址,同時[也指向變量m,

因此**s的值為m的值,%為m的值,k為7。流程返回到主函數(shù),沒有對主函數(shù)

空間的數(shù)據(jù)和指向作出更改,因此全部為3。

14、有以下程序#include#defineN3voidfun(inta[][N],intb[]){inti,j;for(i=0;i<

N;i++){b[i]=a[i][0];for(j=1;j<N;j++)if(b[i]<a[i][j])b[i]=a[i][j];})main()

{intx|N||N]={1,2,3,4,5,6,7,8,9},y|N|,i;fun(x,y);for(i=0;i<N;

i++)printf(y[i]);printf(,'\nH);)程序運行后的輸出結(jié)果是

A、3,5,7

B、1,3,5,

C、2,4,8,

D、3,6,9,

標準答案:D

知識點解析:函數(shù)fun()的作用是求出二維數(shù)組中每一行中的最大元素,所以

在main。函數(shù)中執(zhí)行完fun(x,y)后,數(shù)組y中的元素為二維數(shù)組x[N][N]每一行的最

大元素。因此D選項正確。

15、以下敘述中錯誤的是

A、結(jié)構(gòu)化程序由順序、分支、循環(huán)三種基本結(jié)構(gòu)組成

B、C語言是一種結(jié)構(gòu)化程序設(shè)計語言

C、使用三種基本結(jié)構(gòu)構(gòu)成的程序只能解決簡單問題

D、結(jié)構(gòu)化程序設(shè)計提倡模塊化的設(shè)計方法

標準答案:C

知識點解析:結(jié)構(gòu)化程序由順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)3種基本結(jié)構(gòu)組成。已

經(jīng)證明,由3種基本結(jié)構(gòu)組成的算法可以解決任何復(fù)雜的問題。由3種基本結(jié)構(gòu)所

構(gòu)成的算法稱為結(jié)構(gòu)化算法;由3種基本結(jié)構(gòu)所構(gòu)成的程序稱為結(jié)構(gòu)化程序。

16、在以卜給出的表達式中,與while(E)中的(E)不等價的表達式是

A、(E>0IIE<0)

B、(!E==0)

C、(E!=0)

D、(E==0)

標準答案:A

知識點解析:在while(E)中p,表達式E可以是C語言中任意合法的條件表達式,

但不能為空,由它來控制循環(huán)體是否執(zhí)行。在選項A中表達式E〉0llE<0是一個邏

輯表達式。

17、由以下while構(gòu)成的循環(huán),循環(huán)體執(zhí)行的次數(shù)是intk=O;while(k=l)k++;

A、一次也不執(zhí)行

B、執(zhí)行一次

C、無限次

D、有語法錯,不能執(zhí)行

標準答案:C

知識點解析:循環(huán)條件表達式為賦值表達式k=-l,因此循環(huán)執(zhí)行無限次。

18、若有以下程序#includevoidf(intx){if(x>=10){printf("%d-u,

x%10);f(x/10);}elseprintf("%d",x);}main(){intz=123456;f(z);}則程序的輸出結(jié)

果是

A、6-5-4-3-2-1-

B、6-5-4-3-2-1

C、1-2-3-4-5-6

D、1-2-3-4-5-6-

標準答案:B

知識點解析:本題重點考察函數(shù)的遞歸調(diào)用,程序首先初始化整型變量z為

123456,調(diào)用函數(shù)f。f函數(shù)中首先通過if條件語句判斷x是否大于等于10,如果

條件成立,求x除以10的余數(shù)并輸出,同時將變量x進行x/10運算,同時調(diào)用函

數(shù)f。如果條件不成立,直接輸出變量X。因此第I次調(diào)用函數(shù),變量x為

123456,條件成立,輸出余數(shù)6;第2次調(diào)用函數(shù),變量x為12345,條件成立,

輸出余數(shù)5;第3次調(diào)用函數(shù),變量x為1234,條件成立,輸出余數(shù)4;第4次調(diào)

用函數(shù),變量x為123,條件成立,輸出余數(shù)3;第5次調(diào)用函數(shù),變量x為12,

條件成立,輸出余數(shù)2;第6次調(diào)用函數(shù),變量x為12345,條件不成立,輸巴

10因此B選項正確。

19、有以下程序voidfunl(char*p)main。{char*q;{chara||={"Program"),*p;

q=p;p=&a[3];funl(p);printf("%s\n'\a);while(*q!='\O')}{(*q)++;

q++;}}程序執(zhí)行后的輸出結(jié)果是

A、Prphsbn

B、Prohsbn

C>Progsbn

D>Program

標準答案:B

知識點解析:在函數(shù)voidfunl(char*p)中,語句(*q)++的功能是q所指的字符加1,

變成其后面的字符:q++就是指針q指向下一個字符的位置。所以在主函數(shù)中,語

句p=&a[3]的作用是使指針p指向字符數(shù)組叫中的第四個字符的位置,即D指向

字符'g':然后調(diào)用函數(shù)funl(p)后,字符g變成什,字符T變成",字符'a,變

成字符,變成因而字符數(shù)組a|]中的內(nèi)容就成“Prohshn”。

20、設(shè)有定義語句int(*f)(int);則以下敘述正確的是

A、f是基類型為int的指針變量

B、f是指向int類型一維數(shù)組的指針變量

C、f是指向函數(shù)的指針變量,該函數(shù)具有一個int類型的形參

D、f是函數(shù)名,該函數(shù)的返回值是基類型為in[類型的地址

標準答案:C

知識點解析:定義語句int(*f)(int)中f是指向函數(shù)的指針變量,該函數(shù)中也只有一

個int型的形參。

21、有以卜程序#includemain(){inta,b;for(a=l,b=l;a<=100;a++){if(b>=20)

break;if(b%3==1){b=b+3;continue;)b=b-5;)printf("%d\n",a);}程序的輸出結(jié)果

A、10

R、9

C、8

D、7

標準答案:B

知識點解析:首先注意f。「循環(huán)的控制條件當(dāng)b>=20或者a>100則跳出for循環(huán)

也即b<20且a<=100時執(zhí)行for循環(huán);第一次進入循環(huán)a=l,b=l均滿足循環(huán)條

件,但b%3==l條件滿足,故執(zhí)行b=b+3,得到b=4,注意有continue,所以后面語

句不執(zhí)行,直接跳轉(zhuǎn)到a++這個語句,所以第一次循環(huán)完之后a=2,b=4;進入第二

輪循環(huán),b%3==l也是滿足的,故再次b=b+3,此輪循環(huán)執(zhí)行之后a=3,b=7,進入下

一輪。此后和前面循環(huán)同理,都是b%3==l滿足,因為每次都是加3,而之后乂去

模3,且都跳過for后面語句直接執(zhí)行a++,所以,一直循環(huán)到b=22跳出而循

環(huán)。此時a為8.綜合起來就是,每次循環(huán)b增加3,a增加1,且當(dāng)b>22時跳出循

環(huán),結(jié)束程序。所以b從1增加到22,有(22-1)<3=7,所以a=1+7=8.因此B選項

正確。

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

A、函數(shù)既可以直接調(diào)用自己,也可以間接調(diào)用自己

B、任何情況下都不能用函數(shù)名作為實參

C、函數(shù)的遞歸調(diào)用不需要額外開銷,所以效率很高

D、簡單遞歸不需要明確的結(jié)束遞歸的條件

標準答案:A

知識點解析:函數(shù)之間可以嵌套調(diào)用,選項A)描述正確;函數(shù)名可以作為實參,

實際傳遞的是該函數(shù)的返回值,選項B)錯誤;遞歸調(diào)用也是函數(shù)調(diào)用,每次調(diào)用

的時候也需要記錄每一層的返回點,也要增加許多額外的開銷的,選項C)錯誤;

遞歸調(diào)用和循環(huán)很相似,為了防止遞歸調(diào)用無休止地進行,必須在函數(shù)內(nèi)添加明確

的結(jié)束條件,選項D)錯誤;答案選A)。

23、下列與隊列結(jié)構(gòu)有關(guān)聯(lián)的是

A、函數(shù)的遞歸調(diào)用

B、數(shù)組元素的引用

C、多重循環(huán)的執(zhí)行

D、先到先服務(wù)的作業(yè)調(diào)度

標準答案:D

知識點解析:隊列的修改是依先進先出的原則進行的,D正確。

24、以下能正確定義字符串的語句是

A^charstr="\x43H;

B、charstr[]="\O";

C、charstr='';

D、charstr[]={,\064,};

標準答案:B

知識點解析:C語言中,字符串是用一對雙引號括起來的字符序列,并用字符型數(shù)

組來存放.故C選項和D選項不屬十字符串

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論