2021年安徽省池州市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)_第1頁
2021年安徽省池州市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)_第2頁
2021年安徽省池州市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)_第3頁
2021年安徽省池州市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)_第4頁
2021年安徽省池州市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)_第5頁
已閱讀5頁,還剩74頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2021年安徽省池州市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.線性表L=(a1,a2,a3,…ai,…an),下列說法正確的是()

A.每個元素都有一個直接前件和直接后件

B.線性表中至少要有一個元素

C.表中諸元素的排列順序必須是由小到大或由大到小

D.除第一個元素和最后一個元素外,其余每個元素都有一個且只有一個直接前件和直接后件

2.

有以下程序:

main

{intnum[4][4]={1,2,3,4},{5,6,7,8},{9,10,11,

12,},{13,14,15,16}},i,j;

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

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

for(j=________;J<4;j++)printf("%4d",num

[i][j]);

printf("\n");}}

若要按以下形式輸出數(shù)組右上半三角

1234

678

1112

16

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

A.i-1B.iC.i+1D.4一i

3.下面程序的運(yùn)行結(jié)果是()#include<stdio.h>#include<string.h>main(){char*a="AbcdEf",*b="aBcD"a++;b++;printf("%d\n",strcmp(a,b));}

A.0B.負(fù)數(shù)C.正數(shù)D.無確定值

4.有下列程序:intfun(intx[],intn){staticintsum=0,i;for(i=0;i<n;i++)sum+=x[i]:returnsum;}main(){inta[3]={1,2,3,4,5),b[3]={6,7,8,9),s=0;s=fun(a,5)+fun(b,4);printf("%d\n",s);}程序執(zhí)行后的輸出結(jié)果是()。、A.45B.50C.60D.55

5.下列敘述中正確的是:()A.C語言程序總是從第一個定義的函數(shù)開始執(zhí)行

B.C語言程序中,函數(shù)類型必須進(jìn)行顯式聲明

C.C語言程序中,return語句必須放在函數(shù)的最后

D.C語言程序中,return語句中表達(dá)式的類型應(yīng)該與函數(shù)的類型一致

6.若有定義“inta=1,b=2,c=3,d=4,m=2,n=2;”,則執(zhí)行“(m=a>b)&&(n=c>d)”后n的值是()。

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

7.已知各變量的類型說明如下則以下不符合C語言語法的表達(dá)式是()。A.x%(-3)B.w+=-2C.k=(a=2,b=3,a+b)D.a+=a-=(b=4)*(a=3)

8.若某鏈表最常用的操作是在最后一個結(jié)點(diǎn)之后插入一個結(jié)點(diǎn)或刪除最后一個結(jié)點(diǎn)。則采用()存儲方式最節(jié)省運(yùn)算時間。

A.單鏈表B.雙鏈表C.單循環(huán)鏈表D.帶頭結(jié)點(diǎn)的雙循環(huán)鏈表

9.采用折半查找法查找長度為n的線性表時,每個元素的平均查找長度為()。

A.O(n2)B.O(nlog2n)C.O(n)D.O(log2n)

10.在一個被調(diào)用函數(shù)中,關(guān)于return語句使用的描述,()是錯誤的。

A.被調(diào)用函數(shù)中可以不用return語句

B.被調(diào)用函數(shù)中可以使用多個return語句

C.被調(diào)用函數(shù)中,如果有返回值,就一定要有return語句

D.被調(diào)用函數(shù)中,一個return語句可以返回多個值給調(diào)用函數(shù)

11.下列敘述中正確的是()。

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

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

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

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

12.具有10個葉子結(jié)點(diǎn)的二叉樹中有()個度為2的結(jié)點(diǎn)。

A.8B.9C.10D.11

13.以下與數(shù)學(xué)表達(dá)式“0<x<5且x≠2”不等價的C語言邏輯表達(dá)式是()。

A.(0<x<5)&&(x!=2)

B.0<x&&x<5&&x!=2

C.x>0&&x<5&&x!=2

D.(x>0&&x<2)||(x>2&&x<5)

14.若要求從鍵盤讀入含有空格字符的字符串,應(yīng)使用函數(shù)()。

A.getcharB.getcC.getsD.scanf

15.

16.語句:“printf("%d",(a=)&&(b=-2));”的輸出結(jié)果是()。

A.無輸出B.結(jié)果是不確定C.-1D.1

17.有以下程序:#include<stdio.h>main(){FILE*fp;inti,a[6]={1,2,3,4,5,6},b[6];fp=fopen(“d.dat”,“w+b”);fwrite(a,sizeof(int),6,fp);for(i=0;i<6;i++)fwrite(&a[2],sizeof(int),1,fp);rewind(fp);fseek(fp,sizeof(int)*2,SEEK_CUR);fread(b,sizeof(int),6,fp);fclose(fp);for(i=0;i<6;i++)printf(“%d,”,b[i]);}程序運(yùn)行后的輸出結(jié)果是()。

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

18.若有以下定義:chara;intb;floatc;doubled;則表達(dá)式a*b+b-c值的類型為()。A.floatB.intC.charD.double

19.現(xiàn)有1GB數(shù)據(jù)進(jìn)行排序,計(jì)算資源只有1GB內(nèi)存可用,下列排序方法中最可能出現(xiàn)性能問題的是()

A.堆排序B.插入排序C.歸并排序D.快速排序E.選擇排序F.冒泡排序

20.在C語言程序中,main函數(shù)的位置()

A.必須作為第一個函數(shù)B.必須作為最后一個函數(shù)C.可以任意D.必須放在它所調(diào)用的函數(shù)之后

二、2.填空題(20題)21.函數(shù)mycmp(char*s,char*t)的功能是比較字符串s和t的大小,當(dāng)s等于t時返回0,當(dāng)s>t時返回正值,當(dāng)s<t時返回負(fù)值。請?zhí)羁铡?/p>

mycmp(char*s,char*t)

{while(*s==*t)

{if(*s=='\0')return0;

++s;++t;

}

return(【】);

}

22.下列程序運(yùn)行時輸入1234567<CR>,則輸出結(jié)果是______。

#include<stdio.h>

main()

{inta=1,b;

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

}

23.設(shè)有以下變量定義,并已賦確定的值,

charw;intx;floaty;doubleZ;

則表達(dá)式:w*x+z-y所求得的數(shù)據(jù)類型為上【】。

24.以下程序運(yùn)行后的輸出結(jié)果是______。

fun(intx)

{if(x/2>0)fun(x/2);

printf("%d",x);

}

main()

{fun(6);}

25.若從鍵盤輸入58,則以下程序的輸出結(jié)果是【】。

main()

{inta;

scanf(“%d”,&A);

if(a>50)printf(“%d”,A);

if(a>40)printf(“%d”,A);

if(a>30)printf(“%d”,A);

}

26.下列程序的運(yùn)行結(jié)果是______。

main()

{inti,a[10];

a[0]=a[1]=1;

for(i=2;i<5;i++)

a[i]=a[i-2]+a[i-1];

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

{if(i%2==0)printf("\n");

printf("%d",a[i]);

}

}

27.設(shè)一棵完全二叉樹共有700個結(jié)點(diǎn),則在該二叉樹中有【】個葉子結(jié)點(diǎn)。

28.\13'在內(nèi)存中占1個字節(jié),"\12"在內(nèi)存中占______個字節(jié)。

29.“printf("%d\n",strlen("\t\"\023\xAB\nC"));”語句的輸出結(jié)果是()。

30.數(shù)據(jù)庫系統(tǒng)其內(nèi)部分為三級模式,即概念模式、內(nèi)模式和外模式。其中,______是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式。

31.下面函數(shù)用來求出兩個整數(shù)之和,并通過形參傳回兩數(shù)相加之和值。請?zhí)羁铡?/p>

intadd(intx,inty,【】,)

{【】=x+y;}

32.Jackson方法是一種面向【】的結(jié)構(gòu)化方法。

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(1=0;i<3;i++)printf("%4d",b[i]);

printf("\n");

}

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

{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.mystrlen函數(shù)的功能是計(jì)算str所指字符串的長度,并作為函數(shù)值返回。請?zhí)羁铡?/p>

intmystrlen(char*str)

{inti;

for(i=0;【】!='\0';i++);

return(i);}

35.若給fun函數(shù)的形參s傳送字符串:"abc-6354abc",則函數(shù)的返回值是()。(字符串中包括空格)

longfun(charS[])

{longn;intsign;

for(;isspace(*s)||islower(*s);s++);

sign=(*s=='-')?-1:1;

if(*s=='+'||*s=='-')s++;

for(n=0;isdigit(*s);s++)

n=10*n+(*S-'0');

returnsign*n;

}

36.在數(shù)據(jù)庫理論中,數(shù)據(jù)物理結(jié)構(gòu)的改變,如存儲設(shè)備的更換、物理存儲的更換、存取方式等都不影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),從而不引起應(yīng)用程序的變化,稱為【】。

37.關(guān)系數(shù)據(jù)庫管理系統(tǒng)能實(shí)現(xiàn)的專門關(guān)系運(yùn)算包括選擇、連接和【】。

38.以下程序運(yùn)行后的輸出結(jié)果是______。

main()

{intx,a=1,b=2,c=3,d=4;

x=(a<b)?a:b;x=(x<c)?x:c;x=(d>x)?x:d;

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

}

39.在面向?qū)ο蟮姆椒ㄖ?,______描述的是具有相似屬性與操作的一組對象。

40.在對文件進(jìn)行操作的過程中,若要是文件位置的指針回到文件的開頭,應(yīng)使用的函數(shù)是【】。

三、1.選擇題(20題)41.若要用下面的程序片段使指針變量p指向一個存儲整型變量的動態(tài)存儲單元int*pp=______malloc(sizeof(int));則應(yīng)填入______。

A.intB.int*C.(*int)D.(int*)

42.有如下程序段int*p,a=10,b=1;p=&a;a=*p+b;執(zhí)行該程序段后,a的值為______。

A.12B.11C.10D.編譯出錯

43.在C語言中,以下說法不正確的是()。

A.在C程序中,整數(shù)和實(shí)數(shù)都能被準(zhǔn)確無誤地表示出來

B.在C程序中,任何一個變量名都代表存儲器中的一個位置

C.靜態(tài)變量的生存期與整個程序的運(yùn)行期相同

D.C語言中,任何變量都必須先聲明才能進(jìn)行引用

44.在下列幾種排序方法中,要求內(nèi)存量最大的是______。

A.插入排序B.選擇排序C.快速排序D.歸并排序

45.下述關(guān)于C語言文件的操作的結(jié)論中,正確的是______。

A.對文件操作必須先關(guān)閉文件

B.對文件操作必須先打開文件

C.對文件操作順序無要求

D.對文件操作前必須先測文件是否存在,然后再打開文件

46.下列程序的運(yùn)行結(jié)果是()。#include<stdio.h>main(){intx=5,a=1,b=2,c=5,d=0;if(a<B)if(b!=3)if(!C)x=1;elseif(D)x=1;elsex=-1;printf("%d",x);}

A.-1B.0C.1D.不確定的值

47.在C語言中,表達(dá)式10!=9的值是______。

A.真B.非零值C.0D.1

48.若已定義:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,則對a數(shù)組元素不正確的引用是______。

A.a[p-a]B.*(&a[i])C.p[i]D.a[10]

49.與十進(jìn)制數(shù)200等值的十六進(jìn)制數(shù)為A.A8B.A4C.C8D.C4

50.下列程序執(zhí)行后的輸出結(jié)果是voidfunc(int*a,intb[]){b[0]=*a+6;}main(){inta,b[5];a=0;b[0]=3;func(&a,b);printf("%d\n",b[0]);}

A.6B.7C.8D.9

51.有以下程序inta=3;main(){ints=0;{inta=5;s+=a++;}s+=a++;printf("%d\n",s);}程序運(yùn)行后的輸出結(jié)果是______。

A.8B.10C.7D.11

52.若有以下程序段(n所賦值的是八進(jìn)制數(shù)):intm=32767,n=032767;printf("%d,%o\n",m,n);執(zhí)行后輸出結(jié)果是______。

A.32767,32767B.32767,032767C.32767,77777D.32767,077777

53.以下程序的輸出結(jié)果是()。#include<stdio.h>main(){printf("%d\n",NULL);}

A.不確定的值(因變量無定義)B.0C.-1D.1

54.Modem的功能是實(shí)現(xiàn)()

A.數(shù)字信號的編碼B.模擬信號的采樣、量化C.數(shù)字信號的整形D.模擬信號與數(shù)字信號的轉(zhuǎn)換

55.以下敘述中正確的是______。A.預(yù)處理命令行必須位于源文件的開頭

B.在源文件的一行上可以有多條預(yù)處理命令

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

D.宏替換不占用程序的運(yùn)行時間

56.C語言中while和do-while循環(huán)的主要區(qū)別是

A.do-while的循環(huán)體至少無條件執(zhí)行一次

B.while的循環(huán)控制條件比do-while的循環(huán)控制條件更嚴(yán)格

C.do-while允許從外部轉(zhuǎn)到循環(huán)體內(nèi)

D.do-while的循環(huán)體不能是復(fù)合語句

57.以下關(guān)于long、int和short類型數(shù)據(jù)占用內(nèi)存大小的敘述中正確的是(),

A.均占4個字節(jié)B.根據(jù)數(shù)據(jù)的大小來決定所占內(nèi)存的字節(jié)數(shù)C.由用戶自己定義D.由C語言編譯系統(tǒng)決定

58.設(shè)變量均已正確定義,若要通過scanf("%d%c%d%c",&a1,&c1,&a2,&c2);語句為變量a1和a2賦數(shù)值10和20,為變量c1和c2賦字符X和Y。以下所示的輸入形式中正確的是(注:□代表空格字符)

A.10□X□20□Y<回車>

B.10□X20□Y<回車>

C.10□X<回車>20□Y<回車>

D.10X<回車>20Y<回車>

59.下列關(guān)系運(yùn)算中,能使經(jīng)運(yùn)算后得到的新關(guān)系中屬性個數(shù)多于原來關(guān)系中屬性個數(shù)的是()。

A.選擇B.連接C.投影D.并

60.有以下程序段:main(){inta=5,*b,**c;c=&b;b=&a;}程序在執(zhí)行了c=&b;b=&a;語句后,表達(dá)式**c的值是______。

A.變量a的地址B.變量b中的地址C.變量a中的值D.變量b的地址

四、選擇題(20題)61.下面程序的功能是輸出以下形式的金字塔圖案。

main()

{

inti,j;

for(i=1;i<=4;i++)

{

for(j=1;j<=4-i;j++)

printf("");

for(j=1;j<=______;j++)

printf("*");

printf("\n");

}

}

在下畫線處應(yīng)填入的是

A.iB.2*i-1C.2*i+1D.i+2

62.已知i,j,k為int型變量,若從鍵盤輸入:1,2,3<回車>,使i的值為1,j的值為2,k的值為3,以下選項(xiàng)中正確的輸入語句是

A.scanf("%2d,%2d,%2d",i,j,k);B.scanf("%d%d%d",&i,&j,&k);

C.scanf("%d,%d,%d",&i,&j,&k);D.scanf("i=%d,j=%d,k=%d",&i,&j,&k);

63.在數(shù)據(jù)結(jié)構(gòu)中,與所使用的計(jì)算機(jī)無關(guān)的是數(shù)據(jù)的()。

A.存儲結(jié)構(gòu)B.物理結(jié)構(gòu)C.邏輯結(jié)構(gòu)D.物理和存儲結(jié)構(gòu)

64.棧和隊(duì)列的共同特點(diǎn)是()。

A.都是先進(jìn)先出B.都是先進(jìn)后出C.只允許在端點(diǎn)處插入和刪除元素D.沒有共同點(diǎn)

65.有以下程序段當(dāng)執(zhí)行上述程序段,從鍵盤上輸A,555667777123后,y的值為()。

A.566.0B.55566.0C.7777.0D.566777.0

66.

67.以下語句中存在語法錯誤的是()。

68.有以下程序則輸出結(jié)果是()。A.1245B.1256C.1278D.1267

69.有以下程序:

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

A.zB.0C.元素eh[5]的地址D.字符Y的地址

70.已定義以下函數(shù):

fun(int*p)

{return&p;}

該函數(shù)的返回值是()。

A.不確定的值

B.形參p中存放的值

C.形參p所指存儲單元中的值

D.形參p的地址值

71.

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

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

73.下面四個選項(xiàng)中,均是不正確的8進(jìn)制數(shù)或16進(jìn)制數(shù)的選項(xiàng)是

A.0160x8f018

B.0abc0170xa

C.010-0x110x16

D.0a127ff-123

74.fscanf函數(shù)的正確調(diào)用形式是

A.fscanf(文件指針,格式字符串,輸出表列);B.fscanf(格式字符串,輸出表列,文件指針);

C.fscanf(格式字符串,文件指針,輸出表列);D.fscanf(文件指針,格式字符串,輸入表列);

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

A.MainB._0C._intD.sizeof

76.有以下程序:

程序執(zhí)行后的輸出結(jié)果是()。

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

77.

78.設(shè)變量已正確定義,則以下能正確計(jì)算f=n!的程序是()。

A.f=0;for(i=1;i<=n;i++)f*=i;

B.f=1;for(i=1;i<n;i++)f*=i;

C.f=1;for(i=n;i>1;i++)f*=i;

D.f=1;for(i=n;i>=2;i--)f*=i;

79.

80.若程序中有宏定義行:#defineN100則以下敘述中正確的是()。

A.宏定義行中定義了標(biāo)識符N的值為整數(shù)100

B.在編譯程序?qū)源程序進(jìn)行預(yù)處理時用100替換標(biāo)識符N

C.對C源程序進(jìn)行編譯時用100替換標(biāo)識符N

D.在運(yùn)行時用100替換標(biāo)識符N

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:計(jì)算n!。例如,若輸人:6,則輸出:6!=720.000000。

請修改程序中的錯誤,使它能得出正確的結(jié)果。

注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。

試題程序:

六、程序設(shè)計(jì)題(1題)82.使用vc++2010打開文件夾下prog1中的解決方案。此解決方案的項(xiàng)目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),其功能是在一組得分中,去掉一個最高分和一個最低分,然后求平均值,并通過函數(shù)返回該值。函數(shù)形參a指向存放得分的數(shù)組,形參n中存放得分個數(shù)(n>2)。例如,若輸入8.4共10個得分,則輸出結(jié)果為8.687500。注意:部分源程序存放在文件prog1.c中,請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.D解析:線性表可以為空表,排除選項(xiàng)B。第一個元素沒有直接前件,最后一個元素沒有直接后件,故排除選項(xiàng)A。線性表的定義中,元素的排列沒有規(guī)定大小順序,故選項(xiàng)C也有誤,只有D項(xiàng)是正確的。

2.B

\n本題中要求輸出右上半角的數(shù),對角線上的數(shù)的下標(biāo)相同,所以j=i。

\n

3.C

4.C在函數(shù)intfun(intx[],intn)的定義中,變量sum為一個靜態(tài)局部變量。由于在整個程序運(yùn)行期間,靜態(tài)局部變量在內(nèi)存中的靜態(tài)存儲中占據(jù)著永久的存儲單元。函數(shù)intfun(intx[],intn)的功能是求出數(shù)組x[]各個元素的和,所以在主函數(shù)中,調(diào)用函數(shù)fun(a,5)后,變量sum=1+2+3+4+5=15,當(dāng)再次調(diào)用fun(b,4)后,變量sum=15+6+7+8+9=45,所以s=15+45=60。

5.DC程序程序總是從main函數(shù)開始執(zhí)行。C程序中如果沒有對函數(shù)類型進(jìn)行說明,則該函數(shù)默認(rèn)為int類型。return語句可以放在函數(shù)任意位置,但是return之后的語句不會被執(zhí)行。

6.C對于表達(dá)式“(m=a>b)&&(n=c>d)”,首先執(zhí)行m=a>b,由于a、b的值分別為1、2,因此a>b的值為0,m的值為0,又由于邏輯與運(yùn)算符&&的短路原則,第1個表達(dá)式的值為假,因此整個表達(dá)式的值已經(jīng)確定為假,第2個表達(dá)式不會被執(zhí)行,n的值依然是2。本題答案為C選項(xiàng)。

7.A

8.D

9.D

10.D

11.C解析:在格式化模型中,要事先根據(jù)應(yīng)用的需要,確定數(shù)據(jù)之間的邏輯關(guān)系,即先對數(shù)據(jù)進(jìn)行結(jié)構(gòu)化。在關(guān)系模型中,不需要事先構(gòu)造數(shù)據(jù)的邏輯關(guān)系,只要將數(shù)據(jù)按照一定的關(guān)系存入計(jì)算機(jī),也就是建立關(guān)系。所以選項(xiàng)A錯誤。對于一個表示關(guān)系的二維表,其最基本的要求是表中元組的每一個分量必須是不可分的數(shù)據(jù)項(xiàng),即不允許表中再有表。所以,選項(xiàng)B、D說法是錯誤的。一個關(guān)系的屬性名表稱為關(guān)系模式,也就是二維表的表框架,相當(dāng)于記錄型。因此,選項(xiàng)C說法正確。

12.B

13.A在C語言里不能直接表達(dá)“0<x<5”,需要分步驟來實(shí)現(xiàn),即使用“x>0&&x<5”來描述。在C語言里,“0<x<5”屬于一個邏輯運(yùn)算表達(dá)式,可以理解為“(0<x)<5”,因此選項(xiàng)A錯誤。故本題答案為A選項(xiàng)。

14.C當(dāng)輸入字符串時,函數(shù)scanf用“空格”間隔不同的字符串,scanf函數(shù)不能輸入空格。getchar函數(shù)用于輸入字符,其調(diào)用形式為ch=getchar(),getehar函數(shù)從終端讀入一個字符作為函數(shù)值,把讀入的字符賦給變量ch。在輸入時,空格、回車符都將作為字符讀入,而且只有在用戶按<Enter>鍵時,讀入才開始執(zhí)行。gets函數(shù)的調(diào)用形式為getS(Str_adr),其中“str_adr”是存放輸入字符串的起始地址,可以是字符數(shù)組名、字符數(shù)組元素的地址或字符指針變量。gets函數(shù)用來從終端鍵盤讀入字符串(包括空格符),直到讀入一個換行符為止。getc函數(shù)的調(diào)用形式為ch=getc(Pf),其中“pf”是文件指針,函數(shù)的功能是從“pf”指定的文件中讀入一個字符,并把它作為函數(shù)值返回。故本題答案為C選項(xiàng)。

15.B

16.D因?yàn)樵谶壿嫳磉_(dá)式中,兩邊的賦值表達(dá)式都成立,即值為1,故選擇D選項(xiàng)。

17.A程序首先以讀二進(jìn)制文件的方式打開文件d.dat;然后使用fwrite函數(shù)將數(shù)組a中6個元素寫入d.dat中。并調(diào)用for循環(huán)將a[2]元素(值為3)6次寫入d.dat文件中;接著使用rewind函數(shù)將文件指針fp移動到文件頭;再使用fseek函數(shù)將fp從當(dāng)前位置向后移動2個整數(shù)位置;最后使用fread函數(shù)從fp指向的位置向后讀取6個整數(shù)。由此可知這6個整數(shù)分別是:3,4,5,6,3,3。故本題答案為A選項(xiàng)。

18.D在表達(dá)式a*b+d-c中,double的類型最高,C語言中,由低類型自動向高類型轉(zhuǎn)換,所以最后的結(jié)果一定是double型。

19.C

20.C

21.*s-*t*s-*t解析:本題考查比較字符串的大小。函數(shù)的兩個形參是兩個字符指針變量,指針變量的值是字符串的首地址,*s和*t表示s和t指向的第一個字符,在while循環(huán)中,通過s和t指針的移動,不斷改變所指字符,通過返回s和t的第一個不同字符的ASCII碼的差值*s-*t得到結(jié)果。

22.本題考查的重點(diǎn)是scanf函數(shù)的調(diào)用。scanf(“<格式化字符串>”,<地址表>),格式化字符串后可以加上場寬,本題中兩個變量的場寬都為2,所以輸入1234567<CR>后,變量a的值為12。變址b的值為34,從而輸出為1234。\r\n\r\n

23.double型或雙精度型double型或雙精度型解析:①先進(jìn)行w*x的運(yùn)算,先將字符型w轉(zhuǎn)換成整型,運(yùn)算結(jié)果為整型;②再將w*x的結(jié)果與z相加,要先將第一步的整型轉(zhuǎn)換為double型,運(yùn)算結(jié)果為double型;③最后將w*x+z的結(jié)果與y相減,要先將float型y轉(zhuǎn)換成double型,結(jié)果為double型。

24.136136解析:本題考核的知識點(diǎn)是函數(shù)遞歸。主函數(shù)調(diào)用函數(shù)fun(6),由于6/2>0為真遞歸調(diào)用fun(3),接著遞歸調(diào)用fun(1),輸出1,返回上一層輸出3,在返回上一層輸出6。故空格處應(yīng)該填136。

25.585858585858解析:在程序中,執(zhí)行scanf()語句后,a被賦值為58。接著執(zhí)行第一個if語句,因?yàn)?,a=58>50,執(zhí)行第一個if語句后面的輸出語句,輸出58;接著執(zhí)行第二個if語句,因?yàn)?,a=58>40,執(zhí)行第二個if語句后面的輸出語句,輸出58;接著執(zhí)行第三個if語句,因?yàn)?,a=58>30,執(zhí)行第三個if語句后面的輸出語句,輸出58,所以最后的輸出為585858。

26.11<CR>23<CR>5(<CR代表換行)11<CR>23<CR>5(<CR,代表換行)解析:本題通過語句“for(i=2;i<5;i++)a[i]=a[i-2]+a[i-];”將數(shù)組中前面兩項(xiàng)的和賦值給數(shù)組當(dāng)前元素,得到a的值應(yīng)為(1,1,2,3,5)。語句if(i%2==0)pfintf('\\n')是要將數(shù)組中的元素以每行2個的形式輸出。

27.350350解析:在任意一棵二叉樹中,度為0的結(jié)點(diǎn)(即葉子結(jié)點(diǎn))總是比度為2的結(jié)點(diǎn)多一個。在根據(jù)完全二叉樹的定義,在一棵完全二叉樹中,最多有1個度為1的結(jié)點(diǎn)。因此,設(shè)一棵完全二叉樹具有n個結(jié)點(diǎn),若n為偶數(shù),則在該二叉樹中有n/2個葉子結(jié)點(diǎn)以及n/2-1個度為2的結(jié)點(diǎn),還有1個是度為1的結(jié)點(diǎn):若n為奇數(shù),則在該二叉樹中有[n/2]+1個葉子結(jié)點(diǎn)以及[n/2]個度為2的結(jié)點(diǎn),沒有度為1的結(jié)點(diǎn)。本題中,完全二叉樹共有700個結(jié)點(diǎn),700是偶數(shù),所以,在該二叉樹中有350個葉子結(jié)點(diǎn)以及349個度為2的結(jié)點(diǎn),還有1個是度為1的結(jié)點(diǎn)。所以,本題的正確答案為350。

28.22解析:'\\13':表示八進(jìn)制數(shù)13表示的ASCII字符,是一個字符,占一個字節(jié);而”\\12”是個字符串,除了八進(jìn)制數(shù)12表示的ASCII字符占一個字節(jié)外,還有在字符串的末尾加上串結(jié)束標(biāo)志“'\\0'”,所以共有2個字節(jié)。

29.66解析:strlen()函數(shù)的作用是計(jì)算字符串的長度并作為函數(shù)的返回值,這里的長度不包括串尾的結(jié)束標(biāo)志\'\\0\'。\'\\t\'是轉(zhuǎn)義字符,代表橫向跳若干格;\'\\'\'是轉(zhuǎn)義字符,代表雙引號:\'\\023\'也只代表一個字符,而不管轉(zhuǎn)義字符后面有幾個符;\'\\xAB\'是以兩位十六進(jìn)制數(shù)AB表示的ASCII碼字符,只代表一個字符;\'\\n\'是轉(zhuǎn)義字符,代表回車換行。題中語句中的字符串有5個字符常量各代表一個字符,再加上字母C,所以返回的長度是6。

30.外模式外模式解析:數(shù)據(jù)庫系統(tǒng)的三級模式分別是內(nèi)模式、概念模式和外模式。其中,物理模式給出了數(shù)據(jù)庫的物理存儲結(jié)構(gòu)和存取方法;概念模式是數(shù)據(jù)庫系統(tǒng)中全局?jǐn)?shù)據(jù)邏輯結(jié)構(gòu)的描述;外模式是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式。

31.int*p*p或p[0]int*p\r\n*p或p[0]

32.數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)解析:Jackson方法是—‘種面向數(shù)據(jù)結(jié)構(gòu)的結(jié)構(gòu)化方法。

33.bar[i]bar[i]解析:fun函數(shù)中的內(nèi)層for循環(huán),求出了每一行中的最大值x,內(nèi)循環(huán)結(jié)束后就需要把最大值放在存儲每行最大值的數(shù)組bar[i]中,因此應(yīng)填bar[i]。

34.*(str+i)或str[i]*(str+i)或str[i]解析:str是指針變量,它指向字符型數(shù)據(jù),在循環(huán)過程中,可以用*(str+i)來訪問字符串中的第i個元素,判斷是否是結(jié)束標(biāo)志,如果不是,i=i+1,繼續(xù)取下一個元素進(jìn)行判斷,直到*(str+i)的值為'\\0'為止,也可以用下標(biāo)的方式引用字符,如*(str+i)相當(dāng)于str[i]。

35.-6354-6354解析:本題的考查點(diǎn)是函數(shù)的返回值。這個函數(shù)的目的是提取出由函數(shù)的形參傳送來的字符串中的數(shù)字字符,并通過相應(yīng)字符位置計(jì)算出它們數(shù)值形式的冪,最后返回字符串中的數(shù)字字符的數(shù)值形式,所以函數(shù)的返回值應(yīng)當(dāng)是“-6354”。

36.物理獨(dú)立性物理獨(dú)立性解析:數(shù)據(jù)的物理結(jié)構(gòu)改變,不影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),從而不引起應(yīng)用程序的變化,這種性質(zhì)叫做物理獨(dú)立性。

37.投影專門關(guān)系運(yùn)算包括對單個關(guān)系進(jìn)行垂直分解(投影操作)或水平分解(選擇操作)和對多個關(guān)系的結(jié)合(連接操作)等。

38.因?yàn)樵跅l件表達(dá)式(a<b)?a:b中,比較表達(dá)式a<b為真,所以x的值等于a的值等于1,后面兩個條件表達(dá)式中的比較表達(dá)式都為真,所以最終x的值等于1。\r\n\r\n

39.類類解析:在面向?qū)ο蟮姆椒ㄖ校丫哂邢嗤瑢傩院头椒ǖ膶ο蠓Q為類,類是對象的抽象,對象是類的實(shí)例。

40.rewind函數(shù)rewind函數(shù)解析:rewind函數(shù)的功能是使文件的位置指針回到文件的開頭。

41.D解析:不論p是指向什么類型的指針變量,都可以通過強(qiáng)制類型轉(zhuǎn)換的方法使之類型一致,強(qiáng)制類型轉(zhuǎn)換的格式為(數(shù)據(jù)類型*)。

42.B解析:執(zhí)行p=&a;后,p指向整數(shù)a,*p即p的目標(biāo)變量,也就是a;所以a=*p+b等價于a=a+b,可知a的值最終為11。

43.A解析:此題考查C語言的基本概念。變量的實(shí)質(zhì)就是在內(nèi)存中占據(jù)一定的存儲單元,存儲單元里存放的是該變量的值,變量的值可以根據(jù)需要進(jìn)行修改;整數(shù)在允許的范圍內(nèi)可以準(zhǔn)確的表示出來,但不可能表示無限度的實(shí)數(shù)。

44.D解析:快速排序的基本思想是,通過一趟排序?qū)⑴判蛴涗浄指畛瑟?dú)立的兩部

分,其中一部分記錄的關(guān)鍵字均比另一部分記錄的關(guān)鍵字小,再分別對這兩部分記錄繼

續(xù)進(jìn)行排序,以達(dá)到整個序列有序;插入排序的基本操作是指將無序序列中的各元素依

次插入到已經(jīng)有序的線性表中,從而得到一個新的序列;選擇排序的基本思想是:掃描整

個線性表,從中選出最小的元素,將它交換到表的最前面(這是它應(yīng)有的位置),然后對剩

下的于表采用同樣的方法,直到表空為止;歸并:排序是將兩個或兩個以上的有序表組合

成一個新的有序表。

注意:各種排序方法實(shí)現(xiàn)過程及實(shí)現(xiàn)機(jī)制。

45.B解析:在C中對文件操作必須先打開文件,待文件操作完畢后要關(guān)閉文件。對文件以讀的方式進(jìn)行打開操作時,同時會執(zhí)行文件的檢查文件是否存在,不存在將會返回空的文件指針,如果對文件以寫的方式打開時,文件不存在,將會自動創(chuàng)建文件,因此在C中打開文件前不必對其檢查文件是否存在,故答案為B。

46.A解析:本題考查ifelse語句。第1個if語句,先判斷條件,發(fā)現(xiàn)a<b條件成立,執(zhí)行下列的語句;第2個if語句,先判斷條件,發(fā)現(xiàn)b!=3條件成立,執(zhí)行下列的語句:第3個if語句,先判斷條件,c=5,則!c條件不成立,執(zhí)行與其配對的else語句:第4個if語句,先判斷條件,d=0,條件不成立,則x=-1,結(jié)束循環(huán)。

47.D

48.D解析:通常,引用一個數(shù)組元素可以用下標(biāo)法,如a[P-a]形式,或指針法,如*(&a[i])的形式。本題中a[9]=9,a[10]顯然超出了數(shù)組范圍,注意,數(shù)組的下標(biāo)是從0開始的。

49.C解析:本題考查十六進(jìn)制與十進(jìn)制之間的轉(zhuǎn)換:A8=10*16+8*1=168;

A4=10*16+4*1=164;

C8=12*16+8*1=200;

C4=12*16+4*1=196

50.A解析:函數(shù)的參數(shù)不僅可以是整型、實(shí)型、字符型等數(shù)據(jù),還可以是指針型。它的作用是將一個變量的地址傳遞到另一個函數(shù)中。當(dāng)數(shù)組名作參數(shù)時,如果形參數(shù)組中的各元素的值發(fā)生變化,實(shí)參數(shù)組元素的值也將隨之發(fā)生變化。

51.A解析:本題中定義一個全局變量a和一個局部變量a。局部變量和全局變量的不同在于,局部變量的存儲單元都是在進(jìn)入這些局部變量所在的函數(shù)體(或復(fù)合語句)時生成,退出其所在的函數(shù)體(或復(fù)合語句)時消失,而全局變量是在函數(shù)外部任意位置上定義的變量,它的作用域從變量定義的位置開始,到整個源文件結(jié)束為止。若全局變量和某一函數(shù)中的局部變量同名,則在該函數(shù)中,此全局變量被屏蔽,在該函數(shù)內(nèi),起作用的將是局部變量,與同名的全局變量不發(fā)生任何關(guān)系。在程序中首先定義了變量s并賦值為0,接著在嵌套的復(fù)合語句{}中定義了變量a并賦初值為5,接著執(zhí)行語句s+=a+a;在這條語句中a加1,但表達(dá)式a++還是原來的值,故s=s+5,s為5,程序執(zhí)行到外層,此時{}內(nèi)定義的變量a不再有效,此時的變量a為{}之前定義的且初值為3,接著執(zhí)行{}后面的語句s+=a++;相當(dāng)于執(zhí)行語句s=s+(++);即s=5+3,最后值為8,所以最后輸出的s值為8。所以4個選項(xiàng)中A正確。

52.A解析:“%o”以八進(jìn)制無符號形式輸出整數(shù),n=032767中的032767是整數(shù)的八進(jìn)制形式,當(dāng)以“%o”格式輸出n時,結(jié)果仍為32767。

53.B解析:在C語言中NULL的ASCII碼值為0,而輸出函數(shù)要求以整形格式輸出,故最后的輸出數(shù)0。所以,選項(xiàng)B正確。

54.D

55.D本題主要考查宏的一些基本概念。通常,預(yù)處理命令位于源文件的開頭,但不一定必須位于開頭,也可以寫在函數(shù)與函數(shù)之間;由于預(yù)處理命令的末尾不加分號,不以分號來區(qū)分一條宏命令,所以,不能在一行上寫多條預(yù)處理命令,只能寫一條,否則,系統(tǒng)處理時就會把它當(dāng)做一條命令處理;宏名一般習(xí)慣用大寫字母表示,以便與變量名相區(qū)別,這只是習(xí)慣用法,并不是C語言中有這樣的規(guī)定,宏的定義可用小寫字母;C語言中,宏的替換是在程序編譯時進(jìn)行,不占用程序運(yùn)行的時間,故本題答案為D。

56.A解析:while是先判斷條件再執(zhí)行語句;do-while則是先執(zhí)行依次語句再判斷條件從而決定是否繼續(xù)再執(zhí)行循環(huán)體中的語句,這正是二者主要區(qū)別。注意:3種循環(huán)結(jié)構(gòu)的比較。

57.D解析:在C語言的標(biāo)準(zhǔn)中,short占2個字節(jié)、long占4個字節(jié),但int的大小和編譯系統(tǒng)相關(guān)。例如在Turbo\u3000C\u30002.0中,int占2個字節(jié),但在VisualC++6.0(VC6可以用做C語言編譯器)中占4個字節(jié)。故本題應(yīng)該選擇D。

58.D解析:本題中,scanf函數(shù)的格式控制沒有空格,所以,對于選項(xiàng)A)、B)、C),輸入的第一個空格會作為字符賦值給變量c1,而不會被解釋成分隔符。

59.B選擇,連接,投影是專門的關(guān)系運(yùn)算,選擇是選擇滿足條件的元組,而投影是選擇滿足條件的屬性或者說列。并是傳統(tǒng)的關(guān)系運(yùn)算,是將兩個關(guān)系中的元組合并在一起再去掉重復(fù)的部分。選擇,投影,并三個運(yùn)算得到的結(jié)果屬性數(shù)并沒有改變或者說還有減少,而連接時將兩個關(guān)系進(jìn)行笛卡爾積運(yùn)算,在挑選滿足條件的項(xiàng)。其屬性個數(shù)一般會多于原來關(guān)系中的屬性數(shù)。

60.C解析:指針變量是用來存放地址的。&:取地址運(yùn)算符。*:指針運(yùn)算符。**c為指針變量*c所指向的存儲單元,*c為指針指針變量c所指向的存儲單元,而c=&b表示c為變量b的地址,b=&a表示b為變量a的地址。表邊式**c的值就是變量a中的值。

61.B本題是找出打印*號的條件,從圖中我們可以找到規(guī)律,第1行1個*,第2行3個,第3行5個……,也就是每行中*的個數(shù)恰好是行數(shù)的2倍減1個。

在程序中,首先定義兩個循環(huán)變量,然后執(zhí)行for循環(huán),從程序中不難看出,這個循環(huán)用來輸出題目中給出的4行*符號。

當(dāng)循環(huán)變量i=1時,即輸出第一行的*圖像,從圖像中可以看出,第一行只需要輸出一個*符號,而且在其輸出前,先輸出三個空格,從程序中我們可以看出,該循環(huán)體中第一個循環(huán)的作用用來輸出三個空格,第二個循環(huán)的作用肯定是用來輸出*符號,本題需要填空的地方正好是這個循環(huán)的結(jié)束條件,根據(jù)第一行只輸出一個*符號,我們可以知道這個循環(huán)執(zhí)行一次。

同理,我們可以知道,當(dāng)循環(huán)變量i=2時,這個循環(huán)需要執(zhí)行3次,i=3時,這個循環(huán)執(zhí)行5次,i=4時,這個循環(huán)執(zhí)行7次,那么我們可以推斷出循環(huán)結(jié)束的條件應(yīng)該與變量i有關(guān),結(jié)合我們開始對題目的分析,每行中*的個數(shù)恰好是行數(shù)的2倍減1個,因此,可以知道本題需要填寫的內(nèi)容為2*i-1,本題正確答案選B。

62.C本題主要考查scanf輸入語句及其格式。在本題中的四個選項(xiàng)中,分別用不同的格式試圖從鍵盤輸入數(shù)據(jù)。

在選項(xiàng)A中,給出的輸入格式是“%2d,%2d,%2d”,表示輸入的數(shù)據(jù)中間用逗號隔開,而且其輸入的寬度為2,即可以輸入一個兩位數(shù),如果輸入的位數(shù)小于2,則左邊補(bǔ)空格。在其輸出列表中,表示方式也不對,其他三項(xiàng)是正確的。

在選項(xiàng)B中,給出的輸入格式是“%d%d%d”,僅表示輸入的數(shù)據(jù)中間用空格隔開。

在選項(xiàng)C中,給出的輸入格式是“%d,%d,%d”,僅表示輸入的數(shù)據(jù)中間用逗號隔開,與題目給出的要求一致,為正確答案。

在選項(xiàng)D中,給出的輸入格式是“i=%d,j=%d,k=%d”,表示輸入的數(shù)據(jù)中間不僅用逗號隔開,還需要如“i=”的說明符。

63.C解析:數(shù)據(jù)結(jié)構(gòu)概念一般包括3個方面的內(nèi)容,數(shù)據(jù)的邏輯結(jié)構(gòu)、存儲結(jié)構(gòu)及數(shù)據(jù)上的運(yùn)算集合。數(shù)據(jù)的邏輯結(jié)構(gòu)只抽象地反映數(shù)據(jù)元素之間的邏輯關(guān)系,而不管它在計(jì)算機(jī)中的存儲表示形式。

64.C解析:考查棧和隊(duì)列概念的掌握。棧和隊(duì)列都是一種特殊的操作受限的線性表,只允許在端點(diǎn)處進(jìn)行插入和刪除。二者的區(qū)別是:棧只允許在表的一端進(jìn)行插入或刪除操作,是一種'后進(jìn)先出'的線性表;而隊(duì)列只允許在表的一端進(jìn)行插入操作,在另一端進(jìn)行刪除操作,是一種'先進(jìn)先出'的線性表。模塊之間的耦合程度反映了模塊的獨(dú)立性,也反映了系統(tǒng)分解后的復(fù)雜程度。按照耦合程度從弱到強(qiáng),可以將其分成5級,分別是:數(shù)據(jù)耦合、同構(gòu)耦合、控制耦合、公用耦合和內(nèi)容耦合。選項(xiàng)C),沒有這種耦合方式。

65.A本題考查的是格式輸)ki$i數(shù),即按用戶指定的格式從鍵盤上把數(shù)據(jù)輸入到指定的變量之中,其中的格式命令可以說明最大域?qū)?。在百分?%)與格式碼之間的整數(shù)用于限制從對應(yīng)域讀入的最大字符數(shù)。因此j的值為55,y的值為566.0,字符數(shù)組nanle的值為7777123。故本題答案為A)。

66.C

67.A數(shù)組定義后,不可以對數(shù)組整體賦值,s是二維數(shù)組,因SS[1]是一維字符數(shù)組,即字符串,字符串賦值可以使用strcpy(SS[1],”right”);這樣的形式,而選項(xiàng)A中對二維數(shù)組中的第…l維(相當(dāng)于一個一維數(shù)組)賦值,是不可以的。選項(xiàng)8和D是定義時對數(shù)組初始化,這是可以的。選項(xiàng)c中,將字符串在內(nèi)存中的首地址賦給指針數(shù)組的一個元素,這是可以的。

68.A本題考查的是輸入輸出函數(shù)。sCanf()是格式化輸入函數(shù);getChar()函數(shù)從鍵盤緩沖區(qū)讀一個字符;putChar()輸出一個字符;printf()函數(shù)是格式化輸出函數(shù)。在題目中,程序執(zhí)行到sCanf()函數(shù)時,會暫停等待用戶輸A4個字符,按題意輸)k123<回車>后,字符l-3被分別賦值到Cl-C3中,而C4會得到一個換行符’\\\\n’。然后執(zhí)行第1個getChar()函數(shù),由于前面的sCanf()函數(shù)讀完了緩沖區(qū)中的所有字符,所以此時程序又會暫停等待用戶輸入,按題意輸入45678<回車>后,緩沖區(qū)第一個字符4賦值到。5,第二個字符5賦值給C6,所以本題應(yīng)該選擇A)。

69.A本題考查的是指向數(shù)組的指針。本題中定義了一個字符串?dāng)?shù)組和指針,并將指針pc指向該數(shù)組的首地址,執(zhí)行輸出語句printf(”%c\n”,*(pc+5));。語句中的

*(pc+5)指的就是pc[5]的值,所以最后輸出的結(jié)果為z。

70.D&p是p自己的地址值,p所代表的存儲單元里的值為p所指的存儲單元的地址。

71.C

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

73.D本題主要考查八進(jìn)制數(shù)和十六進(jìn)制數(shù)的正確表示。八進(jìn)制數(shù)的特點(diǎn)是以0開頭,而且數(shù)據(jù)中的每個數(shù)都要小于8;而十六進(jìn)制數(shù)的特點(diǎn)是以0X開頭,數(shù)據(jù)中的元素除了0~9這些數(shù)字外,還可以是A、B、C、D、E、F這些字符。

在選項(xiàng)A中,018的表示是錯誤的,因?yàn)榘诉M(jìn)制數(shù)中不應(yīng)該出現(xiàn)8這個數(shù)字元素。另外兩個表示正確。

在選項(xiàng)B中,0ABC的表示不正確,八進(jìn)制數(shù)中根本不應(yīng)該出現(xiàn)ABC這些數(shù)字元素。另外兩個正確。

在選項(xiàng)C中,沒有不正確的表示方法。

在選項(xiàng)D中,0A12的表示不正確,而7FF和-123根本就不是八進(jìn)制或十六進(jìn)制數(shù),因此本題正確答案選D。

74.D本題主要考查fscanf函數(shù)的調(diào)用形式。fscanf函數(shù)與scanf函數(shù)類似,都是格式化輸入函數(shù),它們不同的地方是:fscanf函數(shù)輸入的對象不是終端,而是磁盤文件,函數(shù)的調(diào)用格式為:

fscanf(文件指針,格式字符串,輸入表列)

其中文件指針指向待操作的磁盤文件,而格式字符串描述的是輸入內(nèi)容的格式,輸入列表描述的是與輸入格式對應(yīng)的輸入元素,輸入列表中可以有多個輸入元素。

75.D解析:C語言規(guī)定標(biāo)識符只能由字母、數(shù)字和下劃線三種符號組成,而且第一個字符必須是字母或下劃線,標(biāo)識符名不能與關(guān)鍵字重名。選項(xiàng)A)中Main與主函數(shù)名main不同,所以選項(xiàng)D)是非法的標(biāo)識符。

76.C該程序中int8pl=&a,+p2=&b,4P=&c;指定義三個指針變量,并賦值,即使pl指向a;p2指向b;p指向c。+P=。pl$(+p2)。;該條語句是給P所指的存儲單元c賦值,就是pl所指的存儲單元的值,即a的值,與p2所指的存儲單元b的值相乘,也就是c=a+b,等價于c=1·3=3;因此C選項(xiàng)正確?!?/p>

77.A

78.D\n由n!的數(shù)字定義可知n!=n*(n-1)*(n-2)*…*1。在選項(xiàng)A中,由于f的初值為0,在for循環(huán)語句中,f依次乘以l,2,3,…,n,最后計(jì)算得到f=n!=0,所以選項(xiàng)A不正確。在選項(xiàng)B中,f的初值為1,在for循環(huán)語句中,f依次乘以l,2,3,…,(n-1),最后計(jì)算得到f=(n-1)!,所以選項(xiàng)B不正確。在選項(xiàng)C中,f的初值為l,在for循環(huán)語句中,f依次乘以n,n+1,n+2,……,所以選項(xiàng)C不正確。在選項(xiàng)D中,f的初值為l,在for循環(huán)語句中,f依次乘以n,n-1,n-2,…,2,最后計(jì)算得到f=n!,所以選項(xiàng)D正確。

\n

79.C

80.B解析:宏定義是預(yù)處理命令,即在C源程序進(jìn)行編譯之前,編譯程序?qū)υ闯绦蜻M(jìn)行編譯預(yù)處理時所進(jìn)行的一種替換操作。所以選項(xiàng)C和\u3000D可以排除。宏定義是用宏名代替一個字符串,也就是作簡單的置換,不做正確性檢查。所以選項(xiàng)A的敘述也不正確,宏替換時100被當(dāng)作一個字符串來替換宏名的,而不是被看作整數(shù)值100。故本題的正確答案為B。

81.

82.1doublefun(doublea[],intn)Doublesum=0,max,min;inti;max=min=a[0];for(i=0;i<n;i++){</n;i++)<n;i++)sum=sum+a[i];</n;i++)if(max<a[i])max=a[i];<n;i++)if(min>a[i])min=a[i];</n;i++)<n;i++)sum=sum-max-min;</n;i++)<n;i++)return(sum/(n-2));</n;i++)<n;i++)}</n;i++)<n;i++)設(shè)定3個變量,sum存放和值,max存放最大值,min存放最小值。max和min都賦為數(shù)組中第1個元素的值。利用循環(huán)將數(shù)組中元素累加到sum中,并找出最大值和最小值。sum值減去最大值和最小值。函數(shù)返回sum除以(元素個數(shù)減2)得平均值。</n;i++)2021年安徽省池州市全國計(jì)算機(jī)等級考試C語言程序設(shè)計(jì)模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.線性表L=(a1,a2,a3,…ai,…an),下列說法正確的是()

A.每個元素都有一個直接前件和直接后件

B.線性表中至少要有一個元素

C.表中諸元素的排列順序必須是由小到大或由大到小

D.除第一個元素和最后一個元素外,其余每個元素都有一個且只有一個直接前件和直接后件

2.

有以下程序:

main

{intnum[4][4]={1,2,3,4},{5,6,7,8},{9,10,11,

12,},{13,14,15,16}},i,j;

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

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

for(j=________;J<4;j++)printf("%4d",num

[i][j]);

printf("\n");}}

若要按以下形式輸出數(shù)組右上半三角

1234

678

1112

16

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

A.i-1B.iC.i+1D.4一i

3.下面程序的運(yùn)行結(jié)果是()#include<stdio.h>#include<string.h>main(){char*a="AbcdEf",*b="aBcD"a++;b++;printf("%d\n",strcmp(a,b));}

A.0B.負(fù)數(shù)C.正數(shù)D.無確定值

4.有下列程序:intfun(intx[],intn){staticintsum=0,i;for(i=0;i<n;i++)sum+=x[i]:returnsum;}main(){inta[3]={1,2,3,4,5),b[3]={6,7,8,9),s=0;s=fun(a,5)+fun(b,4);printf("%d\n",s);}程序執(zhí)行后的輸出結(jié)果是()。、A.45B.50C.60D.55

5.下列敘述中正確的是:()A.C語言程序總是從第一個定義的函數(shù)開始執(zhí)行

B.C語言程序中,函數(shù)類型必須進(jìn)行顯式聲明

C.C語言程序中,return語句必須放在函數(shù)的最后

D.C語言程序中,return語句中表達(dá)式的類型應(yīng)該與函數(shù)的類型一致

6.若有定義“inta=1,b=2,c=3,d=4,m=2,n=2;”,則執(zhí)行“(m=a>b)&&(n=c>d)”后n的值是()。

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

7.已知各變量的類型說明如下則以下不符合C語言語法的表達(dá)式是()。A.x%(-3)B.w+=-2C.k=(a=2,b=3,a+b)D.a+=a-=(b=4)*(a=3)

8.若某鏈表最常用的操作是在最后一個結(jié)點(diǎn)之后插入一個結(jié)點(diǎn)或刪除最后一個結(jié)點(diǎn)。則采用()存儲方式最節(jié)省運(yùn)算時間。

A.單鏈表B.雙鏈表C.單循環(huán)鏈表D.帶頭結(jié)點(diǎn)的雙循環(huán)鏈表

9.采用折半查找法查找長度為n的線性表時,每個元素的平均查找長度為()。

A.O(n2)B.O(nlog2n)C.O(n)D.O(log2n)

10.在一個被調(diào)用函數(shù)中,關(guān)于return語句使用的描述,()是錯誤的。

A.被調(diào)用函數(shù)中可以不用return語句

B.被調(diào)用函數(shù)中可以使用多個return語句

C.被調(diào)用函數(shù)中,如果有返回值,就一定要有return語句

D.被調(diào)用函數(shù)中,一個return語句可以返回多個值給調(diào)用函數(shù)

11.下列敘述中正確的是()。

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

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

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

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

12.具有10個葉子結(jié)點(diǎn)的二叉樹中有()個度為2的結(jié)點(diǎn)。

A.8B.9C.10D.11

13.以下與數(shù)學(xué)表達(dá)式“0<x<5且x≠2”不等價的C語言邏輯表達(dá)式是()。

A.(0<x<5)&&(x!=2)

B.0<x&&x<5&&x!=2

C.x>0&&x<5&&x!=2

D.(x>0&&x<2)||(x>2&&x<5)

14.若要求從鍵盤讀入含有空格字符的字符串,應(yīng)使用函數(shù)()。

A.getcharB.getcC.getsD.scanf

15.

16.語句:“printf("%d",(a=)&&(b=-2));”的輸出結(jié)果是()。

A.無輸出B.結(jié)果是不確定C.-1D.1

17.有以下程序:#include<stdio.h>main(){FILE*fp;inti,a[6]={1,2,3,4,5,6},b[6];fp=fopen(“d.dat”,“w+b”);fwrite(a,sizeof(int),6,fp);for(i=0;i<6;i++)fwrite(&a[2],sizeof(int),1,fp);rewind(fp);fseek(fp,sizeof(int)*2,SEEK_CUR);fread(b,sizeof(int),6,fp);fclose(fp);for(i=0;i<6;i++)printf(“%d,”,b[i]);}程序運(yùn)行后的輸出結(jié)果是()。

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

18.若有以下定義:chara;intb;floatc;doubled;則表達(dá)式a*b+b-c值的類型為()。A.floatB.intC.charD.double

19.現(xiàn)有1GB數(shù)據(jù)進(jìn)行排序,計(jì)算資源只有1GB內(nèi)存可用,下列排序方法中最可能出現(xiàn)性能問題的是()

A.堆排序B.插入排序C.歸并排序D.快速排序E.選擇排序F.冒泡排序

20.在C語言程序中,main函數(shù)的位置()

A.必須作為第一個函數(shù)B.必須作為最后一個函數(shù)C.可以任意D.必須放在它所調(diào)用的函數(shù)之后

二、2.填空題(20題)21.函數(shù)mycmp(char*s,char*t)的功能是比較字符串s和t的大小,當(dāng)s等于t時返回0,當(dāng)s>t時返回正值,當(dāng)s<t時返回負(fù)值。請?zhí)羁铡?/p>

mycmp(char*s,char*t)

{while(*s==*t)

{if(*s=='\0')return0;

++s;++t;

}

return(【】);

}

22.下列程序運(yùn)行時輸入1234567<CR>,則輸出結(jié)果是______。

#include<stdio.h>

main()

{inta=1,b;

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

}

23.設(shè)有以下變量定義,并已賦確定的值,

charw;intx;floaty;doubleZ;

則表達(dá)式:w*x+z-y所求得的數(shù)據(jù)類型為上【】。

24.以下程序運(yùn)行后的輸出結(jié)果是______。

fun(intx)

{if(x/2>0)fun(x/2);

printf("%d",x);

}

main()

{fun(6);}

25.若從鍵盤輸入58,則以下程序的輸出結(jié)果是【】。

main()

{inta;

scanf(“%d”,&A);

if(a>50)printf(“%d”,A);

if(a>40)printf(“%d”,A);

if(a>30)printf(“%d”,A);

}

26.下列程序的運(yùn)行結(jié)果是______。

main()

{inti,a[10];

a[0]=a[1]=1;

for(i=2;i<5;i++)

a[i]=a[i-2]+a[i-1];

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

{if(i%2==0)printf("\n");

printf("%d",a[i]);

}

}

27.設(shè)一棵完全二叉樹共有700個結(jié)點(diǎn),則在該二叉樹中有【】個葉子結(jié)點(diǎn)。

28.\13'在內(nèi)存中占1個字節(jié),"\12"在內(nèi)存中占______個字節(jié)。

29.“printf("%d\n",strlen("\t\"\023\xAB\nC"));”語句的輸出結(jié)果是()。

30.數(shù)據(jù)庫系統(tǒng)其內(nèi)部分為三級模式,即概念模式、內(nèi)模式和外模式。其中,______是用戶的數(shù)據(jù)視圖,也就是用戶所見到的數(shù)據(jù)模式。

31.下面函數(shù)用來求出兩個整數(shù)之和,并通過形參傳回兩數(shù)相加之和值。請?zhí)羁铡?/p>

intadd(intx,inty,【】,)

{【】=x+y;}

32.Jackson方法是一種面向【】的結(jié)構(gòu)化方法。

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(1=0;i<3;i++)printf("%4d",b[i]);

printf("\n");

}

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

{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.mystrlen函數(shù)的功能是計(jì)算str所指字符串的長度,并作為函數(shù)值返回。請?zhí)羁铡?/p>

intmystrlen(char*str)

{inti;

for(i=0;【】!='\0';i++);

return(i);}

35.若給fun函數(shù)的形參s傳送字符串:"abc-6354abc",則函數(shù)的返回值是()。(字符串中包括空格)

longfun(charS[])

{longn;intsign;

for(;isspace(*s)||islower(*s);s++);

sign=(*s=='-')?-1:1;

if(*s=='+'||*s=='-')s++;

for(n=0;isdigit(*s);s++)

n=10*n+(*S-'0');

returnsign*n;

}

36.在數(shù)據(jù)庫理論中,數(shù)據(jù)物理結(jié)構(gòu)的改變,如存儲設(shè)備的更換、物理存儲的更換、存取方式等都不影響數(shù)據(jù)庫的邏輯結(jié)構(gòu),從而不引起應(yīng)用程序的變化,稱為【】。

37.關(guān)系數(shù)據(jù)庫管理系統(tǒng)能實(shí)現(xiàn)的專門關(guān)系運(yùn)算包括選擇、連接和【】。

38.以下程序運(yùn)行后的輸出結(jié)果是______。

main()

{intx,a=1,b=2,c=3,d=4;

x=(a<b)?a:b;x=(x<c)?x:c;x=(d>x)?x:d;

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

}

39.在面向?qū)ο蟮姆椒ㄖ校琠_____描述的是具有相似屬性與操作的一組對象。

40.在對文件進(jìn)行操作的過程中,若要是文件位置的指針回到文件的開頭,應(yīng)使用的函數(shù)是【】。

三、1.選擇題(20題)41.若要用下面的程序片段使指針變量p指向一個存儲整型變量的動態(tài)存儲單元int*pp=______malloc(sizeof(int));則應(yīng)填入______。

A.intB.int*C.(*int)D.(int*)

42.有如下程序段int*p,a=10,b=1;p=&a;a=*p+b;執(zhí)行該程序段后,a的值為______。

A.12B.11C.10D.編譯出錯

43.在C語言中,以下說法不正確的是()。

A.在C程序中,整數(shù)和實(shí)數(shù)都能被準(zhǔn)確無誤地表示出來

B.在C程序中,任何一個變量名都代表存儲器中的一個位置

C.靜態(tài)變量的生存期與整個程序的運(yùn)行期相同

D.C語言中,任何變量都必須先聲明才能進(jìn)行引用

44.在下列幾種排序方法中,要求內(nèi)存量最大的是______。

A.插入排序B.選擇排序C.快速排序D.歸并排序

45.下述關(guān)于C語言文件的操作的結(jié)論中,正確的是______。

A.對文件操作必須先關(guān)閉文件

B.對文件操作必須先打開文件

C.對文件操作順序無要求

D.對文件操作前必須先測文件是否存在,然后再打開文件

46.下列程序的運(yùn)行結(jié)果是()。#include<stdio.h>main(){intx=5,a=1,b=2,c=5,d=0;if(a<B)if(b!=3)if(!C)x=1;elseif(D)x=1;elsex=-1;printf("%d",x);}

A.-1B.0C.1D.不確定的值

47.在C語言中,表達(dá)式10!=9的值是______。

A.真B.非零值C.0D.1

48.若已定義:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0≤i≤9,則對a數(shù)組元素不正確的引用是______。

A.a[p-a]B.*(&a[i])C.p[i]D.a[10]

49.與十進(jìn)制數(shù)200等值的十六進(jìn)制數(shù)為A.A8B.A4C.C8D.C4

50.下列程序執(zhí)行后的輸出結(jié)果是voidfunc(int*a,intb[]){b[0]=*a+6;}main(){inta,b[5];a=0;b[0]=3;func(&a,b);printf("%d\n",b[0]);}

A.6B.7C.8D.9

51.有以下程序inta=3;main(){ints=0;{inta=5;s+=a++;}s+=a++;printf("%d\n",s);}程序運(yùn)行后的輸出結(jié)果是______。

A.8B.10C.7D.11

52.若有以下程序段(n所賦值的是八進(jìn)制數(shù)):intm=32767,n=032767;printf("%d,%o\n",m,n);執(zhí)行后輸出結(jié)果是______。

A.32767,32767B.32767,032767C.32767,77777D.32767,077777

53.以下程序的輸出結(jié)果是()。#include<stdio.h>main(){printf("%d\n",NULL);}

A.不確定的值(因變量無定義)B.0C.-1D.1

54.Modem的功能是實(shí)現(xiàn)()

A.數(shù)字信號的編碼B.模擬信號的采樣、量化C.數(shù)字信號的整形D.模擬信號與數(shù)字信號的轉(zhuǎn)換

55.以下敘述中正確的是______。A.預(yù)處理命令行必須位于源文件的開頭

B.在源文件的一行上可以有多條預(yù)處理命令

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

D.宏替換不占用程序的運(yùn)行時間

56.C語言中while和do-while循環(huán)的主要區(qū)別是

A.do-while的循環(huán)體至少無條件執(zhí)行一次

B.while的循環(huán)控制條件比do-while的循環(huán)控制條件更嚴(yán)格

C.do-while允許從外部轉(zhuǎn)到循環(huán)體內(nèi)

D.do-while的循環(huán)體不能是復(fù)合語句

57.以下關(guān)于long、int和short類型數(shù)據(jù)占用內(nèi)存大小的敘述中正確的是(),

A.均占4個字節(jié)B.根據(jù)數(shù)據(jù)的大小來決定所占內(nèi)存的字節(jié)數(shù)C.由用戶自己定義D.由C語言編譯系統(tǒng)決定

58.設(shè)變量均已正確定義,若要通過scanf("%d%c%d%c",&a1,&c1,&a2,&c2);語句為變量a1和a2賦數(shù)值10和20,為變量c1和c2賦字符X和Y。以下所示的輸入形式中正確的是(注:□代表空格字符)

A.10□X□20□Y<回車>

B.10□X20□Y<回車>

C.10□X<回車>20□Y<回車>

D.10X<回車>20Y<回車>

59.下列關(guān)系運(yùn)算中,能使經(jīng)運(yùn)算后得到的新關(guān)系中屬性個數(shù)多于原來關(guān)系中屬性個數(shù)的是()。

A.選擇B.連接C.投影D.并

60.有以下程序段:main(){inta=5,*b,**c;c=&b;b=&a;}程序在執(zhí)行了c=&b;b=&a;語句后,表達(dá)式**c的值是______。

A.變量a的地址B.變量b中的地址C.變量a中的值D.變量b的地址

四、選擇題(20題)61.下面程序的功能是輸出以下形式的金字塔圖案。

main()

{

inti,j;

for(i=1;i<=4;i++)

{

for(j=1;j<=4-i;j++)

printf("");

for(j=1;j<=______;j++)

printf("*");

printf("\n");

}

}

在下畫線處應(yīng)填入的是

A.iB.2*i-1C.2*i+1D.i+2

62.已知i,j,k為int型變量,若從鍵盤輸入:1,2,3<回車>,使i的值為1,j的值為2,k的值為3,以下選項(xiàng)中正確的輸入語句是

A.scanf("%2d,%2d,%2d",i,j,k);B.scanf("%d%d%d",&i,&j,&k);

C.scanf("%d,%d,%d",&i,&j,&k);D.scanf("i=%d,j=%d,k=%d",&i,&j,&k);

63.在數(shù)據(jù)結(jié)構(gòu)中,與所使用的計(jì)算機(jī)無關(guān)的是數(shù)據(jù)的()。

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

溫馨提示

  • 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

提交評論