2021-2022年黑龍江省綏化市全國計算機等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第1頁
2021-2022年黑龍江省綏化市全國計算機等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第2頁
2021-2022年黑龍江省綏化市全國計算機等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第3頁
2021-2022年黑龍江省綏化市全國計算機等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第4頁
2021-2022年黑龍江省綏化市全國計算機等級考試C語言程序設(shè)計預(yù)測試題(含答案)_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2021-2022年黑龍江省綏化市全國計算機等級考試C語言程序設(shè)計預(yù)測試題(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.在16位C編譯系統(tǒng)上,若定義longa;,則能給a賦值40000的正確語句是()

A.a=20000+20000;B.a=4000*10;C.a=30000+10000;D.a=4000L*10L;

2.下面程序段的輸出結(jié)果是______。char*s="abcde";s+=2;printf("%d",s);

A.cdeB.字符'c'C.字符'c'的地址D.無確定的輸出結(jié)果

3.下面的哪一個保留字不能作為函數(shù)的返回類型()。

A.voidB.intC.newD.long

4.以下程序擬實現(xiàn)計算s=1+2*2+3*3+…+n*n+…,直到s>1000為止。#include<stdio.h>main(){ints,n;s=1;n=1;do{n=n+1;s=s+n*n;}while(s>1000);printf(“s=%d\n”,s);}程序運行后,不能得到正確結(jié)果,以下修改方案正確的是()。

A.把“while(s>1000);”改為“while(s<=1000);”

B.把“s=1”改為“s=0”

C.把“n=1;”改為“n=0;”

D.把“n=n+1”改為“n=n*n”

5.有以下程序:#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]);}程序運行后的輸出結(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,

6.軟件生命周期中,花費最多的階段是()。

A.詳細設(shè)計B.軟件編碼C.軟件測試D.軟件維護

7.給出發(fā)下定義:charx[]="abcdefg";chary[]={'a','b','c','d','e','f','g'};則正確的敘述為______。

A.數(shù)組x和數(shù)組y等價B.數(shù)組x和數(shù)組y的長度相同C.數(shù)組x的長度大于數(shù)組y的長度D.數(shù)組x的長度小于數(shù)組y的長度

8.在多媒體計算機系統(tǒng)中,不能用以存儲多媒體信息的是A.光纜B.軟盤C.硬盤D.光盤

9.若有定義“a[]={1,2,3,4,5,6,7,8,9,10};”,則“a[a[5]-a[7]/a[1]]”的值是()。

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

10.不帶頭結(jié)點的單鏈表head為空的判定條件是()。A.head=NULLB.head→next=NULLC.head→next=headD.head!=NULL

11.單鏈表的存儲密度()順序表的存儲密度。

A.大于B.等于C.小于D.不能確定

12.有如下定義#defineD2intx=5;floaty=3.83;charC='D';則下面選項中錯誤的是

A.x++;B.y++;C.c++;D.D++;

13.假定已建立以下鏈表結(jié)構(gòu),且指針p和q已指向如圖所示的節(jié)點。則下列選項中可將q所指節(jié)點從鏈表中刪除并釋放該節(jié)點的語句組是()。

A.p->next=q->next;free(q);

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

C.p=q;free(q);

D.(*p).next=(*q).next;free(p);

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

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

15.有以下函數(shù):fun(char*p){returnp;}該函數(shù)的返回值是()。

A.無確切值B.形參p中存放的地址值C.一個臨時存儲單元的地址D.形參p自身的地址值

16.設(shè)一棵滿二叉樹共有15個結(jié)點,則在該滿二叉樹中的葉子結(jié)點數(shù)為()

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

17.下列敘述中錯誤的是()。A.在數(shù)據(jù)庫系統(tǒng)中,數(shù)據(jù)的物理結(jié)構(gòu)必須與邏輯結(jié)構(gòu)一致,

B.數(shù)據(jù)庫技術(shù)的根本目標是要解決數(shù)據(jù)的共享問題

C.數(shù)據(jù)庫設(shè)計是指在已有數(shù)據(jù)庫管理系統(tǒng)的基礎(chǔ)上建立數(shù)據(jù)庫

D.數(shù)據(jù)庫系統(tǒng)需要操作系統(tǒng)的支持

18.有下列程序:fun(intx,inty){staticintm=0,i=2;i+=m+1;m=i+x+y;returnm;}main(){intj=1,m=1,k;k=fun(j,m);printf("%d,",k);k=fun(j,m);printf("%d\n",k);}執(zhí)行后的輸出結(jié)果是()。

A.5,5B.5,11C.11,11D.11,5

19.有下列程序: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

20.若已定義x和y為double類型,則表達式:x=1,y=x+3/2的值是()A.1B.2C.2.0D.2.5

二、2.填空題(20題)21.表達式1/2*(int)3.7/(int)(2.4*(1.5+2.5))值的數(shù)據(jù)類型為______。

22.下面程序的運行結(jié)果是()。

#defineEXCH(a,B){intt;t=a;a=b;b=t;}

main()

{intx=1,y=2;

EXCH(x,y);

printf("x=%d,y=%d\n",x,y);

}

23.數(shù)據(jù)的邏輯結(jié)構(gòu)有線性結(jié)構(gòu)和______兩大類。

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

intn='c';

switch(n++)

{default:printf("error");break;

case'a':

case'A':

case'b':

case'B':printf("good");break;

case'c':case'C':printf("pass");

case'd':case'D':printf("warn");

}

25.為了便于對照檢查,測試用例應(yīng)由輸入數(shù)據(jù)和預(yù)期的【】兩部分組成。

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

#defineMAX(x,y)(x)>(y)?(x):(y)

main()

{inta=5,b=2,c=3,d=3,t;

t=MAX(a+b,c+d)*10;

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

}

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

main()

{inta=0;

a+=(a=8);

printf(“%d\n”,A);

}

28.軟件危機出現(xiàn)于60年代末,為了解決軟件危機,人們提出了【】的原理來設(shè)計軟件,這就是軟件工程誕生的基礎(chǔ)。

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

#include<stdio.h>

main()

{inti,m=0,n=0,k=0;

for(i=9;i<=11;i++)

switch(i/10)

{case0:m++;n++;break;

case10:n++;break;

default:k++;n++;

}

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

}

30.下列語句能循環(huán)______次。

ints=12;

while(s);

--s;

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

#include<stdio.h>

longfib(intg)

{switch(g)

{case0:return0;

case1:

case2:return1;}

return(fib(g-1)+fib(g-2));}

main()

{longk;

k=fib(5);

printf("k=%5ld\n",k);}

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

33.有以下程序:

#include<string.h>

structSTU

{charname[10];

intnum;};

voidf(char*name,intnum)

{structSTUs[2]={{"SunDan",20044},{"Penghua",20045}};

num=s[0].num;

strcpy(name,s[0].name);

}

main()

{structSTUs[2]={{"YangSan",20041},{"LiSiGuo",20042}},*p;

p=&s[1];f(p->name,p->num);

printf("%s%d\n",p->name,p->num);

}

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

34.下面程序把從終端讀入的文本(用@作為文本結(jié)束標志)輸出到一個名為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);

}

35.數(shù)據(jù)庫恢復(fù)是將數(shù)據(jù)庫從______狀態(tài)恢復(fù)到某一已知的正確狀態(tài)。

36.通常,將軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程稱為【】。

37.下面函數(shù)的功能是將一個字符串的內(nèi)容顛倒過來,請?zhí)羁铡?/p>

voidfun(charstr[])

{inti,j,k;

for(i=0,j=【】;i<j;i++,j--)

{k=str[i];

str[i]=str[j];

str[j]=k;}}

38.軟件危機的核心問題是【】和軟件開發(fā)效率低。

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

structaa

{intx,*y;

}*p;

inta[8]={10,20,30,40,50,60,70,80};

structaab[4]={100,&a[1],200,&a[3],10,&a[5],20,&a[7]};

main()

{p=b;

printf(%d",*++p->y);

printf("%d\n",++(p->x));

}

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

main()

{inta[4][4]={{1,2,3,4},{5,6,7,8},{11,12,13,14},{15,16,17,18}};

inti=0,j=0,s=0;

while(i++<4)

{if(i==2||i==4)continue;

j=0;

do{s+=a[i][j];j++;}while(j<4);

}

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

}

三、1.選擇題(20題)41.以下程序的功能是計算:。#include<stdio.h>main(){intn;floats;s=1.0;for(n=10;n>1;n--)s=s+1/n;printf("%6.4f\n",s);}程序運行后輸出結(jié)果錯誤,導(dǎo)致錯誤結(jié)果的程序行是()。

A.s=1.0;

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

C.s=s+1/n;

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

42.設(shè)有下列說明語句:StrcutStr{intx;floaty;charz;}st;則下列的敘述中不正確的是()。

A.struct是結(jié)構(gòu)體類型的關(guān)鍵字

B.st是結(jié)構(gòu)體類型名

C.x、y、z都是結(jié)構(gòu)體成員名

D.structstr是結(jié)構(gòu)體類型名

43.有以下程序main(){chara[]="abcdefg",b[10]="abedefg";pfintf("%d%d\n",sizeof(a),sizeof(b));}執(zhí)行后輸出結(jié)果是

A.77B.88C.810D.1010

44.對序線性表23,29,34,55,60,70,78用二分法查找值為60的元素時,需要比較次數(shù)為()

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

45.若有定義:inta=7;floatx=2.5,y=4.7;則表達式x+a%3,(int)(x+y)%2/4的值是

A.2.5B.2.75C.3.5D.0

46.下列程序運行后的輸出結(jié)果是______。main(){inta=2,b=-1,c=2;if(a<b)if(b<0)c=0;elsec++;printf("%d\n",c);

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

47.請讀程序段:charstr[]="ABCD",*p=str;printf("%d\n",*(p+4));程序段的輸出結(jié)果是______。

A.68B.0C.字符'D'的地址D.不確定的值

48.有以下程序voidswap(char*x,char*y){chart;t=*x;*X=*y;*y=t;}main(){char*s1:"abc",*s2="123";swap(s1,s2);printf("%s,%s\n",s1,s2);}程序執(zhí)行后的輸出結(jié)果是

A.123,abcB.abc,123C.1bc,a23D.321,cba

49.若變量已正確定義,要求通過scanf("%c%d%c%d",&c1,&a,&c2,&B)語句給變量a和b分別賦32和45,給變量c1和c2分別賦字符A和B;下列選項中數(shù)據(jù)從第1列開始輸入,正確的輸入形式是()。

A.A32<CR>B45<CR>B.A45<CR>B32<CR>C.A32B45<CR>D.A32B45<CR>

50.若進棧序列為1,2,3,4,進棧過程中可以出棧,則下列不可能的—個出棧序列是______。

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

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

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

52.以下程序的輸出結(jié)果是______。#include<stdio.h>#defineSQR(x)x*xmain(){inta,k=3;a=++SQR(k+1);printf((“%d\n”,a);}A.8B.9C.17D.20

53.下列二維數(shù)組的說明中,不正確的是()。

A.floata[][4]={0,1,8,5,9};

B.inta[3][4];

C.#defineN5

D.inta[2][9.5];floata[N][3];

54.線性表的順序存儲結(jié)構(gòu)和線性表的鏈式存儲結(jié)構(gòu)分別是______。

A.順序存取的存儲結(jié)構(gòu)、順序存取的存儲結(jié)構(gòu)

B.隨機存取的存儲結(jié)構(gòu)、順序存取的存儲結(jié)構(gòu)

C.隨機存取的存儲結(jié)構(gòu)、隨機存取的存儲結(jié)構(gòu)

D.任意存取的存儲結(jié)構(gòu)、任意存取的存儲結(jié)構(gòu)

55.以下程序的輸出結(jié)果是#include<stdio.h>in[fun(intn,int*s){intn,f2;if(n==0‖n==1)*s=1;else{fun(n-1,&f1);fun(n-2,&f2);*s=f1+f2;}}voidmain(){intx;fun(6,&x);pfintf("\n%d",x);}

A.7B.13C.9D.10

56.有以下程序段charch;intk;ch='a';k=12;printf("%c,%d,",ch,ch,k);printf("k=%d\n",k);已知字符a的ASCII碼值為97,則執(zhí)行上述程序段后輸出結(jié)果是

A.因變量類型與格式描述符的類型不匹配輸出無定值

B.輸出項與格式描述符個數(shù)不符,輸出為零值或不定值

C.a,97,12k=12

D.a,97,k=12

57.數(shù)據(jù)庫DB、數(shù)據(jù)庫系統(tǒng)DBS、數(shù)據(jù)庫管理系統(tǒng)DBMS之間的關(guān)系是()。

A.DB包括DBS和DBMSB.DBMS包括DB和DBSC.DBS包括DB和DBMSD.沒有任何關(guān)系

58.若變量已正確定義,有以下程序段

inta=3,b=5,c=7;

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

if(c!=a)c=b;

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

其輸出結(jié)果是

A.程序段有語法錯B.3,5,3C.3,5,5D.3,5,7

59.下列程序的輸出結(jié)果是()。main(){inti=1,j=2,k=3;if(i++==1&&(++j==3||k++==3))printf("%d%d%d\n",i,j,k);}

A.123B.234C.223D.233

60.有以下程序main(){chara='a',b;printf("%c,",++A);printf("%c\n"。b=a++);}程序運行后的輸出結(jié)果是

A.b,bB.b,cC.a,bD.a,c

四、選擇題(20題)61.有以下程序

62.

63.

64.設(shè)有如下三個關(guān)系表

下列操作中正確的是()。

A.T=RnSB.T=RUSC.T=R×SD.T=R/S

65.有以下程序

66.設(shè)有以下語句

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

68.

69.以下關(guān)于結(jié)構(gòu)化程序設(shè)計的敘述中正確的是()。A.在C語言中,程序的模塊化是利用函數(shù)實現(xiàn)的

B.結(jié)構(gòu)化程序使用sotoi吾句會很便捷

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

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

70.有以下程序

71.

72.

73.以下程序的輸出結(jié)果是()。main{inta=7,b=8,*P,*q,*r;p=&a;q=&b;r=P;P=q;q=r;printf("%d,%d,%d,%a\n",*P,*q,a,b);}A.8,7,8,7B.7,8,7,8C.8,7,7,8D.7,8,8,7

74.以下程序的輸出結(jié)果是()。

main()

{inta=1;

charc=’a’;

floatf=2.0;

Printf("%d\n",(!(a==0),f1=0&&c==’A’));

}

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

75.

76.(7)在軟件開發(fā)中,下面任務(wù)不屬于設(shè)計階段的是()

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

B.給出系統(tǒng)模塊結(jié)構(gòu)

C.定義模塊算法

D.定義需求并建立系統(tǒng)模型

77.

78.有以下程序:

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

A.1B.2C.4D.死循環(huán)

79.有以下程序:

i

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

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

80.第

15

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

main()

{inta=21,b=11;

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

}

A.30B.31C.32D.33

五、程序改錯題(1題)81.下列給定程序中,函數(shù)fun()的功能是:求兩個非零正整數(shù)的最大公約數(shù),并作為函數(shù)值返回。例如,若num1和num2分別為49和21,則輸出的最大公約數(shù)為7;若num1和num2分別為27和81,則輸出的最大公約數(shù)為27。請改正程序中的錯誤,使它能得出正確結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)!試題程序:

六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,定義了NxN的二維數(shù)組,并在主函數(shù)中自動賦值。請編寫函數(shù)fun(),該函數(shù)的功能是使數(shù)組上三角元素中的值乘以m。若m的值為2,a數(shù)組中的值為197238456則返回主程序后a數(shù)組中的值應(yīng)為2181426164512注意:部分源程序在文件prog1.c中。請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()的花括號中填入你編寫的若干語句。試題程序:1#include2#include3#include4#include5#defineN56voidfun(inta[][N],intm)7{89}10main()11{12inta[N][N],m,i,j;13FILE*out;14printf("***Thearray***\n");15for(i=0;i<n;i++)16{for(j=0;j<n;i++)27{for(j=0;j38{for(j=0;j<n;j++)39fprintf(out,"%4d",a[i][j]);40fprintf(out,"\n");41}42fclose(out);43/*********found********/44}1voidfun(inta[][n],intm)2{3inti,j;4for(j=0;j<n;j++)5:for(i=0;i<=j;i++)6:a[i][j]=a[i][j]*m;/*上三角元素中的值乘以m*/

參考答案

1.D

2.C解析:語句s+=2;使指針指向字符'c',此時s中保存的便是字符'c'的地址。

3.C

4.A題目中程序不能實現(xiàn)預(yù)期功能是因為while的循環(huán)條件錯誤。選項B中把“s=1;”改為s=0;”,最終的結(jié)果“s=4”,與題目原意不同。選項C中把“n=1;”,改為“n=0;”最終的結(jié)果“s=2”,與題目原意不同。選項D中把“n=n+1;”改為“n=n*n;”,最終的結(jié)果“s=2”,與題目原意不同。選項A正確地修改了while循環(huán)條件,可以得到正確結(jié)果。故本題答案為A選項。

5.A程序首先以讀二進制文件的方式打開文件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選項。

6.D本題考查對軟件生命周期的理解,軟件生命周期整體上可分為定義階段、開發(fā)階段和維護階段。其中定義階段包括可行性研究與計劃制訂和需求分析;開發(fā)階段包括概要設(shè)計、詳細設(shè)計、開發(fā)和測試;維護階段是一個單獨階段,不包含在開發(fā)階段內(nèi),它是所花費用最多的一個階段。

7.C

8.A解析:光纜是傳輸多媒體信息的通道,不能用以存儲多媒體信息。

9.C題干中,數(shù)組a包含10個元素。其中a[5]為6,a[7]為8,a[1]為2,所以表達式“a[a[5]-a[7]/a[1]]”等價于“a[6-8/2]”,等價于a[2],即3。故本題答案為C選項。

10.A解析:在不帶頭結(jié)點的單鏈表head中,head指向第一個元素結(jié)點,head=NULL表示該鏈表為空,所以答案為A。

11.C

12.D解析:C語言中++運算符的對象可以是整型、實型和字符型,但不可是常量,本題中D為常量。

13.A其方法是將要刪除節(jié)點的上一個節(jié)點的next指向要刪除節(jié)點的下一個節(jié)點,然后釋放將要刪除的節(jié)點,所以選項A正確。故本題答案為A選項。

14.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。

15.B解析:return中返回的是指針p的值,也就是形參p中存放的地址值。

16.BB)【解析】在具有11個結(jié)點的滿二叉樹,其非葉子結(jié)點數(shù)為int(n/2),而葉子結(jié)點數(shù)等于總結(jié)點數(shù)減去葉子結(jié)點數(shù)。本題n=15,故非葉子結(jié)點數(shù)等于int(15/2)=7,葉子結(jié)點數(shù)等于15-7=8。

17.A解析:本題考查數(shù)據(jù)庫系統(tǒng)的基本概念和知識。數(shù)據(jù)的邏輯結(jié)構(gòu),是數(shù)據(jù)間關(guān)系的描述,它只抽象地反映數(shù)據(jù)元素之間的邏輯關(guān)系,而不管其在計算機中的存儲方式。數(shù)據(jù)的存儲結(jié)構(gòu),又叫物理結(jié)構(gòu),是邏輯結(jié)構(gòu)在計算機存儲器里的實現(xiàn)。這兩者之間沒有必然的聯(lián)系。因此,選項A的說法是錯誤的。

數(shù)據(jù)庫可以看成是長期存儲在計算機內(nèi)的、大量的、有結(jié)構(gòu)的和可共享的數(shù)據(jù)集合。因此,數(shù)據(jù)庫具有為各種用戶所共享的特點。不同的用戶可以使用同一個數(shù)據(jù)庫,可以取出它們所需要的子集,而且容許子集任意重疊。數(shù)據(jù)庫的根本目標是要解決數(shù)據(jù)的共享問題。因此,選項B的說法是正確的。

數(shù)據(jù)庫設(shè)計是在數(shù)據(jù)庫管理系統(tǒng)的支持下,按照應(yīng)用的要求,設(shè)計一個結(jié)構(gòu)合理、使用方便、效率較高的數(shù)據(jù)庫及其應(yīng)用系統(tǒng)。數(shù)據(jù)庫設(shè)計包含兩方面的內(nèi)容:一是結(jié)構(gòu)設(shè)計,也就是設(shè)計數(shù)據(jù)庫框架或數(shù)據(jù)庫結(jié)構(gòu);二是行為設(shè)計,即設(shè)計基于數(shù)據(jù)庫的各類應(yīng)用程序、事務(wù)等。因此,選項C的說法是錯誤的。

數(shù)據(jù)庫系統(tǒng)除了數(shù)據(jù)庫管理軟件之外,還必須有其他相關(guān)軟件的支持。這些軟件包括操作系統(tǒng)、編譯系統(tǒng)、應(yīng)用軟件開發(fā)工具等。對于大型的多用戶數(shù)據(jù)庫系統(tǒng)和網(wǎng)絡(luò)數(shù)據(jù)庫系統(tǒng),還需要多用戶系統(tǒng)軟件和網(wǎng)絡(luò)系統(tǒng)軟件的支持。因此,選項D的說法是正確的。因此,本題的正確答案是選項A。

18.B解析:子函數(shù)fun(intx,inty),將變量m和i聲明為局部靜態(tài)變量,因此第1次調(diào)用主函數(shù)后,局部靜態(tài)變量m和i的值為5和3,第1次函數(shù)調(diào)用結(jié)束時,它們的值不釋放保持不變,所以第2次調(diào)用時,局部靜態(tài)變量m和i的初始值分別為5和3,即在執(zhí)行“i+=m+1”時,i的值為9,因此最終m的值為11。

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

20.C解析:這是一個逗號表達式,它的值應(yīng)為表達式y(tǒng)=x+3/2的值,而前一個表達式已給x賦值1,在沒有進行類型轉(zhuǎn)換的情況下,3/2的值為1,所以x+3/2的值應(yīng)為2.0。

21.整型整型解析:上面的表達式中,通過強制類型轉(zhuǎn)換把最后參與運算的數(shù)據(jù)都轉(zhuǎn)換成了int型,所以最后得到的結(jié)果也是int類型。

22.x=2y=1

23.非線性結(jié)構(gòu)非線性結(jié)構(gòu)

24.passwarnpasswarn解析:n++是在執(zhí)行完其所在的語句后再加1,因此,在執(zhí)行case的時候,n的值依然為'c',執(zhí)行case'c'后面的語句,先打印出“pass”;在執(zhí)行完case'c'后,未遇到break跳出switch,便接著執(zhí)行下面的語句,又打印出warn。所以此題輸出結(jié)果是passwarn。

25.輸出結(jié)果輸出結(jié)果解析:注意:測試的基本方法和步驟。

26.77解析:在C語言中,宏定義是直接替換的,所以在劉表達式MAX(a+b,c+d)*10進行替換后,表達式變?yōu)?a+b)>(c+d)?(a+b):(c+d)*10。在這個條件表達式中,(a+b)>(c+d)為真,所以用(a+b)的值作為整個表達式的值(否則用(c+d)*10的值作為整個表達式的值),而(a+b)的值為7。所以整個表達式的值為7。

27.1616解析:在程序中首先將8賦值給變量a,然后再進行復(fù)合賦值運算。即a=a+a=8+8=16,所以該空格處應(yīng)該填16。

28.軟件工程學(xué)軟件工程學(xué)

29.132132解析:在程序中,i從9開始循環(huán),當(dāng)i=9時,執(zhí)行case0后的語句m++;n++;此時m=1,n=1,然后執(zhí)行break,跳出循環(huán);當(dāng)i=10時,執(zhí)行detault后的語句k++;n++;此時k=1,n=2;當(dāng)i=11時,再執(zhí)行default后的語句,k=2,n=3。此時,m=1,n=3,k=2。輸出結(jié)果為132。

30.無限無限解析:分析程序“while(s)”語句后面有一個“;”不能執(zhí)行后面的語句,只是執(zhí)行空語句,所以s=12保持不變,因此,沒有條件限制的能循環(huán)無限次(即死循環(huán))。

31.k=5k=5解析:本題主要考查了函數(shù)的遞歸調(diào)用方法。g=0或g=1或g=2是遞歸的終止條件,然后用回代的方法從一個已知值推出下一個值,直到計算出最終結(jié)果。

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

33.SunDan20042SunDan20042解析:f函數(shù)中形參1用的是顯式傳地址的方式,因此p->name的值發(fā)生改變,而形參2用的傳值的方式,在調(diào)用時不改變實參的值,因此p->num的值不發(fā)生變化。

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

35.錯誤。錯誤。解析:數(shù)據(jù)庫恢復(fù)是將數(shù)據(jù)庫中的數(shù)據(jù)從錯誤狀態(tài)中恢復(fù)到某種邏輯一致的狀態(tài)。如果數(shù)據(jù)庫中包含成功事務(wù)提交的結(jié)果,則稱數(shù)據(jù)庫處于一致性狀態(tài)。

36.軟件生命周期軟件生命周期解析:軟件產(chǎn)品從考慮其概念開始,到該軟件產(chǎn)品不能使用為止的整個時期都屬于軟件生命周期。一般包括可行性研究與需求分析、設(shè)計、實現(xiàn)、測試、交付使用以及維護等活動。

37.strlen(str)-1strlen(str)-1解析:程序中的for循環(huán)就是用來完成串反序的,所以應(yīng)該對循環(huán)的條件進行初始化,所以在[18]應(yīng)該填入strlen(str)-1。注意,在串反序的時候,不應(yīng)該把串結(jié)束符‘\\0’也反序。

38.軟件質(zhì)量差軟件質(zhì)量差解析:大約在20世紀60年代末人們在計算機軟件的開發(fā)和維護過程中,遇到了一系列嚴重問題,從而認識到軟件危機的存在。軟件危機的核心問題是軟件開發(fā)的質(zhì)量太差和軟件系統(tǒng)開發(fā)的效率太低。

39.3010130101解析:注意地址自增與變量自增的區(qū)別。

40.92

41.C解析:該程序的運行結(jié)果是1.0000,算法錯誤。在s=s+1/n中,因為n為整型,所以循環(huán)中1/n始終為0。這就是本題算法錯誤的原因。應(yīng)把s=s+1/n改為s=s+1.0/n。

42.B解析:本題主要考查結(jié)構(gòu)類型的定義:struct是結(jié)構(gòu)體類型的關(guān)鍵字;structstr是結(jié)構(gòu)體類型名;x、y、z都是結(jié)構(gòu)體成員名;st是結(jié)構(gòu)變量名。

43.C解析:本題小定義兩個字符型數(shù)組,其中a省略了長度,定義了b的長度為10,并賦初值分別為“abcdefg”和“abcdefg”。所以a的長度為賦值給它的字符串的字符個數(shù)7加上一個結(jié)束轉(zhuǎn)義字符,即a的長度為7+1為8。定義時b的長度定義為10,故b的長度為10,因此最后通過函數(shù)sizeof()求得的數(shù)組a和數(shù)組b的長度分別為8和10。

44.Cc)【解析】根據(jù)二分法查找法需要兩次:①首先將60與表中間的元素55進行比較,由于60大于55,所以性表的后半部分查找。②第二次比較的元素是后半部分的中間元素,將60與表中間的元素70進行比較,由于60小于70,所以性表的前半部分查找。③第三次比較的元素是前半部分的中間元素,即60,這時兩者相等,即查找成功。

45.A解析:x+y的值為實型7.200000,經(jīng)強制類型轉(zhuǎn)化成整型7。a%3的值為1,1*7的值為7,7%2值為1。1/4的值為0,而非0.25,因而為兩個整數(shù)相除的結(jié)果為整數(shù),舍去小數(shù)部分。與實型x相加,最終得結(jié)果為2.500000。

46.C

47.B解析:在對字符數(shù)組賦字符串值時,系統(tǒng)會自動在字符串的末尾加上一個字符串結(jié)束標志“\\0”,故指向字符數(shù)組的指針p的*(p+4)的值為“\\0”。由于“\\0”的編碼值就是0,所以本題輸出為0。

48.C解析:這是一個轉(zhuǎn)換程序:低字節(jié)相互轉(zhuǎn)換,高字節(jié)不變?!癮be”的ab和“123”的12相互轉(zhuǎn)化。

49.D解析:本題考查scanf函數(shù)的基本格式。當(dāng)需要從鍵盤上輸入數(shù)據(jù)時,輸入的數(shù)值之間需要有間隔符(空格符號、制表符號、回車符號),間隔符號的使用數(shù)量不限。直到按下回車鍵,scanf函數(shù)才會接受從鍵盤輸入的數(shù)據(jù)。

50.C解析:棧是—種后進先出表,選項C中,先出棧的是3,說明此時棧內(nèi)必然有1,2,由于1先于2進棧,所以1不可能在2之前出棧,故選項C這種出棧序列是不可能的。

51.A解析:在C語言中,數(shù)組元素是從0開始的。指針變量p指向數(shù)組的首地址,(p+2)就會指向數(shù)組中的第3個元素。題目中要求輸出的是元素的值。

52.B

53.D解析:C語言規(guī)定,對于二維數(shù)組,只可以省略第一個方括號中的常量表達式,而不能省略第二個方括號中的常量表達式;二維數(shù)組的一般定義格式是:類型說明符數(shù)組名[常量表達式][常量表達式]。

54.B【命題目的】考查有關(guān)線性表存儲結(jié)構(gòu)的基本知識。

【解題要點】順序存儲結(jié)構(gòu)中,數(shù)據(jù)元素存放在一組地址連續(xù)的存儲單元中,每個數(shù)據(jù)元素地址可通過公式LOC(ai)=LOC(a1)+(I-1)L計算得到,從而實現(xiàn)了隨機存取。對于鏈式存儲結(jié)構(gòu),要對某結(jié)點進行存取,都得從鏈的頭指針指向的結(jié)點開始,這是一種順序存取的存儲結(jié)構(gòu)。

【考點鏈接】順序存儲結(jié)構(gòu)和鏈式存儲結(jié)構(gòu)的定義和性質(zhì),兩種存儲結(jié)構(gòu)的操作方法。

55.B

56.D解析:輸出格式控制符%c表示將變量以字符的形式輸出;輸出格式控制符%d表示將變量以帶符號的十進制整型數(shù)輸出,所以第一個輸出語句輸出的結(jié)果為a,97;第二個輸出語句輸出的結(jié)果為k=12。

57.CC?!窘馕觥繑?shù)據(jù)庫系統(tǒng)(DBS)由數(shù)據(jù)庫(DBS)、數(shù)據(jù)庫管理系統(tǒng)(DBMS)、數(shù)據(jù)庫管理員、硬件平臺和軟件平臺五個部分組成,可見DB和DBMS都是DBS的組成部分。

58.B解析:兩個if語句的判斷條件都不滿足,程序只執(zhí)行了c=a這條語句,所以變量c的值等于3,變量b的值沒能變化,程序輸出的結(jié)果為3,5,3。所以正確答案為B)。

59.D解析:本題考查自增運算符“++”,邏輯與運算符“&&”和邏輯或運算符“||”。自增運算符“++”,出現(xiàn)在變量之前(如題中的++n),表示先使變量的值加1,再使用變量的值進行運算:出現(xiàn)在變量之后(如題中的n++),表示先使用變量的值進行運算,再使變量的值加1。當(dāng)邏輯與運算符“&&”兩邊的運算對象都為真時,邏輯表達式的值才為真;當(dāng)邏輯或運算符“||”左邊的運算對象為真時,其值就為真,不用計算其右邊的運算對象的值。所以根據(jù)運算符的優(yōu)先級,題中應(yīng)先計算內(nèi)層括號中的值。++j是先自加后運算,因此運算時j的值等于3,所以表達式++j==3成立,即表達式的值為1;由于1與任何數(shù)都為進行或(||)運算,結(jié)果都為1,因此k=3;最后計算“&&”之前的表達式,i++是先運算后自加,因此運算時i為1,所以i++==1成立,自加1后i=2。if語句的條件為真即“1”,所以輸出i、j、k的值分別是2,3,3。

60.A解析:程序中的第一個輸出語句輸出表達式++a的值,該++a是在使用a之前,先使a的值加1,即為a加1為字符b,此時a的值為b,所以第一個輸出語句輸出的值為b,第二個輸出語句中輸出的b的值,這時b的值為表達式a++的值,a++是在使用a之后(此時a的值為b,所以賦給b的值為B),使a的值加一因此第二個輸出的值也為b.所以,4個選項中選項A符合題意。

61.A第一次循環(huán)返回5+5為l0,第二次循環(huán)返回l4+14為28,所以選

溫馨提示

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

評論

0/150

提交評論