國家二級(C語言)筆試模擬試卷11(題后含答案及解析)_第1頁
國家二級(C語言)筆試模擬試卷11(題后含答案及解析)_第2頁
國家二級(C語言)筆試模擬試卷11(題后含答案及解析)_第3頁
國家二級(C語言)筆試模擬試卷11(題后含答案及解析)_第4頁
國家二級(C語言)筆試模擬試卷11(題后含答案及解析)_第5頁
已閱讀5頁,還剩14頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

國家二級(c語言)筆試模擬試卷n(題后含答案及解析)

題型有:1.選擇題2.填空題

選擇題(1-10、21-40每題2分,11-20每題1分,共70分)下列各題A、B、

C、D四個選項中,只有一個選項是正確的,請將正確選項涂寫在答題卡相應(yīng)位

置上。

1.結(jié)構(gòu)化程序設(shè)計主要強(qiáng)調(diào)的是()。

A.程序的規(guī)模

B.程序的易讀性

C.程序的執(zhí)行效率

D.程序的可移植性

正確答案:B

解析:結(jié)構(gòu)化程序設(shè)計主要強(qiáng)調(diào)的是程序清晰易讀,可理解性好。

2.視圖設(shè)計一般有三種設(shè)計次序,下列不屬于視圖設(shè)計的是()o

A.自頂向下

B.由外向內(nèi)

C.由內(nèi)向外

D.自底向上

正確答案:B

解析:視圖設(shè)計般有三種設(shè)計次序,它們分別是白頂向下、白底向上和由

內(nèi)向外,可以單獨使用也可混合使用。

3.下列關(guān)于棧的敘述中正確的是()。

A.在棧中只能插入數(shù)據(jù)

B.在棧中只能刪除數(shù)據(jù)

C.棧是先進(jìn)先出的線性表

D.棧是先進(jìn)后出的線性表

正確答案:D

解析:棧是限定在一端進(jìn)行插入與刪除的線性表,是按照“先進(jìn)后出”或“后

進(jìn)先出”的原則組織數(shù)據(jù)的,因此,棧也被稱為“先進(jìn)后出”表或“后進(jìn)先出”

表。

4.在軟件生命周期中,能準(zhǔn)確地確定軟件系統(tǒng)必須做什么和必須具備哪些

功能的階段是()。

A.概要設(shè)計

B.詳細(xì)設(shè)計

C.可行性分析

D.需求分析

正確答案:D

解析:軟件生命周期的主要活動階段為:①可行性研究和計劃制定,確

定待開發(fā)軟件系統(tǒng)的開發(fā)目標(biāo)和總的要求,給出其功能、性能、可靠性以及接口

等方面的可能方案,制定完成開發(fā)任務(wù)的實施計劃。②需求分析。對待開發(fā)

軟件提出的需求進(jìn)行分析并給出詳細(xì)定義,即準(zhǔn)確地確定軟件系統(tǒng)的功能,編寫

軟件規(guī)格說明書及初步的用戶手冊,提交評審。③軟件設(shè)計。系統(tǒng)設(shè)計人員

和程序設(shè)計人員應(yīng)該在反復(fù)理解軟件需求的基礎(chǔ)上,給出軟件的結(jié)構(gòu)、模塊的劃

分、功能的分配以及處理流程。④軟件實現(xiàn)。完成源程序的編碼,編寫用戶

手冊、操作手冊等面向用戶的文檔,編寫單元測試計劃。⑤軟件測試。在設(shè)

計測試用例的基礎(chǔ)上,檢驗軟件的各個組成部分。編寫測試分析報告。⑥運(yùn)

行和維護(hù)。將已交付的軟件投入運(yùn)行,并在運(yùn)行使用中不斷地維護(hù),根據(jù)新提出

的需求進(jìn)行必要而且可能的擴(kuò)充和刪改。

5.下列說法中,不屬于數(shù)據(jù)模型所描述的內(nèi)容的是()。

A.數(shù)據(jù)結(jié)構(gòu)

B.數(shù)據(jù)操作

C.數(shù)據(jù)查詢

D.數(shù)據(jù)約束

正確答案:c

解析:或據(jù)模型所描述的內(nèi)容有數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和數(shù)據(jù)約束。其中,數(shù)

據(jù)結(jié)構(gòu)主要描述數(shù)據(jù)的類型、內(nèi)容、性質(zhì)以及數(shù)據(jù)庫的聯(lián)系等;數(shù)據(jù)操作主要描

述在相應(yīng)數(shù)據(jù)結(jié)構(gòu)上的操作類型與操作方式。

6.以下數(shù)據(jù)結(jié)構(gòu)中不屬于線性數(shù)據(jù)結(jié)構(gòu)的是()0

A.隊列

B.線性表

C.二叉樹

D.棧

正確答案:c

解析:線性表、棧和隊列等數(shù)據(jù)結(jié)構(gòu)所表達(dá)和處理的數(shù)據(jù)以線性結(jié)構(gòu)為組織

形式。棧是一種特殊的線性表,它只能在固定的一端進(jìn)行插入和刪除操作,乂稱

后進(jìn)先出表;隊列是插入在一端進(jìn)行,刪除在另一端進(jìn)行的線性表,又稱先進(jìn)先

出表。

7.對長度為n的線性表進(jìn)行順序查找,在最壞情況下所需要的比較次數(shù)為

()。

A.n+1

B.n

C.(n+1)/2

D.n/2

正確答案:B

解析:在順序查找中,如果線性表中被查元素不在線性表中,或是線性表中

的最后一個,則為了查找這個元素需要與線性表中所有元素進(jìn)行比較,這是順序

查找最壞的情況。

8.下列有關(guān)數(shù)據(jù)庫的描述,正確的是()o

A.數(shù)據(jù)庫是一個DBF文件

B.數(shù)據(jù)庫是一個關(guān)系

C.數(shù)據(jù)庫是一個結(jié)構(gòu)化的數(shù)據(jù)集合

D.數(shù)據(jù)庫是一組文件

正確答案:c

解析;數(shù)據(jù)庫是數(shù)據(jù)的集合,它具有統(tǒng)一的結(jié)構(gòu)形式并存放于統(tǒng)一的存儲介

質(zhì)內(nèi),是多種應(yīng)用數(shù)據(jù)的集成,并可被各個應(yīng)用程序所共享。數(shù)據(jù)庫中的數(shù)據(jù)具

有“集成”、“共享”的特點。

9.下面不屬于軟件設(shè)計原則的是()o

A.抽象

B.模塊化

C.自底向上

D.信息隱蔽

正確答案:c

解析:軟?件設(shè)計遵循軟件工程的基本目標(biāo)和原則,建立了適用于在軟件設(shè)計

中應(yīng)該遵循的基本原理和與軟件設(shè)計有關(guān)的概念,它們是抽象、模塊化、信息隱

蔽和數(shù)據(jù)獨立性。自底向上是集成測試中增量測試的一種。

10.在結(jié)構(gòu)化方法中,用數(shù)據(jù)流圖(DFD)作為描述工具的軟件開發(fā)階段是

()。

A.可行性分析

B.需求分析

C.詳細(xì)設(shè)計

D.程序編碼

正確答案:B

解析:軟件開發(fā)階段包括需求分析、總體設(shè)計、詳細(xì)設(shè)計、編碼和測試五個

階段,其中需求分析階段常用的工具是數(shù)據(jù)流圖和數(shù)據(jù)字典

11.程序中若有如下說明和定義語句:charfun(char*);main()

{char*s=uone,\af5]={0},(*fl)()=fun,ch;;)以下選項中對

函數(shù)fun的正確調(diào)用語句是()o

A.(*fl)(a);

B.*fl(*s);

C.fun(&a);

D.ch=*fl(s)

正確答案:A

解析:程序中定義的n是一個指向函數(shù)fun的指針變量,即將函數(shù)fun的人

口地址賦給指針變量fl,這時fl和fun都指向函數(shù)的開頭,調(diào)用*fl就是調(diào)用函

數(shù)fun。注意,此時用函數(shù)指針變量調(diào)用函數(shù)時,只需用(*fl)代替函數(shù)名fun即

可,再在(*fl)后的括號中根據(jù)需要寫上實參,所以(%fl)(a);相當(dāng)于fun(a);故

選項A)是正確的。

12.設(shè)有如下說明:typedefstruetST{longa;intb;charc[2];}

NEW;則下面敘述中正確的是()<>

A.以上的說明形式非法

B.ST是一個結(jié)構(gòu)體類型

C.NEW是一個結(jié)構(gòu)體類型

D.NEW是一個結(jié)構(gòu)體變量

正確答案:c

解析:typedef關(guān)鍵字用于聲明一個新的類型名代替已有的類型名。本題中

如果沒有用typedef進(jìn)行定義的話,則structST為結(jié)構(gòu)體類型,現(xiàn)在用typedef

定義后,相當(dāng)于用NEW代表了structST這一結(jié)溝體類型,故NEW為結(jié)構(gòu)體類

型。

13.以下不能定義為用戶標(biāo)識符的是()。

A.Main

B._0

C._int

D.sizeof

正確答案:D

解析:C語言規(guī)定標(biāo)識符只能由字母、數(shù)字和下劃線三種符號組成,而且第

一個字符必須是字母或下劃線,標(biāo)識符名不能與關(guān)鍵字重名。選項A)中Main與

主函數(shù)名main不同,所以選項D)是非法的標(biāo)識符。

14.以下選項中不能作為合法常量的是()0

A.1.234e()4

B.1.234e0.4

C.1.234e+4

D.1.234e0

正確答案:B

解析:選項中的幾個常量都是指數(shù)形式的實型常量。該類型的常量要求字母

e(或E)之前必須有數(shù)字,且e后面的指數(shù)必須為整數(shù),所以選項B)錯誤。

15.有以下程序:#inckide<stdio.h>main(){intm=12,n=34;

printf(u%d%d”,m++,++n);printf(44%d%d\n”,n++,++m);}程序運(yùn)行后的

輸出結(jié)果是()o

A.12353514

B.12353513

C.12343514

D.12343513

正確答案:A

解析:程序執(zhí)行printf("%d%d”,m++,++n);后,輸出的是m和n+1的值

1235,然后m+l=13,再執(zhí)行printf("%d%d\n”,n++,++m);輸出n和m+1的

值3514,之后n+l=36。這里要注意的是m++和++m的區(qū)別:m++是先輸出m

的值,再執(zhí)行m++;++m是先執(zhí)行++m,再輸出m的值。

16.有以下程序:#include<stdio.h>niain(){inta[]=

(123,4,5,6,7,8,9,0},*p;for(p=a;p<a+10;p++)printf("%dJ,*p);}程序運(yùn)行

后的輸出結(jié)果是()o

A.123,4,5,6,7,8,9,0,

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

C(),1,2,345,678,9,

D.1,1,1』,1,1,1,1,1,1,

正確答案:A

解析:C語言規(guī)定數(shù)組名代表數(shù)組的首地址,所以for循環(huán)中循環(huán)變量p的

初值即&a[o),故輸出的"p的值為a[0]的值。執(zhí)行p++后,指針變量P指向afl],

這時輸出*P即輸出的值,經(jīng)過10次循環(huán),將輸出a數(shù)組的全部數(shù)據(jù):1,

2,3,4,5,6,7,8,9,0,

17.有定義語句:intb;charc[10];則正確的輸入語句是()。

A.seanf("%d%s”,&b,&c);

B.scanf("%d%s”,&b,c);

C.seanf(u%d%sn,b,c);

D.scanf("%d%s"b&c);

正確答案:B

解析:scanf函數(shù)中格式控制后面是地址表列,不能用變量名。數(shù)組名c代

表數(shù)組在內(nèi)存的首地址,&b代表變量b的首地址,選項B)正確。

18.若有以下說明和定義:uniondt{inta;charb;doublec;}data;

以下敘述中錯誤的是()o

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

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

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

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

正確答案:c

解析:共用體成員a,b,c共占用同一個內(nèi)存空間,所以data的每個成員起

始地址都相同;共用體變量所占的內(nèi)存長度等于最長的成員的長度,故變量data

所占的內(nèi)存字節(jié)數(shù)與成員所占字節(jié)數(shù)相等;由于各成員變量的類型不一致,所以

它們的存儲方式也不相同,整型占用2個字節(jié)的存儲空間,double型占用8個字

節(jié)的存儲空間;dala可以作為函數(shù)的實參,此時data作為一個地址進(jìn)行地址傳送;

執(zhí)行data.a=5;printf("%An”,data.c);系統(tǒng)不能自動將整型變量轉(zhuǎn)換為浮點型值,

printf函數(shù)只是將內(nèi)存中的數(shù)據(jù)以不同類型輸出,而不能將內(nèi)存中的整型數(shù)據(jù)自

動轉(zhuǎn)換為等值的浮點數(shù),故選項C)錯誤。

19.有以下程序:#include<stdio.h>main(){int

a,b,d=25;a=d/10%9;b=a&&(-l);printf(u%d,%d\n”,a,b);}程序運(yùn)行

后的輸出結(jié)果是()o

A.6,1

B.2,1

C.6,0

D.2,0

正確答案:B

解析:“/”表示整除,“%”表示求余。程序里表達(dá)式a=d/10%9的值為

25/10%9=2,則b=a&&(-l)=2&&(-l)=l(注意:-1表示真,0表示假),所以a,b

的值分別為2,1。

20.有以下程序:#include<stdio.h>main(){int

num[4][4]={{1,2,3,4},[5,6,7,8},{9,10,11,12},{13;I4,15,16)for(i=0;i<4;i

++){for(j=0;j<=i;j++)printf("%4c'',");for(j=;j<4;j

++)prinlf("%4d”,hum[i]|j]);prinlf("\n");}}若要按以下形式輸

出數(shù)組右上半三角;1234678111216則

在程序下劃線處應(yīng)填入的是()。

A.i-1

B.i

C.i+1

D.4-i

正確答案:B

解析:本程序為二重循環(huán),外循環(huán)控制輸出數(shù)據(jù)的行數(shù),內(nèi)循環(huán)控制輸出數(shù)

據(jù)的列數(shù)。本題需要輸出4行4列,外層循環(huán)語句for(i=0:iV4;i++)控制輸出

4行,內(nèi)層的第一條foi?循環(huán)控制每行輸出的空格數(shù),第二條for循環(huán)用于控制每

行的數(shù)字輸出,由于每一行的數(shù)字個數(shù)比前一行少1個,所以內(nèi)層的第二條for

循環(huán)每次循環(huán)的次數(shù)需要遞減1,那么j的初始值應(yīng)該遞增,因為第一行輸出的

是4個數(shù),所以空格中應(yīng)填i。

21.若已定義c為字符型變量,則下列語句中正確的是()。

A.c='97,

B.c="97”;

C.c=97;

D.c="a”;

正確答案:C

解析:C語言中,字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。一個字符數(shù)據(jù)既可

以字符形式輸出,也可以整數(shù)形式輸出,所以把整型數(shù)據(jù)賦給字符型變量,直接

用c=97即可,所以選項C)正確。由于題目要求選出正確的語句,選項A)少分號,

不能構(gòu)成語句,因此錯誤。B)、D)是將一個字符串賦給一個字符變量,所以錯誤。

22.設(shè)變量x為float型且己賦值,則以下語句中能將x中的數(shù)值保留到小

數(shù)點后兩位,并將第三位四舍五入的是()。

A.x=x*100+0.5/100.0;

B.x=(x*100+0.5)/100.0

C.x=(int)(x*100+0.5)/100.0;

D.x=(x/100+0.5)/100.0;

正確答案:c

解析:本題考查實型數(shù)據(jù)。題目要求保留到小數(shù)點后兩位,選項A)、B)、

D)都不合要求。在選項。中,x*10()+().5的作用是將第三位四舍五入,取整后再

除以100.0,即可得符合要求的數(shù)據(jù)。

23.有以下程序:#include<stdio.h>main(){int

k=4,n=0;for(;n<k;){n++;if(n%3!=0)continue;k—;}

printfft%d,%d\n,\k,n);}程序運(yùn)行后的輸出結(jié)果是()。

A.1,1

B.2,2

C.3,3

D.4,4

正確答案:C

解析:本題考查循環(huán)和continue語句,continue語句的功能是結(jié)束本次循環(huán)。

n從。開始循環(huán),判斷n%3!=0是否成立,如果成立,結(jié)束本次循環(huán),繼續(xù)下一

次for循環(huán);否則執(zhí)行k「并繼續(xù)下一次for循環(huán),直至循環(huán)結(jié)束。在程序中,

當(dāng)n取1,2時,不執(zhí)行k--,當(dāng)n取3時,執(zhí)行k--,k變?yōu)?,循環(huán)結(jié)束,輸出

k,n的值分別為3,3o

24.以下程序的功能是計算:。#include<stdio.h>main()

{intn;floats;s=1.0;for(n=10;n>l;n—)s=s+l/n;

prinlf("%6.4f\n",s);}程序運(yùn)行后輸出結(jié)果錯誤,導(dǎo)致錯誤結(jié)果的程序行

是()。

A.s=1.0;

B.for(n=10;n>l;n-)

C.s=s+l/n;

D.printf("%6.4f\n",s);

正確答案:C

解析:該程序的運(yùn)行結(jié)果是l.OOOO,算法錯誤。在5=$+1"中,因為n為整

型,所以循環(huán)中1/n始終為00這就是木題算法錯誤的原因。應(yīng)把s=s+l/n改為

s=s+I.O/no

25.若有如下程序段,其中s,a,b,c均已定義為整型變量,且a,c均

己賦值(c大于0):s=a;for(b=l;bV=c;b++)s=s+l;則與上述程序段功能等

價的賦值語句是()o

A.s=a+b;

B.s=a+c;

C.s=s+c;

D.s=b+c;

正確答案:B

解析:本題考查賦值語句。s的初值是a,b從1循環(huán)到c,每循環(huán)一次,s

加1,共加了l*c次,因此程序?qū)崿F(xiàn)的功能是s=a+c。

26.若已定義的函數(shù)有返回值,則以下關(guān)于該函數(shù)調(diào)用的敘述中錯誤的是

()。

A.函數(shù)調(diào)用可以作為獨立的語句存在

B.函數(shù)調(diào)用可以作為一個函數(shù)的實參

C.函數(shù)調(diào)用可以出現(xiàn)在表達(dá)式中

D.函數(shù)調(diào)用可以作為一個函數(shù)的形參

正確答案:D

解析:本題考查函數(shù)的調(diào)用。在有參函數(shù)調(diào)月中,是將主調(diào)函數(shù)的實參值傳

給被調(diào)函數(shù)的形參。按函數(shù)在程序中出現(xiàn)的位置來分,有以下三種函數(shù)調(diào)用形式:

①函數(shù)調(diào)用作為一條語句。例如:fun();這時不要求函數(shù)帶回值,只要求函

數(shù)完成一定的操作。故選項A)正確。②函數(shù)由現(xiàn)在表達(dá)式中,這種表達(dá)式稱

為函數(shù)表達(dá)式。這時要求函數(shù)帶回一個確定的值以參加表達(dá)式的運(yùn)算。例如:

c=5*max(a,b);函數(shù)max是表達(dá)式的一部分,將其值乘以5后賦給c。故選項

C)正確。③函數(shù)調(diào)用作為一個函數(shù)的實參,例如:m=max(a,max(b,c));其中

max(b,c)是一次函數(shù)調(diào)用,它的值作為max另一次調(diào)用的實參。故選項B)正確。

函數(shù)調(diào)用不可作為一個函數(shù)的形參,因為函數(shù)調(diào)用參數(shù)的數(shù)據(jù)傳遞是單向傳遞,

即實參傳給形參,不能由形參傳給實參。故選項D)錯誤。

27.有以下函數(shù)定義:voidfun(intn,doublex){.....}若以下選項中

的變量都已正確定義并賦值,則對函數(shù)fun的正確調(diào)用語句是()。

A.fun(inty,doublem);

B.k=fun(10,12.5);

C.fun(x,n);

D.voidfun(n,x);

正確答案:c

解析:本題考查函數(shù)調(diào)用。函數(shù)調(diào)用時,實參前不需加類型說明,選項A)

錯誤;題目中的函數(shù)沒有返回值,所以選項B)錯誤;函數(shù)調(diào)用前不需要加類型

說明,選項D)錯誤。

28.有以下程序:#include<stdio.h>voidfun(char*a,char*b)

{a=b;(*a)++;}main(){charcl='A',c2='a',*pl.*p2;

pl=&cl;P2=&c2;fun(pl,p2);printf("%c%c\n”,cl,c2);}程序運(yùn)

行后的輸出結(jié)果是()o

A.Ab

B.aa

C.Aa

D.Bb

正確答案:A

解析:本題中fun函數(shù)的形參是兩個指向字符型數(shù)據(jù)的指針,其功能是把b

賦給a,然后將a所指存儲單元里的變量值加1。在main函數(shù)中,pl里存放的

是cl的地址,p2里存放的是c2的地址,經(jīng)函數(shù)調(diào)用fun(pl,P2)后,p2的值賦給

了pl,使pl和p2都指向了c2,而(*a)++又使的值加1變成了,b\所以此時

c2的值為而cl的值沒變,仍為,AL程序改變的是pl的地址和c2的值。

29.有以下程序:#include<stdio.h>main(){int

a=l,b=2,m=0,n=0,k;k=(n=b>a)||(m=a<b);

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

A.0,0

B.0,1

C.1,0

D.1,1

正確答案:C

解析:本題考查邏輯或運(yùn)算。因為b>a為真,即n=l,則m小需冉計算,

保持原值,因此k值為1,m值仍為0。

30.以下敘述中正確的是()o

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

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

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

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

正確答案:A

解析:在C程序中/*……*/表示注釋部分,注釋只是讓閱讀程序的人更容易

理解程序,對編譯和運(yùn)行不起作用,可以加在程序中任何位置,選項A)正確;

花括號和“}”不僅可以作為函數(shù)體的定界符,還可以構(gòu)成復(fù)合語句,選項

B)錯誤;系統(tǒng)提供的函數(shù)和main函數(shù)不能由用戶命名,選項C)錯誤;所有的C

語句都以分號結(jié)尾,選項D)錯誤。

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

A.max(intx,int*z){*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;retum(z);}

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

正確答案:B

解析:在選項B)中,定義max函數(shù)時,形參只定義了x的數(shù)據(jù)類型,而未

定義y的數(shù)據(jù)類型,所以會出現(xiàn)編譯錯誤。

32.以下不能正確定義二維數(shù)組的選項是()0

A.intal2][2]={{l),{2});

B.inta[]⑵={1,2,3,4};

C.inta[2][2]={{l),2,3);

D.inta[21f]={{l,2),{3,4)};

正確答案:D

解析:選項A)定義的數(shù)組按行各數(shù)組元素分別是:1,0,2,0;選項B)定

義的數(shù)組按行各數(shù)組元素分別是:1,2,3,4;選項C)定義的數(shù)組按行各數(shù)組

元素分別是:1,0,2,3;因為定義數(shù)組時,第一維的長度可以不指定,第二維

的長度必須指定,所以選項D)錯。

33.有以下程序:#include<stdio.h>main(){int

s=(),a=l,n;scanf("%d",&n);do(s+=l;a=a-2;}while(a:=n);

prinlf("%d\n”,s);}若要使程序的輸出值為2,則應(yīng)該從鍵盤給n輸入的值

是()。

A.-1

B.-3

C.-5

D.0

正確答案:B

解析:本題考查do-while語句。當(dāng)n=-l時,s+=l,s=l;a=a-2=-1;a!=n不

成立,結(jié)束循環(huán),此時s值為1,不符合題意;當(dāng)n=?3時,s+=l,s=l;a=a-2=-1;

a!二n成立,繼續(xù)循環(huán),s=s+l=2,a=a-2=-3:a!=n不成立,此時s值為2,符合

題意。

34.以下能正確定義一維數(shù)組的選項是()。

A.ininum口;

B.#defineN10()intnum[N];

C.intnum[0,e,100];

D.intN=100;intnum[N];

正確答案:B

解析:C不允許對數(shù)組的大小作動態(tài)定義,即數(shù)組的大小不依賴于程序運(yùn)行

過程中變量的值,選項A)錯誤;字符常量可以作為定義數(shù)組大小的常量表達(dá)式,

選項B)正確:不能用區(qū)間表示數(shù)組大小,選項。錯誤;D)中的N為變量,所以

錯誤。

35.有以下程序:#include<stdio.h>main(){inta;

charc=10;floatf=100.0;doublex;a=f/=c*=(x=6.5);

printf(tt%d%d%3.1f%3.1An”,a,c,f,x);}程序運(yùn)行后的輸出結(jié)果是()。

A.16516.5

B.1651.56.5

C.1651.06.5

D.2651.56.5

正確答案:B

解析:本題考查復(fù)合賦值運(yùn)算符。本題中先計算c的值,c=c*(x=6.5)=10*6.5=

65;然后計算f的值,f=f7c=100.0/65=1.538462;最后計算a的值,a=f,a取f

的整數(shù)部分,即為1。

36.已定義以下函數(shù):fun(char*p2,char*pl){whilc((*p2=*pl)!

=t\0,){pl++;p2++;})此函數(shù)的功能是()o

A.將pl所指字符串復(fù)制到p2所指內(nèi)存空間

B.將pl所指字符串的地址賦給指針p2

C.對pl和p2兩個指針?biāo)缸址M(jìn)行比較

D.檢查pl和p2兩個指針?biāo)缸址惺欠裼?(),

正確答案:A

解析:while((*p2=*pl)!二、(T表示將pl所指向的值賦給*p2,即將pl所指

字符串復(fù)制到p2所指內(nèi)存空間。要注意這里*p2=*pl是賦值操作,而不是比較

是否相等,所以選項B)、C)、D)都小對。

37.以下選項中不能正確把cl定義成結(jié)構(gòu)體變量的是()°

A.typedefstruct{intred;intgreen;intblue;

COLOR;COLORcl;

B.structcolorcl{intred;intgreen;intblue;)

C.structcolor{intred;intgreen;intblue;)cl;

D.struct{intred;intgreen;intblue;)cl;

正確答案:B

解析:本題選項A)、C)、D)是定義結(jié)構(gòu)體及其變量的三種正確的形式,能

正確將cl定義為結(jié)構(gòu)體變量。選項B)錯誤。

38.有以下程序:#includc<stdio.h>#dcfineF(x,y)(x)*(y)

main(){inta=3,b=4;printf(u%d\n,,,F(a++,b++));}程語

運(yùn)行后的輸出結(jié)果是()o

A.12

B.15

C.16

D.20

正確答案:A

解析:本題考查帶參數(shù)的宏定義。對F(a++,b++)展開后,宏的返回值為3

X4=12,這里a++,b++都是先使用變量值,再自增。

39.有以下程序:#inckide<stdio.h>fun(inta,intb){if(a

>b)return(a);elsereturn(b);}main(){int

x=3,y=8,z=6,r;r=fun(fun(x,y),2*z);printf("%d\n",r);)程序

運(yùn)行后的輸出結(jié)果是()o

A.3

B.6

C.8

D.12

正確答案:D

解析:本題考查函數(shù)的返回值。fun函數(shù)的功能是比較a,b的值,返回其中

較大者。對于main函數(shù)中的語句r=fun(fun(x,y),2*z);是先調(diào)用fun(x,y)返回8,

再將8和12作為實參調(diào)用函數(shù)fun,得到的返回值為12。

40.有以下程序:#include<stdio.h>main()

{prinlf("%d\rT,NULL)”}程序運(yùn)行后的輸出結(jié)果是()。

A.0

B.1

C.-1

D.NULL沒定義,出錯

正確答案:A

解析:本題按“%d”格式輸出,相當(dāng)于輸出控制字符NULL的ASCII碼值,

即為。

41.有定義:intx,y;若要通過scanf("%d,%d”,&x,&y);使變量x得到數(shù)值

11,變量y得到數(shù)值12,下面四組輸入形式中,錯誤的是()o

A.1112V回車〉

B.B,12V回車〉

C.11,12V回車〉

D.U,V回車>12V回車》

正確答案:A

解析:格工輸入函數(shù)的一般形式為:scanf(格式控制,地址表列)在“格

式控制”字符串中,除格式說明以外的其他字符為按原樣輸入的字符,在輸入數(shù)

據(jù)時應(yīng)按原樣輸入這些字符。所以輸入時,兩個數(shù)字之間的逗號是不可少的。

42.若程序中已包含頭文件stdio.h,以下選項能正確運(yùn)用指針變量的程序

段是()0

A.int*i=NULL;scanf(4t%d,,,i);

B.float*f=NULL;*f=10.5;

C.chart=4m\*c;*c=&t;

D.long*L;L=t\0,;

正確答案:D

解析:本題考查指針變量的運(yùn)用。選項A)、B)為指針定義錯誤,空指針NULL

是對指針變量賦。值而得到的。例如:#dcfineNULL0int*p二NULL;對

指針變量賦。值和不賦值的時候意義是不同的:指針變量未賦值時,它是指向任

意不確定的存儲單元,不能使用,否則將造成意外錯誤;而指針變量賦0值后,

則可以使用,只是它不指向具體的變量而己。選項C)中的*c=&t;錯誤,因為

&t是地址,而加是值。選項D)是讓指針L指向字符串的末尾,即字符串的結(jié)

束符。

43.以下不能定義為用戶標(biāo)識符的是()。

A.scanf

B.Void

C._3com_

D.int

正確答案:D

解析:標(biāo)識符是C語言中用來表示變量名、數(shù)組名、函數(shù)名、指針名、結(jié)

構(gòu)名、聯(lián)合名、枚舉常數(shù)名、用戶定義的數(shù)據(jù)類型名、語句標(biāo)號等用途的字符序

列。標(biāo)識符由1?32個字符組成,第一個字符必須是字母或下劃線,后面的字符

可以是字母、數(shù)字或下劃線。標(biāo)識符小能與C關(guān)鍵字相同,并區(qū)分大小寫,選

項D)錯誤,因為血是C語言中的關(guān)鍵字。

44.以下程序中函數(shù)scmp的功能是返回形參指針si和s2所指字符串中較

小字符串的首地址。#include<stdio.h>#include<string.h>

char*scmp(char*s1,char*s2){if(strcmp(s1,s2)<0)return(sl);else

return(s2);}main(){inti;charstring[20],str[3][20];

for(i=0;i<3;i++)gets(strfil);strcpy(string,scmp(str[01,str[1]));/*庫函數(shù)

strcpy對字符串進(jìn)行復(fù)制*/strcpy(string,scmp(string,str|2]));

printf("%s\n",string);}若運(yùn)行時依次輸入:abed、abba和abc三個字符串,

則輸出結(jié)果為()o

A.abed

B.abba

C.abc

D.baca

正確答案:B

解析:木題考查返回指針值的函數(shù)。一個函數(shù)可以帶回一個整型值,字符值,

實型值等,也可以帶回指針型的數(shù)據(jù),即地址。函數(shù)stremp(字符串1,字符串

2)的作用是比較字符串1和字符中2。如果字符串1二字符串2,函數(shù)值為0;如

果字符串1,字符串2,函數(shù)值為一正整數(shù);如果字符串IV字符串2,函數(shù)值為

一負(fù)整數(shù)。本題程序中semp函數(shù)的作用是比較si和s2的大小,對stremp函數(shù)

的返回值進(jìn)行判斷,如果字符串IV字符串2,則返回字符串1的值,反之返回

字符串2的值。所以main函數(shù)中scmp(str[0],str[l])的返回值是abba,通過strepy

函數(shù)把返回值abba復(fù)制到string中。當(dāng)執(zhí)行scmp(slring,slr[2])時,scrap函數(shù)的

返回值為abba,再次復(fù)制到string中,最后string的值為abba。

45.有定義:inta=l,b=2,c=3,x;則以下選項中各程序段執(zhí)行后,x的值不為

3的是()o

A.if(c<a)x=l;elseif(b<a)x=2;elsex=3;

B.if(a<3)x=3;elseif(a<2)x=2;elsex=l;

C.if(a<3)x=3;if(a<2)x=2;if(a<l)x=l;

D.if(a<b)x=b;if(b<c)x=c;if(c<a)x=a;

正確答案:C

解析:選項A),因為前面兩個條件都不滿足,所以執(zhí)行x=3。選項B),a<

3成立,執(zhí)行x=3o選項C),aV3成立,執(zhí)行x=3;aV2成立,執(zhí)行x=2;a<1

不成立,不執(zhí)行x=l,所以執(zhí)行此段程序后x=2。選項D),aVb成立,執(zhí)行x=b,

此時x=2;bVc成立,執(zhí)行x=c,此時x=3;c〈a不成立,不執(zhí)行x=a,所以執(zhí)

行此段程序后x=3o

46.有以下程序:#includc<stdio.h>main(){int

x=3,y=2,z=1;printf(tt%d\n,\x/y&~z);程序運(yùn)行后的輸出結(jié)果是

()o

A.3

B.2

C.1

D.0

正確答案:D

解析:&是按位“與”運(yùn)算符,若參加運(yùn)算的兩個運(yùn)算量的相應(yīng)位都為1,

則該位的結(jié)果值為1,否則為0。?是“取反”運(yùn)算符,用來對一個二進(jìn)制數(shù)按

位取反,即將0變1,1變0。對于x/y&?z,先計算x/y的值,結(jié)果為1,用十

六進(jìn)制表示為()001;Z用十六進(jìn)制表示為()()01,則?z為FFFE;最后進(jìn)行&運(yùn)

算,整個表達(dá)式的值為0。

47.若fp已正璃定義并指向某個文件,當(dāng)未遇到該文件結(jié)束標(biāo)志時函數(shù)

fcof(fp)的值為()o

A.0

B.1

C.-1

D.一個非0值

正確答案:A

解析:fmf(fp)用來測試fp所指向的文件當(dāng)前狀態(tài)是否“文件結(jié)束”。如果是

文件結(jié)束,函數(shù)feof(fp)的值為1(真),否則為0(假)。

48.己定義ch為字符型變量,以下賦值語句中錯誤的是()o

A.ch=6V;

B.ch=62+3;

C.ch=NULL;

D.ch=t\xaa,;

正確答案:A

解析;于符型變量用來存放字符常量,且只能存放一個字符。賦值反斜杠線

“\”,必須用轉(zhuǎn)義字符實現(xiàn),即ch=、Y,所以選項A)錯誤;字符型變量可以賦。?

255之間的ASCII碼值,整型數(shù)據(jù)和字符型數(shù)據(jù)有時可以通用,所以選項B)正

確;可以將NULL賦給一個字符型變量,NULL代表一個空字符,相當(dāng)于0,

選項C)正確;,\xaa,表示的是1?2位16進(jìn)制數(shù)所代表的字符,所以選項D)正確。

49.有以下程序:#include<stdio.h>main(){int

p=&a[0][0];for(i=0;iV9;i++)p[i]=i+l;

printfr%d\n,,,a[l][2]);)程序運(yùn)行后的輸出結(jié)果是()<>

A.3

B.6

C.9

D.2

正確答案:B

解析:本題考查指向數(shù)組元素的指針變量。p=&a[0][0]是把該數(shù)組的第一個

元素a[()][()]的地址賦給指針變量p,a[l]⑵是數(shù)組中的第6個元素,根據(jù)for循

環(huán)中的賦值可知,輸出結(jié)果是6。

50.有以下結(jié)構(gòu)體說明和變量定義,如下圖所示,指針p、q、r分別指向

一個鏈表中的三個連續(xù)結(jié)點。structnode{intdata;struct

node*next;}*p?q,*r;現(xiàn)要將q和r所指結(jié)點的先后位置交換,同時要

保持鏈表的連續(xù),以下錯誤的程序段是()o

A.r->next=q;q->next=r->next;p->next=r;

B.q->next=r->next;p->next=r;r->next=q;

C.p->next=r;q->next=r->next;r->next=p;

D.q->next=r->next;r->next=q;p->next=r;

正確答案:A

解析:對于選項A),執(zhí)行r->next=q后,r->next指向了q。此時q->next=r-

>next就相當(dāng)于q->next=q;所以q而下一個結(jié)點指向了自己,而木是指向原

來r的下一個結(jié)點,所以選項A)錯誤。

填空題(每空2分,共30分)請將每一個空的正確答案寫在答題卡上,注

意:以命令關(guān)鍵字填空的必須拼寫完整。

51.在樹形結(jié)構(gòu)中,樹根結(jié)點沒有[]o

正確答案:前件

解析:在樹形結(jié)構(gòu)中,每一個結(jié)點只有一個前件,稱為父結(jié)點;沒有前件的

結(jié)點只有一個,稱為樹的根結(jié)點;每一個結(jié)點可以有多個后件,它們都稱為該結(jié)

點的子結(jié)點;沒有后件的結(jié)點稱為葉子結(jié)點。

52.Jackson結(jié)構(gòu)化程序設(shè)計方法是英國的M.Jackson提出的,它是一種

面向【】的設(shè)計方法。

正確答案:數(shù)據(jù)結(jié)構(gòu)

解析:結(jié)構(gòu)化分析方法主要包括:面向數(shù)據(jù)流的結(jié)構(gòu)化分析方法,面向數(shù)據(jù)

結(jié)構(gòu)的Jackson方法和面向數(shù)據(jù)結(jié)構(gòu)的結(jié)構(gòu)化數(shù)據(jù)系統(tǒng)開發(fā)方法。

53.面向?qū)ο蟮哪P椭校罨镜母拍钍亲呦蠛汀?/p>

正確答案:類

解析:面向?qū)ο竽P椭?,最基本的概念是對象和類。對象是現(xiàn)實世界中實體

的模型化;將屬性集和方法集相同的所有對象組合在一起,可以構(gòu)成一個類。

54.軟件設(shè)計模塊化的目的是【工

正確答案:降低復(fù)雜性

解析:模權(quán)化是指解決一個復(fù)雜問題時自頂向下逐層把軟件系統(tǒng)劃分成若干

模塊的過程,由此分解來降低復(fù)雜性。

55.數(shù)據(jù)模型按不同應(yīng)用層次分成三種類型,它們是概念數(shù)據(jù)模型、【】

和物理數(shù)據(jù)模型。

正確答案:邏輯數(shù)據(jù)模型

解析:數(shù)據(jù)模型按不同的應(yīng)用層次分成三種類型,它們是概念數(shù)據(jù)模型、邏

輯數(shù)據(jù)模型、物理數(shù)據(jù)模型。

56.在C語言中(以16位PC機(jī)為例),一個float型數(shù)據(jù)在內(nèi)存中所占的字

節(jié)數(shù)為4;一個double型數(shù)據(jù)在內(nèi)存中所占的字節(jié)數(shù)為[]o

正確答案:8

解析:在一般系統(tǒng)中,一個float型數(shù)據(jù)在內(nèi)存中占4個字節(jié)(32位),一個

double型數(shù)據(jù)占8個字節(jié)。

57.以下程序輸田的結(jié)果是[]o#include<stdio.h>main()

{inta=5,b=4,c=3,d;d=(a>b>c);printf("%d\n",d);)

正確答案:()

解析:在本題中,d=(a>b>c);相當(dāng)于d=(5>4>3);其計算過程為:先算

5>4,結(jié)果為真,得1,即d=(l>3);然后計算1>3,結(jié)果為假,得0。

58.mystrlcn函數(shù)的功能是計算str所指字符串的長度,并作為函數(shù)值返回。

請?zhí)羁?。intmystden(char*str){inti;fo,(i=0;[]!=t\0\i++);

return(i);

正確答案:*(str+i)或str[i]

解析:str是指針變量,它指向字符型數(shù)據(jù),在循環(huán)過程中,用*(str+i)或str[i]

來訪問字符串的第i個元素,判斷是否是結(jié)束標(biāo)志,如果不是,i=i+l,繼續(xù)取下

一個元素進(jìn)行判斷,直到*(str+i)的值為為止。

59.以下程序的輸出結(jié)果是【#include<stdio.h>#deftne

JFT(x)x*xmain(){inta,k=3;a=++JFT(k+l);

printfC%d,\a);)

正確答案:9

解析:宏替換的原則是按原樣替換,本題中遇到形參x則以實參k+1替換,

其他字符不變,所以JFT(k+1)經(jīng)替換后為k+1,k+1,ffla=++k+l*k+lo若k的

值為3,則經(jīng)過運(yùn)算為a=4+l*4+1=9。

60.以下定義的結(jié)構(gòu)體類型擬包含兩個成員,其中成員變量inf。用來存入

整型數(shù)據(jù),成員變量link是指向自身結(jié)構(gòu)體的指針,請將定義補(bǔ)充完整。

溫馨提示

  • 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

提交評論