2021年內(nèi)蒙古自治區(qū)鄂爾多斯市全國計算機(jī)等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第1頁
2021年內(nèi)蒙古自治區(qū)鄂爾多斯市全國計算機(jī)等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第2頁
2021年內(nèi)蒙古自治區(qū)鄂爾多斯市全國計算機(jī)等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第3頁
2021年內(nèi)蒙古自治區(qū)鄂爾多斯市全國計算機(jī)等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第4頁
2021年內(nèi)蒙古自治區(qū)鄂爾多斯市全國計算機(jī)等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021年內(nèi)蒙古自治區(qū)鄂爾多斯市全國計算機(jī)等級考試C語言程序設(shè)計預(yù)測試題(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.以下說法錯誤的是()。

A.C語言標(biāo)識符中可以有多個字母、數(shù)字和下劃線字符

B.C語言標(biāo)識符中下劃線字符可以出現(xiàn)在任意位置

C.C語言標(biāo)識符不能全部由數(shù)字組成

D.C語言標(biāo)識符必須以字母開頭

2.設(shè)x=011050,則x=x&01252的值是()。A.0000001000101000

B.1111110100011001

C.0000001011100010

D.1100000000101000

3.數(shù)據(jù)在計算機(jī)存儲器內(nèi)表示時,如果元素在存儲器中的相對位置能反映數(shù)據(jù)元素之間的邏輯關(guān)系,則稱這種存儲結(jié)構(gòu)為()。

A.存儲結(jié)構(gòu)B.邏輯結(jié)構(gòu)C.順序存儲結(jié)構(gòu)D.鏈?zhǔn)酱鎯Y(jié)構(gòu)

4.

5.若有定義:floatx=1.5;inta=1.b=3.c=2;則正確的switch語句是()。A.

B.

C.

D.

6.有下列程序:

intfun(intn)

{if(n==1))returnl;

else

return(n+fun(n-1)):

}

main()

{intx;

seanf("%d",&x);x=fun(x);printf("%d\n",x);

}

執(zhí)行程序時,給變量x輸入l0,程序的輸出結(jié)果是()。

A.55

B.54

C.65

D.45

7.有以下程序:main(){intk=5,n=0;do{switch(k){case1:case3:n+=l;k--;break;defalut:n=0;k--;case2:case4:n+=2;k--;break:}printf("%d",n);}while(k>0&&n<5);}程序運行后的輸出結(jié)果是()。A.235B.0235C.02356D.2356

8.

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

A.5E2.0B.E-3C.2.00E+00D.1.3E

10.下列程序的輸出結(jié)果是()。#include<stdio.h>intb=2:intfunc(int*a){b+=*a;returnb;}main{inta=1,t=2;t+=func(&a):printf("%d\n",t);}A.4B.5C.6D.8

11.有下列程序:main(){char*P[]={"3697","2584");inti,j;longnum=0;for(i=0;i<2;i++){j=0;while(p[i][j]!=\0){if((p[i][j]-t\0)%2)num=10*num+p[j][j]-0;j+=2;}}printf("%d\n",num);}程序執(zhí)行后的輸出結(jié)果是()。A.35B.37C.39D.3975

12.已知待排序的n個元素可分為n/k個組,每個組包含k個元素,且任一組內(nèi)的各元素均分別大于前一組內(nèi)的所有元素和小于后一組內(nèi)的所有元素,若采用基于比較的排序,其時間下界應(yīng)為()A.O(nlog2n)B.O(nlog2k)C.O(klog2n)D.O(klog2k)

13.在一個有頭結(jié)點的鏈隊列中,假設(shè)f和r分別為隊首和隊尾指針,則插入s所指的結(jié)點的運算是()。

A.f->next=s;f=s;

B.r->next=s;r=s;

C.s->next=r;r=s;

D.s->next=f;f=s;

14.以下程序的輸出結(jié)果是main(){intc=35;printf("%d\n",c&c);}

A.0B.70C.35D.1

15.若在線性表中采用折半查找法查找元素,該線性表應(yīng)該()A.元素按值有序B.構(gòu)采用順序存儲結(jié)C.元素按值有序且采用順序存儲結(jié)構(gòu)D.元素按值有序且采用鏈?zhǔn)酱鎯Y(jié)構(gòu)

16.

17.若一棵二叉樹具有10個度為2的結(jié)點,5個度為1的結(jié)點,則度為0的結(jié)點的個數(shù)是()。

A.9B.11C.15D.不能確定

18.有下列程序段:

intk=0,a=1,b=2,c=3;

k=a<b?b:a;k=k>C?C:k;

執(zhí)行該程序段后,k的值是()。

A.3B.2C.1D.0

19.設(shè)以下變量均為int類型,表達(dá)式的值不為7的是A.(x=y=6,x+y,x+1)

B.(x=6,x+1,y=6,x+y)

C.(x=y=6,x+y,y+1)

D.(y=6,y+1,x=y,x+1)

20.對長度為n的線性表排序,在最壞情況下,比較次數(shù)不是n(n-1)/2的排序方法是()。

A.快速排序B.冒泡排序C.直接插入排序D.堆排序

二、2.填空題(20題)21.下列程序的運行結(jié)果為【】。

main(){inti=lO,*p,*func();

p=&i;

printf("%d",*p);

p=func(p);

printf("%d\n",*p)

}

int*func(px);

int*px;

{inttemp=20;

px=&temp;

return(px);

}

22.執(zhí)行下面程序段后,k的值是【】。

r=1;n=203;k=1

do}k*=n%10*r;n/=10;r++;}while(n);

23.下面程序的運行結(jié)果是:【】。

#defineN10

#defines(x)x*x

#definef(x)(x*x)

main()

{inti1,i2;

i1=1000/s(N);i2=1000/f(N);

printf(“%d%d\n”,i1,i2);

}

24.選擇程序中的輸入輸出語句,以滿足題目給定的輸入輸出數(shù)據(jù)形式。

main()

{inta;floatb;

【】

【】}

輸入形式:3.52<空格>6<回車>

輸出形式:a*b=21.12

25.函數(shù)pi的功能是根據(jù)以下近似公式求π值:

(π*π)/6=1+1/(2*2)+1/(3*3)+...+1(n*n)

現(xiàn)在請你在下面的函數(shù)中填空,完成求π的功能。

#include"math.h"

{doubles=0.0;longi;

for(i=1;i<=n;i++)s=s+【】;

return(sqrt(6*S));

}

26.數(shù)據(jù)結(jié)構(gòu)分為邏輯結(jié)構(gòu)與存儲結(jié)構(gòu),線性鏈表屬于【】。

27.數(shù)據(jù)結(jié)構(gòu)包括數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的【】以及對數(shù)據(jù)的操作運算。

28.在先左后右的原則下,根據(jù)訪問根結(jié)點的次序,二叉樹的遍歷可以分為三種;前序遍歷、【】遍歷和后序遍歷。

29.下列程序的輸出結(jié)果是【】。

main()

{inta=1,b=2;

a=a+b;b=a-b,a=a-b;

printf("%d,%d\n",a,b);

}

30.棧的3種基本運算是:入棧、退棧和______。

31.下面程序把從終端讀入的文本(用@作為文本結(jié)束標(biāo)志)輸出到一個名為bi.dat的新文件中,請?zhí)羁铡?/p>

#include"stdio.h"

FILE*fp;

main()

{charch;

if((fp=fopen(【】))==NULL)exit(0);

while((ch=getchar())!='@')fputc(ch,fp);

fclose(fp);

}

32.有以下程序片段,請問執(zhí)行后的輸出結(jié)果是【】。

intn=10;

while(n>7)

{printf("%d",n--);

}

33.以下程序中,fun()函數(shù)的功能是求3行4列二維數(shù)組每行元素中的最大值,請?zhí)羁铡?/p>

voidfun(int,int,int(*)[4],int*);

main()

{inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;

fun(3,4,a,b);

for(i=0;i<3;i++)printf("%4d",b[i]);

printf("\n");

}

voidfun(intm,intn,intar[][4],int*br)

{inti,j,x;

for(i=0;i<m;i++)

{x=ar[i][0];

for(j=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];

______=x;

}

}

34.下列程序的輸出結(jié)果是______。

main()

{inta[]={31,27,20,12,6,1},*p=a;

p++;

printf("%d\n",*(p+2));

}

35.下列程序執(zhí)行后輸出的結(jié)果是【】。

main()

{intarr[10],i,k=0;

for(i=0;i<10;i++)arr[i]=i;

for(i=1;i<4;i++)k+=arr[i]+i;

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

}

36.若有以下定義,則不移動指針p,且通過指針p引用值為98的數(shù)組元素的表達(dá)式是______。

intw[10]={23,54,10,33,47,98,72,80,61},*p=w;

37.在數(shù)據(jù)庫理論中,數(shù)據(jù)庫總體邏輯結(jié)構(gòu)的改變,如修改數(shù)據(jù)模式、增加新的數(shù)據(jù)類型、改變數(shù)據(jù)間聯(lián)系等,不需要修改相應(yīng)的應(yīng)用程序,稱為【】。

38.以下程序的運行結(jié)果是【】。

#defineMAL(a,b)(a>b?a:b)+1

main()

{inti=6,j=8;

printf("%d\n",MAL(i,j));

}

39.在面向?qū)ο蠓椒ㄖ校瑢傩耘c操作相似的一組對象稱為【】。

40.軟件維護(hù)活動包括以下幾類:改正性維護(hù)、適應(yīng)性維護(hù)、【】維護(hù)和預(yù)防性維護(hù)。

三、1.選擇題(20題)41.下面程序的輸出結(jié)果是______。main(){inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a+4;printf("%d\n",p[3]);}

A.6B.7C.3D.5

42.有以下程序:voidf(int*q){inti=0;for(;i<5;i++)(*q)++;}main(){inta[5]={1,2,3,4,5},i;f(A);for(i=0;i<5;i++)printf("%d,",a[i]);}程序運行后的輸出結(jié)果是()。

A.2,2,3,4,5,B.6,2,3,4,5,C.1,2,3,4,5,D.2,3,4,5,6,

43.下列程序段的運行結(jié)果是()。#include<stdio.h>voidmain(){charstr[]="ABC",*p=str;printf("%d\n",*(p+3));}

A.67B.0C.字符'C'的地址D.字符'C'

44.下列對于軟件測試的描述中正確的是()。

A.軟件測試的目的是證明程序是否正確

B.軟件測試的目的是使程序運行結(jié)果正確

C.軟件測試的目的是盡可能多地發(fā)現(xiàn)程序中的錯誤

D.軟件測試的目的是使程序符合結(jié)構(gòu)化原則

45.以下能正確定義整型變量a,b和c,并為其賦初值1的語句是______。

A.inta=b=c=1;B.inta,b,c=1;C.a=b=c=1;D.inta=1,b=1,c=1;

46.有以下程序:#include<string.h>main(){charstr[][20]={"Hello","Beijing"},*p=str;printf("%d\n",strlen(p+20));}程序運行后的輸出結(jié)果是______。

A.0B.5C.7D.20

47.以下函數(shù)值的類型是_______。fun(floatx){floaty;y=3*x-4;returny;}

A.intB.不確定C.voidD.float

48.以下4組用戶定義標(biāo)識符中,全部合法的一組是

A.mainencludesin

B.If-maxturbo

C.txtREAL3COM

D.int12_001

49.計算機(jī)中,能夠用來與外存交換信息的是______。

A.鍵盤B.RAMC.顯示器D.ROM

50.下列程序的輸出結(jié)果是______。main(){floatx=3.6;inti;i=(int)x;printf("x=%f,i=%d",x,i);}

A.x=3.600000,i=4B.x=3i=3C.x=3.600000,i=3D.x=3i=3.600000

51.在軟件質(zhì)量因素中,軟件在異常情況下仍能運行的能力稱為軟件的______。

A.可用性B.可靠性C.安全性D.健壯性

52.下面四個選項中,均是不正確的八進(jìn)制數(shù)或十六進(jìn)制數(shù)的選項是

A.0160x8f018

B.0abc0170xa

C.010-0x110x16

D.0a127ff-123

53.下面程序的輸出結(jié)果是()。#include<stdio.h>intm=13;intfun2(intx,inty){intm=3;return(x*y-m);}main(){inta=7,b=5;printf("%d\n",fun2(a,b)/m);}

A.1B.2C.7D.10

54.#define能作簡單的替代,用宏來替代計算多項式5*x*x+5*x+5的值的函數(shù)f,正確的宏定義語句為()。

A.#definef(x)5*x*x+5*x+5

B.#definef5*X*x+5*x+5

C.#definef(a)(5*a*a+5*a+5)

D.#define(5*x*x+5*x+5)f(x)

55.設(shè)x為int型變量,執(zhí)行以下語句,x=10;x+=x-x;x;x的值為______。

A.10B.20C.30D.40

56.若有定義int(*pt)[3];,則下列說法不正確的是()。

A.int(*pt)[3]是一個數(shù)組指針

B.指針pt指向一個有3個整型變量的數(shù)組

C.定義了一個名為*pt、具有三個元素的整型數(shù)組

D.定義了一個名為pt的指針變量,它可以指向每行有三個整數(shù)元素的二維數(shù)組

57.當(dāng)調(diào)用函數(shù)時,實參是一個數(shù)組名,則向函數(shù)傳送的是______。

A.數(shù)組的長度B.數(shù)組的首地址C.數(shù)組每一個元素的地址D.數(shù)組每個元素中的值

58.以下選項中可作為C語言合法整數(shù)的是A.10110BB.386C.0XffaD.x2a2

59.在函數(shù)調(diào)用過程中,如果函數(shù)funA調(diào)用了函數(shù)funB,函數(shù)funB又調(diào)用了函數(shù)funA,則()。

A.稱為函數(shù)的直接遞歸調(diào)用B.稱為函數(shù)的間接遞歸調(diào)用C.稱為函數(shù)的循環(huán)調(diào)用D.C語言中不允許這樣的遞歸調(diào)用

60.若某二叉樹的前序遍歷訪問順序是abdgcefh,中序遍歷訪問順序是dgbaechf,則其后序遍歷的結(jié)點訪問順序是()。

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

四、選擇題(20題)61.C語言中用于結(jié)構(gòu)化程序設(shè)計的三種基本結(jié)構(gòu)是A.順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)

B.if、switch、break

C.for、while、do-while

D.if、for、continue

62.有以下程序:

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

A.Zhao,111,85,90,Qian,f,95,92

B.Zhao,m,85,90,Zha0,m,85,90

C.Qian,f,95,92,Qian,f,95,92

D.Qian,f,95,92,Zha0,m,85,90

63.以下程序運行后的輸出結(jié)果是()。

A.2B.4C.6D.3

64.有以下程序(a123.txt在當(dāng)前盤符下已經(jīng)存在)

#include"stdio.h"

voidmain()

{FILE*fp;

inta[10],*p=a;

fp=fopen("a123.txt","w");

while(strlen(gets(p))>0)

{fputs(a,fp);

fputs("\n",fp);

}

fclose(fp);

}

程序?qū)崿F(xiàn)的功能是

A.從鍵盤輸入若干行字符,按行號倒序?qū)懭胛谋疚募123.txt中

B.從鍵盤輸入若干行字符,取前兩行寫入文本文件a123.txt中

C.從鍵盤輸入若干行字符,第一行寫入文本文件a123.txt中

D.從鍵盤輸入若干行字符,依次寫入文本文件a123.txt中

65.

66.若有以下定義:

intx[10],*pt=x;

則對x數(shù)組元素的正確引用是()。

A.pt+3B.}&x[10]C.*(pt+10)D.*(x+3)

67.有以下程序:

若運行時輸入:123<回車>,則輸出結(jié)果是()。

A.編譯錯誤2000B.102000C.122030D.10

68.假定已建立以下鏈表結(jié)構(gòu),且指針P和q已指向如圖所示的結(jié)點:

則以下選項中可將q所指結(jié)點從鏈表中刪除并釋放該結(jié)點的語句組是()。

A.p一>next=q一>next;flee(q);

B.p=q一>next;free(q);

C.p=q;free(q);

D.(*p).next=(幸q).next;ffee(p);

69.請選出以下語句的輸出結(jié)果Printf("%d\n",strlen("\t\"\065\xff\n"));

A.5B.14C.8D.輸出項不合法,無正常輸出

70.

71.

有下列程序:

main

{charp[]={a,h,c},q[]="a";

printf("%d%d\n".sizeof(P),sizeof(q));

}

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

A.44B.33C.34D.43

72.

73.為了提高測試的效率,應(yīng)該()。

A.隨機(jī)選取測試數(shù)據(jù)

B.取一切可能的輸入數(shù)據(jù)作為測試數(shù)據(jù)

C.在完成編碼以后制定軟件的測試計劃

D.集中對付那些錯誤群集的程序

74.有以下程序:

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

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

75.

76.(41)在下列選項中,哪個不是一個算法一般應(yīng)該具有的基本特征()

A.確定性

B.可行性

C.無窮性

D.擁有足夠的情報

77.以下敘述中正確的是()。A.A.break語句只能用在循環(huán)體內(nèi)和switch’語句體內(nèi)

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

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

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

78.

79.若有說明:inta[3][4]={0};,則下面正確的敘述是

A.只初始化了第一個元素,即a[0][0]可得到初值0

B.此初始化語句不正確

C.?dāng)?shù)組a中各元素都可得到初值,但其值不一定為0

D.?dāng)?shù)組a中每個元素均可得到初值0

80.

五、程序改錯題(1題)81.已知一個數(shù)列,從0項開始的前3項為0、0、1,以后的各項都是其相鄰的前3項之和。下列給定的程序中,函數(shù)proc()的功能是:計算并輸出該數(shù)列前n項的平方根之和sum。n的值通過形參傳入。例如,當(dāng)n=11時,程序的輸出結(jié)果應(yīng)為32.197745。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.請編寫函數(shù)proc(),其功能是:將str所指字符串中除了下標(biāo)為奇數(shù)、同時ASCⅡ值為偶數(shù)的字符外,其余的全部刪除,串中剩余字符所形成的一個新串放在t所指的數(shù)組中。例如,若str所指字符串中的內(nèi)容為edB2A4Dsdg,其中字符A的ASCⅡ碼值為奇數(shù),因此應(yīng)當(dāng)刪除;其中字符B的ASCⅡ碼值為偶數(shù),但在數(shù)組中的下標(biāo)為偶數(shù),因此也應(yīng)當(dāng)刪除;而字符2的ASCⅡ碼值為偶數(shù),所在數(shù)組中的下標(biāo)為奇數(shù),因此不應(yīng)當(dāng)刪除。依此類推,最后t所指的數(shù)組中的內(nèi)容應(yīng)是d24。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.DC語言的合法的標(biāo)識符的命名規(guī)則是:標(biāo)識符可以由字母、數(shù)字和下劃線組成,并且第1個字符必須是字母或下劃線。選項D錯誤。本題答案為D選項。

2.A本題考查按位與運算,按位與就是相同為1,不同為0,把x=011050化成二進(jìn)制為0001001000101000,把01252化成二進(jìn)制為0000001010101010,兩者相與得0000001000101000。

3.C

4.B

5.AB)選項中switch(n[nx);語句中不應(yīng)該有最后的分號。switch(expr1),中的exp1不能用浮點類型或Iong類型,也不能為一個字符串,所以C)錯誤。case后面常量表達(dá)式的類型必須與switch后面表達(dá)式的類型一致,所以D)錯誤。

6.A\n本題在函數(shù)intfun(intn)的定義中又出現(xiàn)了對函數(shù)fun的調(diào)用,所以函數(shù)fun是遞歸函數(shù)。因而在主函數(shù)中調(diào)用x=fun(x)時,當(dāng)輸入10賦給變量X時,遞歸調(diào)用的過程為

\nfun(10)=l0+fun(9)=10+9+fun(8)=10+9+8+fun(7)

\n=10+9++8+7+fun(6)=10+9++8+7+6+fun(6)

\n=10+9++8+7+6+5+fun(4)

\n=10+9++8+7+6+5+4+fun(3)

\n=10+9++8+7+6+5+4+3+fun(2)

\n=10+9++8+7+6+5+4+3+2+fun(1)

\n=10+9++8+7+6+5+4+3+2=55

\n

7.B本題考查分支語句用法加個句號因為變量的初始值分別為k一5、n一0,所以程序第1次進(jìn)入循環(huán)時,執(zhí)行default語句,輸出0,k減1;這時n=0、k=4,程序進(jìn)行第2次循環(huán),執(zhí)行case4:這個分支,結(jié)果是n=2、k=3,打印出2;這時n=2、k=3,break跳出,程序進(jìn)行第3次循環(huán),執(zhí)行case3:這個分支,結(jié)果是n=3、k=2,打印出3;這時n一3、k2,b¨ak跳出,程序然后進(jìn)行第4次循環(huán),執(zhí)行case2:case4:這個分支,結(jié)果是n=5、k=1,打印出5,break跳出,這時因為n=5不滿足n<5的循環(huán)條件,因此循環(huán)結(jié)束。

8.D

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

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

2)指數(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ù)字。

10.B本題考查函數(shù)調(diào)用時的參數(shù)傳遞。在執(zhí)行函數(shù)func時,由于全局定義了一個變量b,所以在函數(shù)體中執(zhí)行b=2+1=3,最終t=2+3=5。

11.D執(zhí)行第一次for循環(huán)時,用表達(dá)式p[i][J]!=\o來判斷字符串?dāng)?shù)組指針P是否到達(dá)字符串的結(jié)尾,如果沒有到達(dá),繼續(xù)執(zhí)行while中的語句。if語句表示(p[i][j]-\o)除2的余數(shù)不為0時,即字符串所有奇數(shù),執(zhí)行后面的語句。所以退出第1次for的循環(huán)體時,輸出為397,執(zhí)行第2次循環(huán)體。對字符串“2584”進(jìn)行處理,輸出結(jié)果為5,因而最后輸出結(jié)果為3975。

12.B

13.B

14.C解析:本題考查按位與“&”。因為1&1=1,0&0=0,所以任何數(shù)與自身按位與,結(jié)果仍為此數(shù),不發(fā)生變化。

15.C

16.C

17.B

18.B解析:因為a<b成立,所以條件表達(dá)式a<b?b:a的值等于b的值等于2,因此變量k的值等于2。又因為k=2>c=3不成立,所以條件表達(dá)式k>c?c:k的值等于k的值等于2。把條件表達(dá)式k>c?c:k的值賦給變量k,因而變量k的值等于2。因此,選項B)為正確答案。

19.B本題考查逗號表達(dá)式的用法。C語言中逗號“,”也是一種運算符,稱為逗號運算符,其功能是把兩個表達(dá)式連接起來組成一個表達(dá)式,稱為逗號表達(dá)式。其一般形式為:表達(dá)式1,表達(dá)式2。其求值過程是分別求兩個表達(dá)式的值,并以表達(dá)式2的值作為整個逗號表達(dá)式的值。逗號表達(dá)式的一般形式可以擴(kuò)展為:表達(dá)式1,表達(dá)式2,表達(dá)式3,…,表達(dá)式n。它的值為表達(dá)式n的值。

20.D各種排序方法中最壞情況下需要比較的次數(shù)分別為:冒泡排序n(n-1)/2、快速排序n(n-1)/2、簡單插入排序n(n-1)/2、希爾排序0(n1.5)、簡單選擇排序n(n-1)/2、堆排序O(nlog2n)

21.1020

22.00解析:本題考查的是do…while循環(huán)。第一次執(zhí)行循環(huán)體,因為k=1,r=1,n=20;所以k=1*20%10*1=0,n=20/10=2,r=2;第二次執(zhí)行循環(huán)體,k=0*2%10*2=0,n=10/10=1,r=3;第三次執(zhí)行循環(huán)體,k=0*1%10*3=0,n=1/10=0,r=4。所以k的值為0。

23.100010100010解析:首先將程序中的宏替換掉,兩處的宏替換后分別為i1=1000/10*10和i2=1000/(10*10),即i1=1000,i2=10,所以最后輸出的i1和i2的值分別為1000和10。

24.scanf("%f<空格>%d"&b&a);printf("ab=%5.2f"a*b);scanf('%f<空格>%d',&b,&a);\r\nprintf('a,b=%5.2f',a*b);

25.0/(i*i)或(double)1/(i*i)0/(i*i)或(double)1/(i*i)解析:表達(dá)式1+1/(2*2)+1/(3*3)+...+1(n*n)可寫為1/(1*1)+1/(2*2)+1/(3*3)+...+1(n*n)

n

即:∑1÷(i×i)

i=1

對應(yīng)的C語言的表達(dá)式s=s+1.0/(i*i)。注:必須要寫成1.0的形式,否則1/(i,i)返回值為其值截尾取整,即恒為0。

26.存儲結(jié)構(gòu)

27.存儲結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)包括3個方面,即數(shù)據(jù)的邏輯結(jié)構(gòu)、數(shù)據(jù)的存儲結(jié)構(gòu)及對數(shù)據(jù)的操作運算。

28.中序中序解析:在先左后右的原則下,根據(jù)訪問根結(jié)點的次序,二叉樹的遍歷可以分為三種:前序遍歷、中序遍歷和后序遍歷.前序遍歷是指在訪問根結(jié)點、遍歷左子樹與遍歷右子樹這三者中,首先訪問根結(jié)點,然后遍歷左子樹,最后遍歷右子樹;并且遍歷左、右子樹時,仍然先訪問根結(jié)點,然后遍歷左子樹,最后遍歷右子樹。中序遍歷指在訪問根結(jié)點、遍歷左了樹與遍歷右子樹這三者中,首先遍歷左子樹,然后訪問根結(jié)點,最后遍歷右子樹:并且遍歷左、右子樹時,仍然先遍歷左子樹,然后訪問根結(jié)點,最后遍歷右子樹。后序遍歷指在訪問根結(jié)點、遍歷左子樹與遍歷右子樹這三者中,首先遍歷右子樹,然后訪問根結(jié)點,最后遍歷左子樹;并且遍歷左、右子樹時,仍然光遍歷右子樹,然后訪問根結(jié)點,最后遍歷左子樹。

29.21

30.讀棧頂元素讀棧頂元素解析:棧的基本運算有3種:入棧、退棧和讀取棧頂元素。其中,入棧是指在棧頂插入一個新的元素;退棧是指取出棧頂元素并賦值給一個變量;讀棧頂元素是將棧頂元素賦值給一個指定的變量,不刪除棧頂元素。

31.dat""w"或"bi.dat""w+"或"bi.dat""r+"dat','w'或'bi.dat','w+'或'bi.dat','r+'解析:本題的考點是fopen()函數(shù),此函數(shù)的格式是fopen(文件名,使用文件方式),題目的要求是將從鍵盤讀入的文本寫到文件中,因此選擇的打開方式應(yīng)該是'w'(只寫)。或者是讀寫“r+”或“w+”。

32.1098

33.br[i]

34.1212解析:本題簽考查如何用指針引用數(shù)組元素。分析程序,首先定義了一個指向數(shù)組a的指針p,p指向數(shù)組的首地址,通過p++,將p指向a[1],p+2是將指針后移2位指向a[3],*(p+2)即是取a[3)的值12。

35.1212解析:本題的第—個for循環(huán)用于紿數(shù)組arr賦初值,第二個for循環(huán)用于求和運算。由于第二個for循環(huán)初始值為1,而循環(huán)條件為i<4,所以求的是arr[1]到arr[3]及i的和,所以輸出結(jié)果為12。

36.*(p+5)或p[5]*(p+5)或p[5]

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

38.99解析:用i和j替換宏MAL(a,b)小的參數(shù)a和b,(a>b?a:b)+1等價于(i>j?i:j)+1。因為6>8為假,則關(guān)系表達(dá)式i>j?i:j的值就是j的值,j=8,8+1=9,最后輸出9。

39.類類解析:在面向?qū)ο蠓椒ㄖ校惷枋龅氖蔷哂邢嗨菩再|(zhì)的一組對象。所以,屬性與操作相似的一組對象稱為類。

40.完善性軟件維護(hù)活動包括以下幾類:改正性維護(hù),適應(yīng)性維護(hù)、完善性維護(hù)和預(yù)防性維護(hù),完善性維護(hù)是指為了滿足用戶對軟件提出的新功能與性能要求,需要修改或再開發(fā)軟件,以擴(kuò)充軟件功能、增強軟件性能、改進(jìn)加工效率、提高軟件的可維護(hù)性。

41.B解析:指針變量p指向數(shù)組a的第5個元素,p[3]在原指向基礎(chǔ)上移3個單位,指針變量p將指向第8個元素(下標(biāo)為7的元素),值為7。

42.B解析:題目中定義了一個指針變量作為函數(shù)f()的參數(shù)。主函數(shù)main()中調(diào)用f()函數(shù),當(dāng)i=0時,執(zhí)行語句“(*q)++;”,此處*q就代表數(shù)組a[0]的地址,也即將q進(jìn)行加1操作;當(dāng)i=1時,q仍指向數(shù)組元素a[0]的地址,因為在函數(shù)f()中并未對指針變量q做任何變動,即*q仍代表數(shù)組元素a[0]的值,所以此次(*q)++即為2+1,a[0]的值變?yōu)?;直到i=4時,執(zhí)行(*q)++后a[0]的值變?yōu)?,最后輸出數(shù)組a的結(jié)果為6、2、3、4、5。

43.B解析:先定義了一個指向字符型數(shù)組str的指針p,指針p旨向數(shù)組str的首地址,p+3將指針指向str[3],又因為字符型數(shù)組在存放字符串時會自動在末尾加上'\\0',所以*(p+3)=0。

44.C解析:關(guān)于軟件測試的目的,GrenfordJ.Myers在《TheArtofSoftwareTesting》一書中給出了深刻的闡述:軟件測試是為了發(fā)現(xiàn)錯誤而執(zhí)行程序的過程;一個好的測試用例是指很可能找到迄今為止尚未發(fā)現(xiàn)的錯誤的用例;一個成功的測試是發(fā)現(xiàn)了至今尚未發(fā)現(xiàn)的錯誤的測試。整體來說,軟件測試的目的就是盡可能多地發(fā)現(xiàn)程序中的錯誤。本題答案為C。

45.D解析:選項A中,變量b、c未定義;選項B中,a、b未賦值;選項C中a、b、c均未定義。

46.C解析:二維數(shù)組的初始化及庫函數(shù)strlen()的應(yīng)用,主函數(shù)中定義了一個二維字符數(shù)組并初始化,初始化后的結(jié)果為str[0]=“Hello”、str[1]=“Beijing”,然后定義一個字符指針變量p并讓它指向數(shù)組的首地址,即指向str[0],而在C語言中無論是一維還是多維數(shù)組,其元素在內(nèi)存中都是順序存放的,故p+20后指針指向str[1],所以strlen(p+20);返回的是str[1]中的字符串的長度,即Beijing的長度為7,所以最后輸出的值為7。

47.A解析:函數(shù)定義時如果數(shù)據(jù)類型默認(rèn),則默認(rèn)為int。函數(shù)中如果有“retum(表達(dá)式):”語句,表達(dá)式的類型可能與函數(shù)的類型不一致,但它并不能改變函數(shù)的類型,實際情況是把表達(dá)式轉(zhuǎn)換為函數(shù)值的類型作為返回值,因此本題的函數(shù)值類型是int。

48.A解析:標(biāo)識符是以字母或下劃線開頭,由字母、數(shù)字或下劃線組成的字符序列{例如,-max含非法字符-),并且用戶標(biāo)識符不能與C語言中的32個關(guān)鍵字同名(例如,int是關(guān)鍵字,不是合法的用戶標(biāo)識符)。選項B中-max不是字母、數(shù)字或下劃線組成的字符序列,故選項B不正確;選項C中3COM不是由字母或下劃線開頭,故選項C不正確;選項D中int為C語言中的關(guān)鍵字,故選項D不正確;選項A中全部為合法的標(biāo)識符,所以,4個選項中選項A符合題意。

49.B解析:RAM中存儲著當(dāng)前使用的程序、數(shù)據(jù)、中間結(jié)果和與外存交換的數(shù)據(jù),CPU根據(jù)需要可以直接讀/寫RAM中的內(nèi)容。

50.C

51.D

52.D解析:八進(jìn)制中,不可能包括8以上的數(shù)字,它的范圍只在07之間,以0開頭。同樣,十六進(jìn)制是以0x開頭,數(shù)字在0~9和A~F之間。

53.B解析:本題考查函數(shù)的調(diào)用。函數(shù)fun2的作用是將形參x和y的值相乘后減去3,在fun2中的變量m是一個局部變量,它的值在fun2函數(shù)內(nèi)有效;在主函數(shù)中的m指的是全局變量,其值為13,所以fun2(a,b)/m的值為(7*5-3)/13,即2。

54.C解析:帶參數(shù)宏的格式為:#define標(biāo)識符(形參表)形參表達(dá)式。其功能是:在預(yù)處理程序中將程序中出現(xiàn)的所有帶實參的宏名,展開成由實參組成的表達(dá)式。

55.B解析:本題x=10,表達(dá)式“x+=x-=x-x;”的求解步驟如下:先進(jìn)行x=x-x的運算,相當(dāng)于x=x-(x-x)=x=10;再進(jìn)行x+=x的運算,即x=x+x=200

56.D解析:首先,pt跟*結(jié)合,所以是一個指針,所指向的對象是含有3個元素的數(shù)組。所定義的指針沒加const,所以是個指針變量,還可以指向類似對象的其他元素,也就是說還可以指向其他含有3個元素的數(shù)組。

57.B解析:當(dāng)調(diào)用函數(shù)時,實參是一個數(shù)組名,則向函數(shù)傳送的是數(shù)組的首地址,函數(shù)中的形參可定義成以下三種形式:

①形參定義成數(shù)組;

②形參定義成可變長數(shù)組:

③形參定義為指針變量。

58.C解析:本題考核的知識點是整數(shù)及常數(shù)的表示方法。在C語言中,整數(shù)常量可以用十進(jìn)制、八進(jìn)制和十六進(jìn)制來表示,選項A為二進(jìn)制表示,故選項A不正確;選項B是八進(jìn)制表示法,但在八進(jìn)制數(shù)中,各個位數(shù)只能為數(shù)字。到7中的一個,而在選項B中,有一個數(shù)字8,故選項B不正確;選項C為十六進(jìn)制表示法正確:選項D中也為十六進(jìn)制表示法,但十六進(jìn)制數(shù)以O(shè)x開頭,故選項D不正確,所以,4個選項中選項c符合題意。

59.B解析:在C語言中所謂函數(shù)的遞歸是指在調(diào)用一個函數(shù)的過程中,又出現(xiàn)了直接或間接調(diào)用該函數(shù)本身,直接調(diào)用該函數(shù)本身的稱為函數(shù)遞歸,而間接調(diào)用該函數(shù)稱為函數(shù)的間接遞歸調(diào)用。顯然題目中所說得函數(shù)調(diào)用為函數(shù)的間接遞歸調(diào)用。所以,4個選項中選項B符合題意。

60.D解析:中序遍歷的遞歸算法定義:①遍歷左子樹;②訪問根結(jié)點;③遍歷右子樹。前序遍歷的遞歸算法定義:①訪問根結(jié)點;②遍歷左子樹;③遍歷右子樹。后序遍歷的遞歸算法定義:①遍歷左子樹;②遍歷右子樹;③訪問根結(jié)點。根據(jù)前序遍歷的結(jié)果可知,a是根結(jié)點。由中序遍歷的結(jié)果dgbaechf可知,d、g、b是左子樹的結(jié)點,e、c、h、f是右子樹的結(jié)點。再由前序遍歷的結(jié)果bdg可知,b是a左邊子樹的根,由cefh可知,c是a右邊子樹的根。再由中序遍歷的結(jié)果dgb可知,d、g是b左邊子樹的結(jié)點,b右邊子樹無結(jié)點。再由前序遍歷結(jié)果dg可知,d為b左子樹的根,g是以d為根的子樹的右結(jié)點。至此,a的左子樹已完全弄清楚了。同樣的道理,可以弄清楚以c為根的子樹的結(jié)點位置。所以可知后序遍歷的結(jié)果是D。

61.A解析:結(jié)構(gòu)化程序由3種基本結(jié)構(gòu)組成,即順序結(jié)構(gòu)、循環(huán)結(jié)構(gòu)(包括for語句、while語句及do…\u3000while語句)和選擇結(jié)構(gòu)(包括if語句和switch語句)。

62.A本題考查的是函數(shù)調(diào)用時的參數(shù)傳遞問題。程序在調(diào)用函數(shù)f時,傳給函數(shù)f的參數(shù)只是結(jié)構(gòu)變量c在棧中的一個拷貝,函數(shù)f所做所有操作只是針對這個數(shù)據(jù)拷貝進(jìn)行的修改,這些都不會影響變量c的值。

63.C函數(shù)f的功能是利用冒泡排序方法,將二維字符數(shù)組的前n行進(jìn)行遞增排序。

注意,本題目排序時整個字符串都交換。數(shù)組P排序后的結(jié)果為

64.D本題考查文件的讀寫操作。程序中使用fopen函數(shù)打開文本文檔a123,打開方式為只寫。初始定義了一個整型數(shù)組,長度為10。while循環(huán)的判斷語句是判斷是否有輸入字符存在。strlen函數(shù)是計算輸入字符串的長度。fputs函數(shù)是向指定的文件輸出一個字符串。題目給出的程序就是只要從鍵盤上輸入字符,就將該字符向指定的文件輸

溫馨提示

  • 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

提交評論