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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

卷8(共9套)

(共348題)

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

卷第1套

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

1、設循環隊列的存儲空間為Q(l:35),初始狀態為fron〔二rear=35。現經過系列入

隊與退隊運算后,front=15,rear=15,則循環隊列中的元素個數為()。

A、20

B、0或35

C、15

D、16

標準答案:B

知識點解析:Q(l:35)則隊列的存儲空間為35;隊空時:front=rear(初始化時:

front二rear);隊滿時:(rear+l)%n==front,n為隊列長度(所用數組大小)。因此當執

行一系列的出隊與入隊操作,front=rear,則隊列要么為空,要么為滿。

2、下列關于棧的敘述中,正確的是()。

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

B、棧操作遵循“先進后出”的原則

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

D、以上三種說法都不對

標準答案:B

知識點解析:棧是“先進后出”,因此,棧底元素是先入棧的元素,棧頂元素是后入

棧的元素。

3、下列鏈表中,其邏輯結構屬于非線性結構的是()。

A、雙向鏈表

B、帶鏈的棧

C、二叉鏈表

D、循環鏈表

標準答案:C

知識點解析:數據的邏輯結構是描述數據之間的關系,分為兩大類:線性結構和非

線性結構。線性結構是n個數據元素的有序(次序)集合,指的是數據元素之間存在

著“一對一,,的線性關系的數據結構。常用的線性結構有:線性表、棧、隊列、雙隊

列、數組、串。非線性結構的邏輯特征是一個結點元素可能對應多個直接前驅和多

個后繼。常見的非線性結構有:樹(二叉樹等)、圖(網等)、廣義表。

4、在關系數據庫中,用來表示實體間聯系的是()。

A、網狀結構

B、樹狀結構

C、屈性

D、二維表

標準答案:D

知識點解析:單一的數據結構——關系,現實世界的實體以及實體間的各種聯系均

用關系來表示。數據的邏輯結構——二維表,從用戶角度,關系模型中數據的邏輯

結構是一張二維表。但是關系模型的這種簡單的數據結構能夠表達豐富的語義,可

以描述現實世界的實體以及實體間的各種關系。

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

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

A、1:m聯系

B、m:n聯系

Cs1:1聯系

D>m:1聯系

標準答案:A

知識點解析:部門到職員是一對多的,職員到部門是多對一的,因此,實體部門和

職員間的聯系是1:m聯系.

6、C語言中最基本的數據類型包括()。

A、整型、實型、邏輯型

B、整型、字符型、數組

C、整型、實型、字符型

D、整型、實型、結構體

標準答案:C

知識點解析:C語言中最基本的數據類型包括整型、實型、字符型。

7、數據字典(DD)所定義的對象都包含于()。

A、軟件結構圖

B、方框圖

C、數據流圖(DFD圖)

D、程序流程圖

標準答案:c

知識點露析:數據字典(DD)是指對數據的數據項、數據結構、數據流、數據存

儲、處理邏輯、外部實體等進行定義和描述,其目的是對數據流程圖中的各元素做

出詳細的說明。

8、軟件需求規格說明書的作用不包括()。

A、軟件設計的依據

B、軟件可行性研究的依據

C、軟件驗收的依據

D、用戶與開發人員對軌件要做什么的共同理解

標準答案:B

知識點解析:《軟件可行性分析報告》是軟件可行性研究的依據。

9、下列各項中屬于黑盒測試方法的是()。

A、邊界值分析

B、路徑覆蓋

C、語句覆蓋

D、邏輯覆蓋

標準答案:A

知識點解析:黑盒測試方法主要有等價類劃分、邊界值分析、因果圖、錯誤推測

等。白盒測試的主要方法有邏輯驅動、路徑測試等,主要用于軟件驗證。

10、下列各項中不屬于軟件設計階段任務的是()。

A、制訂軟件確認測試計劃

B、數據庫設計

C、軟件總體設計

D、算法設計

標準答案:A

知識點解析:軟件設計階段的主要任務包括兩個:一是進行軟件系統的可行性分

析,確定軟件系統的建沒是否值得,能否建成;二是進行軟件的系統分析,了解用

戶的需求,定義應用功能,詳細估算開發成本和開發周期。

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

A、在C語言程序中,main函數必須放在其他函數的最前面

B、每個后綴為.C的C語言源程序都可以單獨進行編譯

C、在C語言程序中,只有main函數才可單獨進行編譯

D、每個后綴為.C的C語言源程序都應該包含一個main函數

標準答案:B

知識點解析:c語言是一種成功的系統描述語言,具有良好的移植性,每個后綴為

C的C語言源程序都可以單獨進行編譯。

12、C語言中的標識符分為關鍵字、預定義標識符和用戶標識符,以下敘述中正確

的是()。

A、預定義標識符(如庫函數中的函數名)可用作用戶標識符,但失去原有含義

B、用戶標識符可以由字母和數字任意順序組成

C、在標識符中大寫字母和小寫字母被認為是相同的字符

D、關鍵字可用作用戶標識符,但失去原有含義

標準答案:A

知識點解析:用戶標識符不能以數字開頭,C語言中標識符是區分大小寫的,關鍵

字不能用作用戶標識符。

13、以下選項中表示一個合法的常量的是(說明:符號口表示空格)()。

A、9口9口9

B、OXab

C、123E0.2

D、2.7e

標準答案:B

知識點解析:當用指數形式表示浮點數據時,E的前后都要有數據,并且E的后面

數要為整數。

14、C語言主要是借助以下哪個功能來實現程序模認化?()

A、定義函數

B、定義常量和外部變量

C、三種基本結構語句

D、豐富的數據類型

標準答案:A

知識點解析:C語言是由函數組成的,函數是C語言的基本單位。所以可以說C

語言主要是借助定義函數來實現程序模塊化的。

15、以下敘述中錯誤的是()。

A、非零的數值型常量有正值和負值的區分

B、常量是在程序運行過程中值不能被改變的量

C、定義符號常量必須用類型名來設定常量的類型

D、用符號名表示的常量叫符號常量

標準答案:C

知識點解析:在C語言中,可以用一個標識符來表示一個常量,稱為符號常量。

符號常量在使用之前必須先定義,其一般形式為:#deflne標識符常量。

16、若有定義和語句:inta,b:scanfC%d,%d”,&a,&b);以下選項中的輸

入數據,不能把值3賦給變量a、把值5賦給變量b的是()。

A^3,5,

B、3,5,4

C、3.5

D、3,5

標準答案:C

知識點解析:在輸入3和5之間除逗號外不能有其他字符。

17、C語言中char類型數據占字節數為()。

A、3

B、4

C、I

D、2

標準答案:C

知識點解析:char類型數據占1個字節。

18、下列關系表達式中,結果為“假”的是()。

A、(3+4)>6

B、(31=4)>2

C、3<=4II3

D、(3<4)=1

標準答案:B

知識點解析:在一個表達式中,括號的優先級高,先計算3!=4,為真印1,>2為

假。

19、若以下選項中的變量全部為整型變量,且已正確定義并賦值,則語法正確的

switch語句是()。

A、switch(a+9){easecl:y=a—b;casec2:y=a+b;)

B、switcha*b{case10:x=a+b;default:y=a—b;}

C>switch(a+b){easel.case3:y=a+b;breakcasecase3DreaK;caseO:case4:

y=a—b;)

D、switch(a*a+b*b){default:break;case3:y=a+b;break;case2:y=a-b:

break;}

標準答案:D

知識點解析:選項A,當cl和c2相等時,不成立;選項B,a*b要用括號括起

來:選項C,case與后面的數字用空格隔開。

20、有以下程序:#includemain(){inta=-2,b=0;while(a++&&++b);

prinff("%d,%d\n”,a,b);}程序運行后的輸出結果是()。

A、1.3

B、0,2

C、0,3

D、1,2

標準答案:D

知識點解析:考查while循環以及自加運算,其中a++是a先參與運算再自加1,

而++b是b先自加1再參與運算。第一次進入循環:a的值是一2,b的值是0,判

斷條件為一2&&1,2個值都是非零,while判斷條件成立,接著進入第二次循環。

這時a的值是一1,b的值是1,判斷條件即為一1&&2,表達式的值為真,進入

第三次循環。這時a的值是0,b的值是2,判斷條件為0&&3,與運算左邊的值為

0,即判斷為假。此時跳出循環,執行prinff語句,這時a的值是1,b的值是2。

21、有以下程序:#includemain(){inta[]={2,4,6,8},*P=a,i;for(i=0;

i<4;i++)a[i]=*P++;printfr%d\n,\a[2]);}程序運行后的輸出結果是()。

A、2

B、8

C、4

D、6

標準答案:D

知識點解析:本題通過語句"*p=a”將一維數組a的首地址的值賦值給變量p,即p

的值為2。執行for循環,a[i]=*p++,表示將p的值賦給a[i]后,再進行++操作。

因此4次循環后a[2]的值為6。故D選項正確。

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

A、可以用關系運算符比較字符串的大小

B、空字符串不占用內存,其內存空間大小是0

C、兩個連續的單引號是合法的字符常量

D、兩個連續的雙引號是合法的字符串常量

標準答案:D

知識點解析:比較兩個字符串大小用函數strcmp(st「l,str2),空字符串有結尾符,

所以也要占用字節,兩個雙引號表示地是空字符串。

23、有以下程序:includemain(){intilia[3][3]={{2},{4),{6}},i,

*P=&aa[0][0];for(i=0;i<2;i++){if(i==0)aa[i][i+l]=*P+l;else++P;printf("%

d”,*P);{printfCXiH;}程序運行后的輸出結臭是()。

A、26

B、23

C、43

D、46

標準答案:B

知識點解析:本題主耍考查指針與數組。觀察題目,可以發現,*p=&aa⑼⑼語句

實際是將數組aa的首地址賦給指針變量p,將i的值帶入for循環中,i=0時,

aa[0]|l]=3,*p=2,加輸出地是指針所指向的數組值,此時p所指向地是aa⑼⑼,

輸出2,而i=l時執行了++p操作,使指針向后移動指向所以在輸出*P

時應為3。故B選項正確。

24、有以卜程序:#includeintf(intx){returnx*x+l:}voidmain(){inta,b=0;

for(a=0;a<3;a++){b=b+f(a);putchar('A'+b);}printf("\n");}程序運行后的

輸出結果是()。

A、ABE

B、BDI

C、BCF

D、BCD

標準答案:B

知識點解析:第一次循環時,b=l,輸出結果為B;第二次循環時,b=3,輸出結

果為D;第三次循環時,b=8,輸出結果為I。

25、以下選項中,能正確進行字符串賦值的是()。

A、char*s=''ABCDE”;

B、chars[5]={'A','B','C',D,E};

<<,,

C、chars[4][5]={ABCDE};

D^char*s;gct(s);

標準答案:A

知識點解析:本題考查字符數組的初始化。B選項中賦值號右側是賦值給一個字符

串數組,而左邊是一個字符數組,所以錯誤;C選項中字符串包含6個字符,所以

不能賦值給左邊只能存放5個字符的字符串數組中。D選項gets函數中參數需要指

定長度。故A選項正確。

26、有以下程序:#includeintfun(intx){intP;if(x==OIIx==l)return3;P=x—

fun(x—2);return(P);}main。{printf("%d\n”,fun(9));}程序運行后的輸出

結果是()。

A、4

B、5

C、9

D、7

標準答案:D

知識點解析:本題考查函數的遞歸調用c執行fun(9)后,fun(9)=9—(7—(5—(3-

f(l))))=7,故D選項正確。

27、有以下程序:#includemain(){inta[]={10,20,30,40),*P=a,i;for(i=0;

i<=3;i++){a[i]=*p;P++;}prinff("%d\n",a[2]);}程序運行后的輸出結果是

()o

A、30

B、40

C、10

D、20

標準答案:A

知識點解析:for循環結束后,數組a的值并沒有變化,由于數組是由0開始,所

以a⑵的值是30。

28、有以下程序:#include#defineN3voidfun(inta|]|N],intb[]){inti,j;

for(i=0;i<=2;i++){intmax=a[i][0];for(j=i;j<=2;j++)if(max

A、2,4,8,

B、3,6,9,

C、3,5,7,

D、1,3,5,

標準答案:B

知識點解析:fun函數功能是把數組a的每一行的最大值賦給b,a的第一行的最大

值是3,第二行的最大值是6,第三行的最大值是9,所以答案是3,6,9,o

29、有以F程序:#includeintfun(char*s){char*P=S:while(*P++!='\O');

return(P—s);}main。[char*r="01234";printf("%d\n”,fun(r));}程序的運行

結果是()。

A、6

B、5

C、4

D、3

標準答案:A

知火點解析:程序執行過程為:定義字符串指制r,并為其初始化為“01234、調用

函數fun(r),將指針傳入函數while循環找到字符串的結束符地址,然后使這個指

針指向結束符下一個單元,結束循環。返回字符串首地址與結束符下一個地址之

差,也即是字符串長度加1。輸出地址差為6。

30、以下選項中,合法的是()。

A、charstr3[]={'d','e','b','u','g',,0'};

B、charstr4:str4="helk)world”;

C、charnameflO];nam3="china”;

D、charstrl[5]=*tpass,\str2[6]:str2=strl:

標準答案:A

知識點解析:選項B不能把一個字符串賦值給一個字符變量,選項C和D犯了同

樣的錯誤是把字符串賦給了數組名。

31、有以下程序段:inifun(char*s){char*P;P=s:if(*s==O)return0;

while(*++P);return(P—S);}該段程序是用來()。

A、計算字符串所占字節數

B、實現字符串的賦值

C、計算字符串的長度

D、將字符串逆序存放

標準答案:C

知識點解析:在fun()函數中定義了指針p,首先把s地址賦給p,再通過while函

數移動指針P,當p指針指向單元為。時,退出while循環,返回此時p和s地址

之差,即字符串長度。

32、有以下程序:#includevoidmain(){chara[5][10]={t4oneM,"two”,"three”,

"fbur",“five”};inti,j;chart;for(i:0;i<5;i++)for(j=i+l;j<4;j++)

if(a[i][O]>a[j][O]){t:a[i][0];a[i][O]=aU][O];aU][O]=t;puts(a[l]);})程序運行

后的輸出結果是()。

A、twoowo

B、fixowo

C、twofov

D、owooff

標準答案:A

知識點解析:for循環完成的功能是把二維數組a的第一列的字母按從小到大排

序,其他列的字母不變。

33、有以下程序:#includeinta=l,b=2;voidfunl(inta,intb){prinff("%d%d”,

a,b);}voidfun2(){a=3.b=4;)voidmain(){funl(5,6);fun2();prinff(44%

d%d\n”,a,b);}程序運行后的輸出結果是()。

A、1256

B、5634

C、5612

D、3456

標準答案:B

知識點解析:funl是輸出局部變量的值,fun2是把全局變量的值改成3,4,所以

輸出結果是5634。

34、有以下程序:#includevoidfunc(intn){staticintnum=l;num=num+n;

primf("%d”,num);)main(){func(3);func(4);prinff("\n");}程序運行后的

輸出結果是()。

A、48

R、34

C、35

D、45

標準答案:A

知識點解析:第一次調用func函數時輸出4,第二次調用func函數時num值并不

會釋放,仍然是上次修改后的值4,第二次調用結果為8,所以輸出結果是48。

35、有以下程序:#include#includevoidfun(int*pl,int*p2,int*s)

{s=(int*)malloc(sizeof(int));*s=*pl+*p2:free(s);)voidmain(){inta=l,

b=40,*q=&a:fun(&a,&b,q);printf("%d\n",*q);}程序運行后的輸出結

果是()。

A、42

B、0

C>1

D、41

標準答案:C

知識點解析:fun函數功能是新開辟內存空間存放a和b的地址,q的地址并沒有

變化,所以應該還是指向地址a。

36、有以卜程序:#includestructSTU{charname|9|;charsex;intscore|2];);

voidf(structSTUa[]){structSTUb={4tZhaon,'m',85,90);a[l]=b;}main()

{structSTUc[2]={{"Qian”,*f,95,92},{“Sun”,,m,,98,99}};f(c);

printR"%s,%c,%d,%d,”,c|0|.nanle,c|0].sex,c|0|.score|0],

c[0].score[l]);prinff(u%s,%c,%d,%d\n",c[l].name,c[l].sex,

cLIJ.scoreLOJ,c[lj.scorcLIJ);)程序運行后的輸出結果是()。

A、Zhao,m,85,90,Sun,m,98,99

B、Zhao,m,85,90,Qian,f,95,92

C、Qian,f,95,92,Sun,m,98,99

D、Qian,f,95,92,Zhao,m,85,90

標準答案:D

知識點解析:fun函數是為結構體數組的第二個數賦值,數組的第一個數沒有變

化,所以正確答案應選D。

37、以下針對全局變量的敘述中錯誤的是()。

A、用extern說明符可以限制全局變量的作用域

B、全局變量是在函數外部任意位置上定義的變量

C、全局變量的作用域是從定義位置開始至源文件結束

D、全局變量的生存期貫穿于整個程序的運行期間

標準答案:A

知識點解析:在不同編譯單位內用extern說明符來擴展全局變量的作用域,extern

可以將全局變量作用域了展到其他文件,而不是限制全局變量的作用域,故選A。

38、以下關于宏的敘述中錯誤的是()。

A、宏名必須用大寫字母構成

B、宏替換不具有計算功能

C、宏替換不具有計算功能

D、宏替換不占用運行時間

標準答案:A

知識點解析:宏名習慣采用大寫字母,以便與一般變量區別,但是并沒有規定一定

要用大寫字母,故選A。

39、若有定義語句intb=2;,則表達式(b<<2)/(3IIb)的值是()。

A、4

B、8

C、0

D、2

標準答案:B

知識點解析:2的二進制數為010,左移兩位后的二進制數為01000,轉成二制數

為8,(3II2)為真即1,8/1=8,所以結果為8。

40、有以下程序:includemain(){HLE*fp;inti,aE6]={l,2,3,4,5,6);

fp=fbpen(tkd2.dat”,"W+");for(i=0;i<6;i++)fprintf(fp,"%d\n",a|i|);

rewind(fp);for(i=0;i<6;i++)fscanf(fp,"%d”,&aE5一i]);fclose(fp);

for(i=0;i<6;i++){prinff("%d,”,a[i]);}prinff("\}程序運行后的輸出結

果是()。

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

B、1,2,3,3,2,1,

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

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

標準答案:D

知識點解析:這是對文件的操作,把數組的數寫到文件里,然后再從文件里倒序讀

出。所以輸出結果為6,5,4,3,2,1,o

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

卷第2套

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

1、以下關于宏的敘述中正確的是

A、宏替換沒有數據類型限制

B、宏定義必須位于源程序中所有語句之前

C、宏名必須用大寫字母表示

D、宏調用比函數調用耗費時間

標準答案:A

知識點解析:宏定義寫在函數的花括號外邊,作用域為其后的程序,通常在文件的

最開頭,所以B)選項中宏定義必須位于源程序中所有語句之前是錯誤的。宏名一

般用大寫,但不是必須用大寫,所以C選項錯誤。宏展開不占運行時間,只占編

譯時間,函數調用占運行時間(分配內存、保留現場、值傳遞、返回值),所以D選

項錯誤。

2、下列數據結構中,能夠按照“先進后出”原則存取數據的是

A、循環隊列

B、棧

C、隊列

D、二叉樹

標準答案:B

知識點解析:棧是按先進后出的原則組織數據的。隊列是先進先出的原則組織數

據。

3、對于循環隊列,下列敘述中正確的是

A、隊頭指針是固定不變的

B、隊頭指針一定大于隊尾指針

C、隊頭指針一定小于隊尾指針

D、隊頭指針可以大于隊尾指針,也可以小于隊尾指針

標準答案:D

知識點解析:循環隊列的隊頭指針與隊尾指針都不是固定的,隨著入隊與出隊操作

要進行變化。因為是循環利用的隊列結構所以對頭指針有時可能大于隊尾指針有時

也可能小于隊尾指針。

4、算法的空間復雜度是指

A、算法在執行過程中所需要的計算機存儲空間

B、算法所處理的數據量

C、算法程序中的語句或指令條數

D、算法在執行過程中所需要的臨時工作單元數

標準答案:A

知識點解析:算法的空間復雜度是指算法在執行過程中所需要的內存空間。所以選

擇A。

5、軟件設計中劃分模塊的?個準則是

A、低內聚低耦合

B、高內聚低耦合

C、低內聚高耦合

D、高內聚高耦合

標準答案:B

知識點解析:一般較優秀的軟件設計,應盡量做到高內聚,低耦合,即減弱模塊之

間的耦合性和提高模塊內的內聚性,有利于提高模塊的獨立性。

6、下列選項中不屬于結構化程序設計原則的是

A、可封裝

B、自頂向下

C、模塊化

D、逐步求精

標準答案:A

知識點解析?:結構化程序設計的思想包括:自頂向下、逐步求精、模塊化、限制使

用goto語句,所以選擇A。

7、下列數據結構中,屬于非線性結構的是

A、循環隊列

B、帶鏈隊列

C、二叉樹

D、帶鏈棧

標準答案:C

知識點解析:樹是簡單的非線性結構,所以二叉樹作為樹的一種也是一種非線性結

構。

8、數據庫管理系統是

A、操作系統的一部分

B、在操作系統支持下的系統軟件

C、一種編譯系統

D、一種操作系統

標準答案:B

知識點解析:數據庫管理系統是數據庫的機構,它是一種系統軟件,負責數據庫中

數據組織、數據操縱、數據維護、控制及保護和數據服務等。是一種在操作系統之

上的系統軟件。

9、在E—R圖中,用來表示實體聯系的圖形是

A、橢圓形

B、矩形

C、菱形

D、三角形

標準答案:c

知識點0析:在E—R圖中實體集用矩形,屬性用橢圓,聯系用菱形。

10^若有定義語句:doublea,*p=&a;以下敘述中錯誤的是

A、定義語句中的*號是一個間址運算符

B、定義語句中的木號是一個說明符

C、定義語句中的p只能存放double類型變量的地址

D、定義語句中,*p=&a把變量a的地址作為初值賦給指針變量p

標準答案:A

知識點解析:在變量定義doublea,*p=&a;中,*號是一個指針運算符,而非

間址運算符,所以A錯誤。

11、以下關于結構化程序設計的敘述中正確的是

A、結構化程序使用goto語句會很便捷

B、在C語言中,程序的模塊化是利用函數實現的

C、一個結構化程序必笈同時由順序、分支、循環三種結構組成

D、由三種基本結構構成的程序只能解決小規模的問題

標準答案:B

知識點解析:濫用got。語句將使程序的流程毫無規律,可讀性差,對于初學者來說盡

量不要使用,所以A錯誤。一個結構化程序可以包含順序、分支、循環結構中的一

種或多種,所以C錯誤。由三種基本結構構成的程序可以解決任何復雜的問題,所以

D錯誤。

12、對于一個正常運行的C程序,以下敘述中正確的是

A、程序的執行總是從main函數開始,在程序的最后一個函數中結束

B、程序的執行總是從程序的第一個函數開始,在main函數結束

C、程序的執行總是從main函數開始

D、程序的執行總是從程序的第一個函數開始,在程序的最后一個函數中結束

標準答案:C

知識點解析:任何一個C程序都是從主函數main開始,至主函數main結束,所以選

擇C選項。

13、以下選項中能表示合法常量的是

A、1,200

B、1.5E2.0

C、

D、\007

標準答案:D

知識點解析:A選項中整型常量應表示為1200,不能包含”B選項中E后面的指

數必須為整數。C選項中轉義字符以開始,若要表示字符應寫為

14、以下定義語句中正確的是

A、inta=b=0;

B、charA=65+l,b=,b,;

C、floata=l,*b=&a,*c=&b;

D、doublea=0.0;b=1.1;

標準答案:B

知識點解析:A選項語句中b變量還沒有定義不能直接用于給a變量賦值。C選項

語句中*b、*c表示的是一個實型變量的地址,不能再將&b賦值給指針型變量已D

選項語句中a=0.0后面應該為逗號,不能是分號。

15、若變量x、y已正確定義并賦值,以下符合C語言語法的表達式是

A、x+l=y

++x,y=x—

C、x=x+10=x+y

D、double(x)/10

標準答案:B

知識點解析:A選項中不能將變量y賦給表達式,C選項中錯誤與A選項一樣,D選

項中強制類型轉換表達式應寫成(double)x/10。

16、若變量已正確定義為ini型,要通過語句scanf("%d,%d,%d",&a,&b,&c);給a賦

值1、給b賦值2、給c賦值3,以下輸入形式中錯誤的是(注:□代表一個空格

符)

A、123V回車〉

B、□□□1,2,3v回車,

C^1,口口口2,口口口3<回車〉

D、1口2口3<回車,

標準答案:D

知識點解析:scanf()的格式控制串可以使用其他非空白字符,如本題中的逗號,但在

輸入時必須輸入這些字符,以保證匹配。所以逗號必須輸入。

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

ASCII碼值為97)

A、printf("%c\n",匕'-32);

B、printf("%d\n"JA');

C、printf(H%c\n",65);

D、printf("%c\n",

標準答案:B

知識點解析:B選項輸出的格式為%d,即為整型格式,所以輸出字符A的ASCII碼值

65,而不是字符Ao由于大寫字母和其對應的小寫字母的ASCII碼值小32,所以A正

確。字符A的ASCII碼值就是65,所以以%c格式輸出可以輸出字符A,所以C正

確。由于字符A的ASCII碼值比字符B的小1,所以D正確。

18、若a是數值類型,則邏輯表達式(a==l)||(a!=l)的值是

A、1

B、0

C、2

D、不知道a的值,不能確定

標準答案:A

知識點解析:邏輯或”||”要求只要兩邊的運算對象有一個非零,結果就為真,雖然不知

道a的值,但是若a為1,則左邊運算對象為1,若a的值不是1,則右邊運算對象的值為

1,所以總能保證一邊非零,所以結果為真,即1。

19、設有定義:inta=l,b=2,c=3;以下語句中執行效果與其它三個不同的是

A、if(a>b)c=a,a=b,b=c;

B、if(a>b){c=a,a=b,b=c;J

C^if(a>b)c=a;a=b;b=c;

D、if(a>b){c=a;a=b;b=c;|

標準答案:C

知識點解析:由于a不小于b,所以所有選項中的條件都為假,A選項中實際執行了

a=b;b=c;兩個操作。而B,CD選項由于條件不成立,所以什么也沒有做,所以選擇C

選項。

20、有以下程序#includemain(){inty=10;while(y-);printf("y=%d\n",y);}程序執行

后的輸出結果是

A、y=0

B、y=-l

C、y=l

D^while構成無限循環

標準答案:B

知識點解析:執行y--直到值為0,由于y一是先用再減,所以退出循環時,y的值為-

lo

21、有以2程序#includemain(){inti,j;for(i=l;i<4:i++){for(j=i;j<

4;j++)printf(,,%d*%d=%d,',i,j,i*j);printf("\nM);}}程序運行后的輸出結果是

A、1*1=11*2=21*3=32*2=42*3=63*3=9

B、1*1=11*2=21*3=32*1=22*2=43*1=3

C、1*1=11*2=22*2=41*3=32*3=63*3=9

D、1*1=12*1=22*2=43*1=33*2=63*3=9

標準答案:A

知識點解析:外循環第一次i的值為1,內循環第一次j的初值為1,打印1*1=1,內循

環笫二次j的值為2,打印1*2=2,內循環笫三次j的值為3,打印1*3=3,打印回車換行,

退出內循環。外循環第二次i的值為2,內循環第一次j的初值為2,打印2*2=4,內循

環第二次j的值為3,打印2*3=6,打印回車換行,退出內循環。外循環第3次,i的值為

3,內循環第一次j的初值為3,打印3*3=9,打印回車換行,退出內循環。

22、有以卜.程序#includemain(){inti=5;do{if(i%3==l)if(i%5==2)

{printf(M*%d,',i);break;}i++;}while(i!=0);printf(”\n“);}程序的運行結果是

A、*2*6

B、*3*5

C、*5

D、*7

標準答案:D

知識點解析:do...while語句是先執行后判斷,所以第一次先執行循環體,判斷i%3=

=1的條件,由于i為5所以余數為2,條件不成立,執行i++,i的值為6,判斷while條件

為真,第二次執行循環體,同第一次循環體的執行過程一樣,i的值變為7,判斷while條

件為真,第三次執行循環體,此時i%3==1條件成立,判斷i%5==2也成立,打印*與i的

值,即*7,然后執行break語句,跳出循環。所以選擇D選項。

23有以下程序#inckidedoublef(doublex);main(){doublea=0;inti;for(i=0;i<

30;i+=10)a+=f((double)i);pnntf("%3.0f\n",a);}doublef(doublex){returnx*x+1;)程序

運行后的輸出結果是

A、500

B、401

C、503

D、1404

標準答案:C

知識點解析:本題重點考察函數的定義和調用,第一次循環,a=0,i=0;返回值

a=0*0+l=l;第二次循環,a=Li=10;返回值a=10*10+l+l=102;第三次循環,

a=102,i=20;返回值a=20*20+1+102=503;第四次循環,a=503,i=30;不符合i

<30,跳出循環,最后結果輸出a=50最

24、若有以下函數首部inifun(doublex[10|,inl*n)則下面針對此函數的函數聲明語句

中正確的是

A、mttun(doublc,int);

B、intfun(doubleint$);

C^intfun(double*x,intn);

D、intfun(doublcx,int*n);

標準答案:B

知識點解析:函數聲明的一般形式為:類型說明符被調函數名(類型形參,類型

形參…);或為:類型說明符被調函數名(類型,類型…);由于函數首部為int

fun(doublex|10],int*n),因此B選項正確。

25、有以下程序#includemain(){intm=1,n=2,*p=&m,*q=&n,*r;r=p;p=q;q=r;

printf(n%d,%d,%d,%d\nM,m,n,*p,*q);}程序運行后的輸出結果是

A、2,1,1,2

B、1,2,1,2

C>2,1,2/

D、1,2,21

標準答案:D

知識點解析:intm=l,n=2,*p=&m,*q=&n,*r;即指針變量p指向m,指針變量q指向

n,r=p;p=q;q=r;即通過指耳變量r,將指針p和指針q指向交換。因此最后輸出

1,2,2,1c

26、若有以下定義intx[10],*pt=x;則對x數組元素的正確引用是

A、pt+3

B、*&x[10]

C、*(pt+10)

D、*(x+3)

標準答案:D

知識點解析:沒有A選項的引用形式。*與&放在一起作用抵消,所以B選項錯

誤,最大只能引用到x[9]。*(pt+i)表示引用指針pt所指元素后的第i個元素,所以

C選項錯誤,最大只能為*(pt+9)。因此D選項正確。

27、有以F程序#includemain。{inti,s=0,t[]={123,4,5,6,7,8,9};for(i=0;iV

9;i+=2)s+=*(l+i);prinlf("%d\n”,s);}程序執行后的輸出結果是

A、20

B、25

C、45

D、36

標準答案:B

知識點解析:統計1~9九個數中的奇數和,此題考察指向數組的指針。C語言規定

數組名代表數組的首地址,也就是第一個元素的地址。因此*(t+i)代表數組的第i+1

個兀素。程序運行的結果是1+2+3+4+5+6+7+8+9=25。

28、有以下程序#inckide#defineN4voidfun(inta[][N],intb[]){inti;for(i=0;i<

N;i++)b[i]=a[i][i];}main(){inu[][N]={{1,2,3},{4},{5,6,7,8},{9,10}},y[N],i;fun(x.y);

for(i=0;i<N;i++)printf(',%d;,,y[i]);printf(',\nH);)程序的運行結果是

A、1,0,7,0,

B、123,4,

C、1,4,59

D、3,4,8,10,

標準答案:A

知識點解析:該程序首先在定義變量時,對二維數組x[]|N]進行賦值操作;調用函

數fun,函數fun的功能是將二維數組中的a[0][0]、a[l][l]>a⑵⑵和a[3][3]賦值給

一維數組。最后將一維數組1,070,輸出。

29、設有定義:charge;以下選項中能夠使c正確指向一個字符串的是

A、charstr[]="string";c=str;

B、scanf("%s",c);

C、c=getchar();

D、*c=Hstring";

標準答案:A

知識點解析:A選項為正確用法,先將字符中存于字符數組中,然后將數組名賦給

字符指針。(數組名代表數組首地址,定義數組時為其分配確定地址)。C選項錯

誤,gctchar。函數輸入個字符給字符型變量,而不是字符指針。B選項和D選項有

類似的錯誤,兩個選項并無語法錯誤,但運行時可能會出現問題。因為在B選項

和D選項中,字符指針沒有被賦值,是個不確定的值,指向一個不確定的內存區

域,這個區域可能存放有用的指令或數據。在這個不確定的區域重新存放字符串,

可能會發生無法預知的錯誤。因此A選項正確。

30、若有定義語句:chars[10]="1234567\0\0";則stiien(s)的值是

A、7

B、8

C、9

D、10

標準答案:A

知識點解析:s3en()函數:是計算字符串長度時,遇到結束標識為止,且長度不包

括結束標識。本題中字符串,從第一個字符開始,遇到第一個結束標識'\0、為止,

注意'\0'不占字符串長度,所以字符串長度為7。因此A選項正確。

31、有以卜程序#include#includemain()

{charp[20]={,a,;b\,c\,d,},q[]=,,abc,,,r[]="abcden;strcat(p,r);strcpy(p+strlen(q),q);

printf("%d\n",strlen(p));}程序運行后的輸出結果是

A、11

B、9

C、6

D、7

標準答案:C

知識點解析:strcpy:字符串拷貝函數:strlen:求字符串長度函數(注意:不包含

字符串結束標記字符'\0');strcat:字符串連接函數。執行完語句strcat(p,r);后,p

數組中存儲的元素為a,b,c,d,a,b,c,d,e;執行語句strcpy(p+strlen(q),q);得到的結果

是將q所指向的字符串拷貝至p+sirlen(q)開始的存儲位置,因為strlen的值為

3,即p+3開始存儲q中的元素。所以執行完strcpy(p+strlen(q),q)語句后,字符數

組p[20]的存儲元素%a、b,c,a,b,c;所以slrlen(p)的結果為6。因此C選項正確。

32、有以下程序(說明:字母A的ASCH碼值是65)includevoidfun(chads)

{while(*s){if(*s%2)printf(M%c",*s);s++;))main(){chara[]=,'BYTE";fun(a);

printf("\n-);)程序運行后的輸出結果是

A、BT

B、YE

C、YT

D、BY

標準答案:B

知識點解析:本題中執行fun(a)時,會取a的第一個字母B,因為B的ASCII碼為

66,所以不會輸出B,函數只會輸出ASCII碼為奇數的字母,Y的ASCII碼為

89,T的ASCH碼為84,E的ASCH碼為69。因此B選項正確。

33、有以下程序#includeintfun()(staticintx=l;x+=l;returnx;}main(){inti,s=l;

for(i=l;i<=5;i++)s+=fun();printf(',%d\n,,,s);}程序運行后的輸出結果是

A、120

B、11

C、6

D、21

標準答案:D

知識點解析:fun函數中的變量x為靜態局部變量,占用固定的內存單元,下一次

調用時仍可以保留上次調用時的值。也就是說,如果多次調用fun函數,x的定義

只在第一個調用時有效,從第二次調用開始,x的定義相當于不存在,直接使用上

次x的值。fun函數被調用了5次,每次調用后的返回值累加到s上。5次調用后,

x的值為6,s的值為21。因此D選項正確。

34、有以下程序#includevoidfun2(chara,charB){printf("%c%c",a,b);}

chara=,A;b=,B,;voidfun1(){a=,C,;b='D';}main(){fun1();printf("%c%cu,a,b);

fun2CE:F);}程序的運行結果是

A、ABEF

B、CDEF

C、ABCD

D、CDAB

標準答案:B

知識點解析:本題考察的是變量的作用范圍。如果在同一個源文件中,外部變量與

局部變量同名,則在局部變量的作用范圍內,外部變量被“屏蔽”,即不起作用。本

題中,在funl()和main()函數內訪問的是全局變量a和b,在中n2()函數中訪問的

是形參變量a和b。所以,main。函數中的printf()函數輸出的是在函數中被

改變的全局變量a和b的值CD,而fun2()函數中輸出的是傳遞給它的實參值EF。

因此B選項正確。

35、以下關于typedef的敘述錯誤的是

A、用typedef可以增加新類型

B、typedef只是將已存在的類型用一個新的名字來代表

C、用typedef可以為各種類型說明一個新名,但不能用來為變量說明一個新名

D、用typedef為類型說明一個新名,通常可以增加程序的可讀性

標準答案:A

知識點解析:typedef并不是增加了新類型,而是用一個新名字替代已存在的類

型,不能為變量說明一個新名,使用typedef可以增強移植性。所以A選項錯誤。

36、有以下程序#include#defineS(x)4*(x)*x+lmain(){intk=5j=2;

printf("%d\n",S(k+j));}程序運行后的輸出結果是

A、33

B、197

C、143

D、28

標準答案:C

知識點解析:本題考查帶參數的宏定義,S為帶參數的宏定義,運行S(k+j)為

4*(k+j)*k+j+l=143,選項C正確。

37、若有以下程序段inn-8;輸出結果是

A、16

B、8

C、4

D、2

標準答案:c

知識點0析:本題考查位運算,屬于基礎知識,題目中將整型變量8,二進制表達

為00001000,右移一位為00000100,即4,選項C正確。

38、以下敘述中錯誤的是

A、gets函數用于從終端讀入字符串

B、getchar函數用于從磁盤文件讀入字符

C、fpuls函數用于把字符串輸出到文件

D、fwrite函數用于以二進制形式輸出數據到文件

標準答案:B

知識點解析:本題考查字符處理函數和文件做操函數,屬于基礎知識,其中B選

項getchar是用于從終端讀入字符。

39、有以下程序#includemain(){FILE*pf;char*s1="China,\*s2="Bcijingn;

pf=fopen(”abc.dat",“wb+");fwrite(s2,7,1,pf);rewind(pf);/*文件位置指針回到文件開頭

*/fwrite(sl,5,l,pf);fclose(pf);)以上程庠執行后abc.dat文件的內容是

A、China

B、Chinang

C、ChinaBeijing

D、BcijingChina

標準答案:B

知識點解析:本題考查文件操作函數,fwrite和rewind函數,題目中先是將s2字

符串寫入adc.dat中,然后將寫指針回到文件開頭,然后寫入si字符串,那么si字

符串就將前五個字符覆蓋,所以最終結果為Chinang,選項B正確。

40、以下敘述中正確的是

A、邏輯“或“(即運算符||)的運算級別比算術運算要高

B、C語言的關系表達式:0<*<10完全等價于:(0〈乂)&&儀<10)

C、邏輯“非“(即運算符!)的運算級別是最低的

D、由&&構成的邏輯表達式與由||構成的邏輯表達式都有“短路”現象

標準答案:D

知識點解析:B選項中,(x>0)&&(x<10)的值是1或0,條件是x>0并且XV10。但

是0

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

卷第3套

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

1、下列敘述中正確的是

A、一個算法的空間復雜度大,則其時間復雜度也必定大

B、一個算法的空間復雜度大,則其時間復雜度必定小

C、一個算法的時間復雜度大,則其空間復雜度必定小

D、算法的時間復雜度與空間復雜度沒有直接關系

標準答案:D

知識點解析:算法的空間復雜度是指算法在執行過程中所需要的內存空間,算法的

時間復雜度,是指執行算法所需要的計算工作量,兩者之間并沒有直接關系,答案

為D。

2、下列敘述中正確的是

A、循環隊列中的元素個數隨隊頭指針與隊尾指針的變化而動態變化

B、循環隊列中的元素個數隨隊頭指針的變化而動態變化

C、循環隊列中的元素個數隨隊尾指針的變化而動態變化

D、以上說法都不對

標準答案:A

知識點解析:在循環隊列中,用隊尾指針rear指向隊列中的隊尾元素,用排頭指

針front指向排頭元素的前一個位置。因此,從排頭指針front指向的后一個位置直

到隊尾指制rear指向的位置之間所有的元素均為隊列中的元素。所以循環隊列中

的元素個數與隊頭指針和隊尾指針的變化而變化,A正確。

3、一棵二又樹中共有80個葉子結點與70個度為1的結點,則該二義樹中的總結

點數為

A、219

B、229

C、230

D、231

標準答案:R

知識點解析:二叉樹中,度為0的節點數等于度為2的節點數加1,即n2=n0-l,

葉子節點即度為0,則n2=79,總結點數為n0+nl+n2=80+70+79=229,答案為B。

4、對長度為10的線性表進行冒泡排序,最壞情況下需要比較的次數為

A、9

B、10

C、45

D、90

標準答案:C

知識點解析:冒泡法是在掃描過程中逐次比較相鄰兩個元素的大小,最壞的情況是

每次比較都要將相鄰的兩個元素互換,需要互換的次數為

9+8+7+6+5+4+34-2+1=45,選C。

5、構成計算機軟件的是

A、源代碼

B、程序和數據

C、程序和文檔

D、程序、數據及相關文檔

標準答案:

知識之解析D:軟件指的是計算機系統中與硬件相互依賴的另一部分,包括程序、數

據和有關的文檔,選D。

6、軟件生命周期可分為定義階段、開發階段和維護階段,下面不屬于開發階段任

務的是

A、測試

B、設計

C、可行性研究

D、實現

標準答案:C

知識點解析:開發階段包括分析、設計和實施兩類任務。其中分析、設計包括需求

分析、總體設計和詳細設計3個階段,實施則包括編碼和測試兩個階段,C不屬于

開發階段。

7、下面不能作為結構化方法軟件需求分析工具的是

A、系統結構圖

B、數據字典(DD)

C、數據流程圖(DFD圖)

D、判定表

標準答案:A

知識點解析:結構化方法軟件需求分析工具主要有數據流圖、數據字典、判定樹和

判定表。

8、在關系模型中,每一個二維表稱為一個

A、關系

B、屬性

C、元組

D、主碼(鍵)

標準答案:A

知識點解析:關系模型采用二維表來表示,即每個二維表稱為一個關系。

9、若實體A和B是一對多的聯系,實體B和C是一對一的聯系,則實體A和C

的聯系是

A、一對一

B、一對多

C、多對一

D、多對多

標準答案:B

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

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

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

以為一對多聯系。

10、有三個關系R,S和T如下:區則由關系R和S得到關系T的操作是

A、選擇

B、差

C、交

D、并

標準答案:D

知識點解析:關系T中的元素與關系R和關系S中不同元素的總和,因此為并操

作。

11、以下敘述中正確的是

A、C語言程序所調用的函數必須放在main函數的前面

B、C語言程序總是從最前面的函數開始執行

C、C語言程序中main函數必須放在程序的開始位置

D、C語言程序總是從main函數開始執行

標準答案:D

知識點解析:C語言所調用的函數可以放在調用它的函數前,也可以放在調用它的

函數后,所以A錯誤,C語言程序總是從main函數開始執行,所以B錯誤,main函

數的位置可以放在開始也可以放在中間,也可以放在最后,所以C錯誤。

12、C語言程序中,運算對象必須是整型數的運算符是

A、&&

B、/

C、%

D、*

標準答案:C

知識點解析:%取余運算是二目運算符,且要求運算對象必須為整數,所以選Co

13、有以卜程序#includemain(){intsum,pad,pAd;sum=pad=5;pAd=++sum,

pAd++,++pad;printf("%d\nM,pad);}程序的輸出結果是

A、5

B、6

C、7

D、8

標準答案:B

知識點解析:C語言區分大小寫,pad與pAd是兩個不同的變量,首先將5賦值給兩

個變量,由于賦值運算符的優先級高于逗號運算符,所以計算pAd=++sum,此時pAd

為6,sum也為6,然后計算pAd++,pAd的值變為7,++pad,pad的值變為6,所以選擇

Bo

14、有以下程序#inckidemain(){inta=3;a+=a-=a*a;printf("%d\nH,a);)程序的輸

出結果是

A、0

B、9

C>3

D、-12

標準答案:D

知識點解析:首先計算a*a結果為9,執行a=a-9,a的值為-6,然后執行a+=a,即

a=a+a=-6+(-6),所以值為-12。

15、sizeof(double

A、一個整型表達式

B、一個雙精度型表達式

C、一個不合法的表達式

D、一種函數調用

標準答案:A

知識點解析:sizeof是C語言中的一個操作符(operator),不是函數調用,簡單的說其

作用就是返回一個對象或者類型所占的內存字節數,所以選擇A。

16、有以下程序#includemain(){inta=2,c=5;printf("a=%%d,b=%%d\n'\a,c);)程

序的輸出結果是

A、a=2,b=5

B、a=%2,b=%5

C、a=%d,b=%d

D、a=%%d,b=%%d

標準答案:C

知識點解析:C語言中用“%%”打印輸出字符“%”,所以%%由輸出為%d兩個普通字

符,而不是格式控制符"%d”的含義,所以打印結果為C。

17、若有定義語句:chara=382,;則變量a

A、說明不合法

B、包含1個字符

C、包含2個字符

D、包含3個字符

標準答案:A

知識點解析:定義語句:(±@悌=,\82,;定義字符變量@,但是賦初值時卻給賦值字符

常量,因此A選項正確。

18、有以下程序#includemain。{charc1=,A\c2=*Y\printf(0%d,%d\nu,c1,c2);}

程序的輸出結果是

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

B、65,89

C、65,90

D、A,Y

標準答案:B

知識點解析:本題重點考察字符變量的相關知識。分別給字符型變量a和b分別賦

值為W和,Y:即A和Y的ASSCH碼,因此輸出結果為65,89,因此B選項正

確。

19>若變量已正確定義for(x=0,y=0;(y!=99&&x<4);x++)則以上for循環

A、執行3次

B、執行4次

C、執行無限次

D、執行次數不定

標準答案:B

知識點解析:本題重點考察for語句的循環次數,fur(x=0,y=0;(y!=99&&xV

4);x十十),y!=99&&x<4即循環條件當y不等于99以及xV4時,執行循環語句,

當有一個條件不成立時,均結束循環,因此循環4次,B選項正確。

20、對于while(!E)s;,若要執行循環體s,則E的取值應為:

A、E等于1

B、E不等于0

C、E不等于1

D、E等于0

標準答案:D

知識點解析:while語句的一般形式為:while(表達式)語句:其中表達式是循環條

件,語句為循環體。while語句的語義是:計算表達式的值,當值為真(非0)時,

執行循環體語句。該題中如要執

溫馨提示

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

評論

0/150

提交評論