2022-2023年寧夏回族自治區(qū)中衛(wèi)市全國計算機(jī)等級考試C語言程序設(shè)計_第1頁
2022-2023年寧夏回族自治區(qū)中衛(wèi)市全國計算機(jī)等級考試C語言程序設(shè)計_第2頁
2022-2023年寧夏回族自治區(qū)中衛(wèi)市全國計算機(jī)等級考試C語言程序設(shè)計_第3頁
2022-2023年寧夏回族自治區(qū)中衛(wèi)市全國計算機(jī)等級考試C語言程序設(shè)計_第4頁
2022-2023年寧夏回族自治區(qū)中衛(wèi)市全國計算機(jī)等級考試C語言程序設(shè)計_第5頁
已閱讀5頁,還剩104頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2022-2023年寧夏回族自治區(qū)中衛(wèi)市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.有以下程序:#include<stdi0.h>main(){inta=1,b=2;for(;a<8;a++){b+=a;a+=2;)printf("%d,%d\n",a,b);}程序運(yùn)行后的輸出結(jié)果是()。A.9,18B.8,11C.7,11D.10,14

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

f(intb[],intm,intn)

{inti,s=0;

for(i=m;i<n;i=i+2)s=s+b[i];

returns;

}

voidmain()

{intx,a[]={1,2,3,4,5,6,7,8,9};

x=f(a,3,7);

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

}A.A.10

B.18

C.8

D.15

3.

4.下列關(guān)于線性表、棧和隊列的敘述,錯誤的是()。

A.線性表是給定的n(n必須大于零)個元素組成的序列

B.線性表允許在表的任何位置進(jìn)行插入和刪除操作

C.棧只允許在一端進(jìn)行插入和刪除操作

D.隊列允許在一端進(jìn)行插入在另一端進(jìn)行刪除

5.設(shè)R是一個二元關(guān)系,S是一個三元關(guān)系,則下列運(yùn)算中正確的是()。

A.R-SB.R×SC.R∩SD.R∪S

6.用單鏈表方式存儲的線性表,存儲每個結(jié)點需要兩個域,一個數(shù)據(jù)域,另一個是()。

A.當(dāng)前結(jié)點的所在地址B.后繼結(jié)點的所在地址C.空指針域D.空閑域

7.線性鏈表中結(jié)點的結(jié)構(gòu)為(data,next)。已知指針p所指結(jié)點不是尾結(jié)點,若在*p之后插入結(jié)點*s,則應(yīng)執(zhí)行下列()操作。

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

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

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

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

8.

9.

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

A.只能在循環(huán)體內(nèi)和switch語句體內(nèi)使用break語句

B.eotinue語句的作用是結(jié)束整個循環(huán)的執(zhí)行

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

D.從多層循環(huán)嵌套中退出時,只能使用got0語句

11.有以下程序:#include〈stdio.h〉voidfun(int*s){staticintj=0;do{s[j]=s[j]+s[j+1];}while(++j<2);}main(){inti.a(chǎn)[10]={1,2,3,4,5};for(i=1;i<3;i++)fun(a);for(i=0;i<5;i++)pfintf(“%d”,a[i]);printf(“\n”);}程序運(yùn)行后的輸出結(jié)果是()。A.12345B.23445C.34756D.35745

12.堆的形狀是一棵_______。

A.二叉排序樹B.滿二叉樹C.完全二叉樹D.平衡二叉樹

13.針對二分查找算法,假設(shè)一個有序數(shù)組有136個元素,那么要查找到第10個元素,需要比較的元素為()

A.68,34,17,9,13,11,10

B.68,34,17,8,12,10

C.69,35,18,10

D.68,34,18,9,13,11,10

14.層次型、網(wǎng)狀型和關(guān)系型數(shù)據(jù)庫劃分原則是()。

A.記錄長度B.文件的大小C.聯(lián)系的復(fù)雜程度D.數(shù)據(jù)之間的聯(lián)系方式

15.有說明語句“inta,b;”,如果輸入111222333,使得a的值為111,b的值為333,則以下正確的語句是()。A.scanf("%3d%*3d%3d",&a,&b);

B.scanf("%*3d%3d%3d",&a,&b);

C.scanf("%3d%3d%*3d",&a,&b);

D.scanf("%3d%*2d%3d",&a,&b);

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

17.若變量已經(jīng)定義且正確賦值,則針對程序段“temp=a;a=b;b=temp;”,以下敘述中正確的是()。

A.C語言的順序結(jié)構(gòu)不允許將多條語句寫在一行里

B.程序順序結(jié)構(gòu)對于此段程序是從左至右依次執(zhí)行的

C.此程序段的執(zhí)行順序是,先執(zhí)行“b=temp;”,再執(zhí)行“a=b;”,最后執(zhí)行“temp=a;”

D.將此段程序的前兩個分號改成逗號,后面一個不變,則不能實現(xiàn)a和b值的交換

18.有以下程序:#include<stdio.h>,main(){intS;scanf("%d",&s);while(s>O){switch(s){casel:printf("%d",s+5);case2:printf("%d",s+4);break;case3:printf("%d",s+3);default:("%d",s+1);break;}scanf("%d",&s);}}運(yùn)行時,若輸入123450<回車>,由輸出結(jié)果是()。A.6566456B.66656C.66666D.6666656

19.在一個C語言源文件中定義的全局變量,其作用域為()。

A.由具體定義位置和extern說明來決定范圍B.所在程序的全部范圍C.所在函數(shù)的全部范圍D.所在文件的全部范圍

20.

二、2.填空題(20題)21.一個項目具有一個項目主管,一個項目主管可管理多個項目,則實體“項目主管”與實體“項目”的聯(lián)系屬于______的聯(lián)系。

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

charstr[]="ABCD",*p=str;

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

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

main()

{inta=1,b=2,c=3,t=0;

if(a<B){t=a;a=b;b=t;}

if(a<C){t=a;a=c;c=t;}

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

}

24.在關(guān)系模型中,若屬性A是關(guān)系R的主碼,屬性A的取值不能為空,稱為約束。

25.若有如下程序:

main()

{intx=4,y=3,x=2,t;

t=x<y<z;

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

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

26.下列程序用來輸出結(jié)構(gòu)體變量ex所占存儲單元的字節(jié)數(shù)。

structst

{charname[20];doublescore;};

main()

{structstex;

printf("exsize:%d\n",sizeof(【】));

}

27.設(shè)inta=5,b=6,表達(dá)式(++a==b--)?++a:--b的值是【】。

28.在C語言中,字符的比較就是對它們的【】碼進(jìn)行比較。

29.單元測試又稱模塊測試,一般采用【】測試。

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

intx=0,y=0;

while(x<15)y++,x+=++y;

printf("%d,%d",y,x);

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

32.以下sstrcpy()函數(shù)實現(xiàn)字符串復(fù)制,即將t所指字符串復(fù)制到s所指向內(nèi)存空間中,形成一個新的字符串s。清填空。

voidsstrcpy(char*s,char*t)

{while(*s++=【】);}

main()

{charstr1[100],str2[]="abcdefgh";

strcpy(str1,str2);

printf('%s\n",str1);

}

33.對一組記錄{54,38,96,23,15,72,60,45,83}進(jìn)行直接插入排序時,當(dāng)插入第5個記錄到有序表時,尋找插入位置需比較【】次。

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

#defineMAX3

inta[MAX];

main()

{fun1();{un2(A);printf("\n");}

funl()

{intk,t=0;

for(k=0;k<MAX;k++,t++)a[k]=t+t;

}

fun2(intb[])

{intk;

for(k=0;k<MAX;k++)printf("%d",*(b+k));

}

35.設(shè)函數(shù)findbig已定義為求3個數(shù)中的最大值,以下程序?qū)⒗煤瘮?shù)指針調(diào)用findbig函數(shù)。請?zhí)羁铡?/p>

main()

{intfindbig(int,int,int);

int(*f)(),x,y,z,big;

f=【】。

scanf("%d%d%d",&x,&y,&z);

big=(*f)(x,y,z);

printf("big=%d\n",big);

}

36.數(shù)據(jù)庫設(shè)計分為以下6個設(shè)計階段:需求分析階段、______、邏輯設(shè)計階段、物理設(shè)計階段、實施階段、運(yùn)行和維護(hù)階段。

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

main()

{inta=5,b=4,c=3,d;

d=(a>b>c);

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

}

38.函數(shù)rewind的作用是

39.在面向?qū)ο蟪绦蛟O(shè)計中,從外面看只能看到對象有外部特征,而不知道也無須知道數(shù)據(jù)的具體結(jié)構(gòu)以及實現(xiàn)操作的算法,這稱為對象的______。

40.當(dāng)運(yùn)行以下程序時,輸入abcd,程序的輸出結(jié)果是:()。

insert(charstr[])

{inti;

i=strlen(str);

while(i>0)

{str[2*i]=str[i];str[2*i-1]='*';i--;}

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

}

main()

{charstr[40];

scanf("%s",str);insert(str);

}

三、1.選擇題(20題)41.對于長度為n的線性表,在最壞情況下,下列各種排序法所對應(yīng)的比較次數(shù)中正確的是()。

A.冒泡排序為n/2B.冒泡排序為nC.快速排序為nD.快速排序為n(n-1)/2

42.設(shè)有定義:Structcomplex{intreal,unreal;}data1={1,8},data2;則以下賦值語句中錯誤的是()。

A.data2={data1.rea1,data1.unrea1};

B.data2=(2,6);

C.data2.rea1=data1->rea1;

D.data2->rea1=data1.unrea1;

43.下面程序的輸出結(jié)果是

#include<stdio.h>

main()

{inta[]={1,2,3,4,5,6,7,8,9,0},*p;

p=a;

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

A.0B.1C.10D.9

44.以下敘述中正確的是

A.用C程序?qū)崿F(xiàn)的算法必須要有輸入和輸出操作

B.用C程序?qū)崿F(xiàn)的算法可以沒有輸出但必須要有輸入

C.用C程序?qū)崿F(xiàn)的算法可以沒有輸入但必須要有輸出

D.用C程序?qū)崿F(xiàn)的算法可以既沒有輸入也沒有輸出

45.下列程序的輸出結(jié)果是______。#includemain(){char*a="abcdefghi";intk;fun(a);puts(a);}fun(char*s){intx,y;charc;for(x=0,y=strlen(s)-1;x<y;x++,y--){c=s[y];s[y]=s[x];s[x]=c;}}

A.ihgfsdcbaB.abcdcfghiC.abcdedebaD.ihgfefghi

46.下列敘述中,正確的一條是()

A.語句“goto12;”是合法的

B.for(;;)語句相當(dāng)于while(1)語句

C.if(表達(dá)式)語句中,表達(dá)式的類型只限于邏輯表達(dá)式

D.break語句可用于程序的任何地方,以終止程序的執(zhí)行

47.下列描述中正確的是()。

A.在C語言程序中預(yù)處理是指完成宏替換和文件包含指定的文件的調(diào)用

B.預(yù)處理指令只能位于C源程序文件的首部

C.預(yù)處理命令可以放在程序中的任何位置

D.預(yù)處理命令結(jié)尾需要加分號

48.下面的程序執(zhí)行后,文件test.t中內(nèi)容是______。#include<stdio.h>voidfun(char*fname,char*st){FILE*myf;inti;myf=fopen(fname,"w");for(i=0;i<strlen(st);i++)fputc(st[i],myf);fclose(myf);}main(){fun("test.t","newworld");fun("test.t","hello,");}

A.hello,B.newworldhelloC.newworldD.hello,rld

49.有以下程序:main(){inta;charc=10;floatf=100.0;doublex;a=f/=c*=(x=6.5);printf("%d%d%3.1f%3.1f\n",a,c,f,x);}程序運(yùn)行后的輸出結(jié)果是______。

A.16516.5B.1651.56.5C.1651.06.5D.2651.56.5

50.對以下說明語句的正確理解是inta[10]={6,7,8,9,10};

A.將5個初值依次賦給a[1]至a[5]

B.將5個初值依次賦給a[0]至a[4]

C.將5個初值依次賦給a[6]至a[10]

D.因為數(shù)組長度與初值的個數(shù)不相同,所以此語句不正確

51.用樹形結(jié)構(gòu)表示實體之間聯(lián)系的模型是

A.關(guān)系模型B.網(wǎng)狀模型C.層次模型D.以上三個都是

52.設(shè)棧S初始狀態(tài)為空。元素a、b、c、d、e、f依次通過棧S,若出棧的順序為c、f、e、d、b、a,則棧S的容量至少應(yīng)該為()。

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

53.下列程序執(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

54.設(shè)有變量說明int(*p)[m],其中的標(biāo)識符p是()。

A.m個指向整型變量的指針

B.指向m個整型變量的指針

C.一個指向具有m個整型元素的一維數(shù)組的指針

D.具有m個指針元素的一維指針數(shù)組,每個元素都指向整型變量

55.有以下程序struetSTU{charname[10];intnum;intScore;};main(){structSTUs[5]-{{"YangSan",20041,703},("LiSiGuo",20042,580},{"WangYin",20043,680},{"SunDan",20044,550},{"Penghua",20045,537}},*p[5],*t;inti,j;for(i=0;i<5;i++)p[i]-&s[i];for(i0;i<4;i++)for(j-i+1;j<5;j++)if(p[i]>Score>p[j]>Score){t=p[i];p[i]=p[j];p[j]-t;}printf("%d%dkn",s[1].Score,p[1]->Score);}執(zhí)行后輸出結(jié)果是

A.550550B.680680C.580550D.580680

56.已知下面的程序段,正確的判斷是______。#defineA3#defineB(A)((A+1)*a)inta=3;......X=3*(A+B(7));

A.程序錯誤,不允許嵌套定義B.X=93C.X=81D.程序錯誤,宏定義不允許有參數(shù)

57.若有說明:inta[][3]={0,0};則不正確的敘述是()。

A.數(shù)組a的每個元素的初值都是0

B.數(shù)組a的第一維大小為1

C.數(shù)組a的行數(shù)為1

D.只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0

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

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

59.若有定義floatx=1.5;inta=1,b=3,c=2;,則正確的switch語句是

A.swimh(x){case1.0:printf("*\n");case2.0:printf("**\n");}

B.switch((int)x);{case1:printf("*\n");case2:printf("**\n");}

C.switch(a+

D.{case1:pfintf("*\n");case2+1:pfintf("**\n");}switch(a-I-{case1:pfintf("*\n");casec:printf("**\n");}

60.設(shè)計程序時,應(yīng)采納的原則之一是()。

A.程序的結(jié)構(gòu)應(yīng)有助于讀者的理解B.限制goto語句的使用C.減少或取消注釋行D.程序越短越好

四、選擇題(20題)61.

62.

63.

A.*P=*q;B.P=q;C.*P=&nl;D.P=*q;

64.

65.下列敘述中錯誤的是()。

A.列表框和組合框都有List屬性

B.列表框有Selected屬性,而組合框沒有

C.列表框和組合框都有Style屬性

D.組合框有Text屬性,而列表框沒有

66.

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

A.a=10b=50c=10

B.a=10b=50c=30

C.a=10b=30c=lO

D.a=50b=30c=50

68.

69.

70.若有“doublea;”,則正確的輸入語句是()。A.A.scanf("%1f",a);

B.scanf("%f",&a);

C.scanf("%1f",&a);

D.scanf("1e",&a);

71.設(shè)有如下程序段:

則執(zhí)行P=s;語句后,以下敘述中正確的是()。

A.可以用*P表示s[O]

B.S數(shù)組中元素的個數(shù)和P所指字符串長度相等

C.s和P都是指針變量

D.數(shù)組s中的內(nèi)容和指針變量P中的內(nèi)容相等

72.下面結(jié)構(gòu)體的定義語句中,錯誤的是()。

A.structord{intx;intY;intZ;};struetorda;

B.structord{intx;inty;intZ;}structorda;

C.structord{intX;intY;intZ;}a;

D.struct{intX;inty;intZ;}a;

73.有以下程序:

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

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

74.

75.

76.交換兩個變量的值,不允許用臨時變量,應(yīng)該使用下列()位運(yùn)算符。

A.&B.^C.D.E.F.~

77.

78.若有說明,double*m,n;則能通過sCanf語句正確給輸入項讀人數(shù)據(jù)的程序段是()。

A.*m=&n;scanf("%lf",m);

B.m=(double*)malloc(10);scanf("%f",m);

C.m=&n;scanf("%lf",n);

D.m=&n;scanf("%le",m);

79.有以下程序:

程序運(yùn)行后的輸出結(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,

80.

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc的功能是:從字符串str中,刪除所有大寫字母F。

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

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

試題程序:

#include<stdio.h>

voidproc(char*str)

{

inti,j;

//****found****

for(i=j=0;str[i]一0;i++)

if(str[i]!=F)

//****found****

str[i]=str[i];

str[j]=\0;

}

voidmain

{

charstr[80];

printf("\nEnterastring:");

gets(str);

printf("Theoriginalstring:");

puts(str);

proc(str);

printf("Thestringafterdeleted:");

puts(str);

printf("\n\n");}

六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),其功能是將一個數(shù)字字符串轉(zhuǎn)換成與其面值相同的長整型整數(shù)??烧{(diào)用strlen函數(shù)求字符串的長度。例如,在鍵盤輸入字符串2345210,函數(shù)返回長整型整數(shù)2345210。注意:部分源程序存放在文件prog1.c中,請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()指定的部位填入所編寫的若干語句。試題程序:

參考答案

1.D第一次執(zhí)行循環(huán)前,a=1,滿足a<8,執(zhí)行循環(huán)后,b=3,a=3。執(zhí)行完a++操作后,a=4。由于a<8,執(zhí)行第二次循環(huán)后,b=7,a=6,執(zhí)行完a++操作后,a=7。由于a<8,執(zhí)行第三次循環(huán)后,b=14,a=9,執(zhí)行完a++操作后a=10。此時不滿足a<8,跳出循環(huán)。

2.A函數(shù)的功能是對數(shù)組某一區(qū)域內(nèi)的元素隔個求和;a[3]=4,所以從4開始進(jìn)行隔個求和,a[7]=8,即對4到8的元素隔個求和,4+6=10。

3.D

4.A解析:線性表的插入和刪除允許在任何位置進(jìn)行,所以B選項的說法是正確的;棧的操作只允許在棧頂進(jìn)行,因此,棧稱為先進(jìn)后出表(FILO,FirstInLastOut),或“后進(jìn)先出”表(LIFO,LastInFirstOut),所以C選項說法也是正確的;隊列(queue)是只允許在一端刪除,在另一端插入的順序表,允許刪除的一端叫做隊頭(front),允許插入的一端叫做隊尾(rear),因此隊列亦稱作先進(jìn)先出(FIFO,FirstInFirstOut)的線性表,或后進(jìn)后出(LILO,LastInLastOut)的線性表。所以D選項說法也是正確的。

5.BB。【解析】關(guān)系的交(∩)、并(∪)和差(-)運(yùn)算要求兩個關(guān)系是同元的,顯然作為二元的R和三元的S只能做笛卡兒積運(yùn)算。

6.B

7.B

8.D

9.B

10.A本題考查循環(huán)跳出的知識點:①break語句可以出現(xiàn)在switch循環(huán)體內(nèi)及語句體內(nèi),它的作用是跳出循環(huán)體,不能用于其他的語句;②continue語句的作用是結(jié)束本次循環(huán),即跳過循環(huán)體中下面尚未執(zhí)行的語句,而接著判定循環(huán)條件是否成立,確定下一次循環(huán)是否繼續(xù)執(zhí)行,執(zhí)行contiune語句不會使整介循環(huán)終止;③循環(huán)體內(nèi)使用break語句會使循環(huán)提前終止;④從多層循環(huán)嵌套中退出時,可以使用90t0語句或者break語句。

11.D本題考查靜態(tài)變量,靜態(tài)變量有儲存已經(jīng)操作過的值,所以fun(a)s[O]=3,s[1]=5,s[2]=7,所以答案選擇D。

12.C

13.B

14.D層次模型的基本結(jié)構(gòu)是樹形結(jié)構(gòu),網(wǎng)狀模型是一個不加任何條件限制的無向圖,關(guān)系模型采用二維表來表示,所以三種數(shù)據(jù)庫的劃分原則是數(shù)據(jù)之間的聯(lián)系方式。

15.A根據(jù)題意,要使a的值為111,b的值為333,必須在讀入時指定a的讀入寬度為3,b的讀入寬度為3,且a和b的控制字符之間必須額外增加%*控制符,用于跳過中間的3位輸入數(shù)字,選項A正確。本題答案為A選項。

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

17.BC語言允許將多條語句寫在一行,選項A錯誤;題干中的語句是從左至右依次執(zhí)行的,選項B正確,選項C錯誤。題干中的程序前兩個分號改成逗號,就構(gòu)成了逗號表達(dá)式。逗號表達(dá)式會依次從左到右計算各個表達(dá)式,整個表達(dá)式的值是最后一個表達(dá)式的值,所以此例也可以實現(xiàn)a和b值的交換,選項D錯誤。故本題答案為B選項。

18.A根據(jù)題意,當(dāng)s=1時,輸出65;當(dāng)s=2時,輸出6;當(dāng)S=3時,則輸出64;當(dāng)S=4時,輸出5;當(dāng)s=5時,輸出6;當(dāng)s=0時,程序直接退出。所以最后答案為6566456,A選項正確。

19.A全局變量的作用域是從聲明處到文件的結(jié)束。故本題答案為A選項。

20.A

21.1對多(或1:N)1對多(或1:N)

22.6868解析:本題考查如何用指針引用數(shù)組元素。本題先定義了一個指向字符型數(shù)組str的指針p,指針p指向數(shù)組str的首地址,p+3將指針指向str[3],*(p+3)指的是字符“D”,輸出時是以“%d”格式輸出的,即輸出其相應(yīng)ASCII碼值68。

23.3123,1,2解析:分析程序,第一個if語句,a=1,b=2,控制條件a<b成立,則交換a、b的值,此時a=2,b=1。第二個if語句,a=2,c=3,控制條件a<c成立,則交換a、c的值,此時a=3,c=2。

24.實體完整性實體完整性

25.1

26.ex或structstex或structst

27.77解析:此表達(dá)式為三目運(yùn)算符,++a的值為6,b--的值為6,則整個表達(dá)式的值為++a的值,++a的值為7。請注意前綴++,--和后綴++,--的區(qū)別。

28.ASCⅡ

29.白盒法白盒法

30.8208,20解析:本題考查while循環(huán)和++運(yùn)算符的運(yùn)用。x=0符合條件x<15,則執(zhí)行y++,x+=++y后,y=1,x=0+2=2后y=2,符合條件繼續(xù)循環(huán),y=3,x=x+4=6后y=4,再循環(huán)y=5,x=x+6=6+6=12后,y=6,繼續(xù)循環(huán)y=7,x=x+8=12+8-20,此時y=8。

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

32.*t++或*(t++)*t++或*(t++)解析:主函數(shù)中定義了兩個字符型數(shù)組str1和str2,并且給str2賦初值“abcdefgh”,接著調(diào)用函數(shù)strcpy(str1,str2),將字符串str2的值賦給str1。在函數(shù)sstrcpy(*s,*t)中,用了一個while循環(huán),每循環(huán)一次將形參指針t所指的字符賦給形參指針s所指向的存儲空間,然后將指針s和t都移到下一個元素。所以空白處應(yīng)該填*t++或*(t++)。

33.11解析:直接插入排序是在已排好序的序列中用順序查找法查找插入位置。第5個記錄是15,15和23比較,就知道15應(yīng)放在原23放的位置,23及其以后的記錄后移。

34.24

35.findbigfindbig解析:f是指向函數(shù)的指針變量,根據(jù)題意要求,空格處應(yīng)填入findbig。

本題目考查:C語言中指向函數(shù)的指針變量定義的一般形式為;

數(shù)據(jù)類型標(biāo)識符(*指針變量名)();

“數(shù)據(jù)類型標(biāo)識符”表示函數(shù)返回值的類型。

函數(shù)的調(diào)用可以通過函數(shù)名調(diào)用,也可以通過函數(shù)指針調(diào)用。在給函數(shù)指針變量賦值時,只需給出函數(shù)名而不必給出參數(shù)。(*p)()表示定義一個指向函數(shù)的指針變量,專門用來存放函數(shù)的入口地址,可以先后指向不同的指針變量。用函數(shù)指針調(diào)用函數(shù)時,只需要將(*p)代替函數(shù)名即可,在(*p)之后的括號中,根據(jù)需要寫上參數(shù)。

36.概念設(shè)計階段(數(shù)據(jù)庫概念設(shè)計階段)概念設(shè)計階段(數(shù)據(jù)庫概念設(shè)計階段)

37.00解析:本題的關(guān)鍵在于對變量c的賦值運(yùn)算:

d=(a>b>c)

d=(5>4>3)

先算5>4,為真,得1,即:d=(1>3),此時1>3,為假,得0。

38.A

39.封裝性封裝性解析:對象具有下列5個基本特點:①標(biāo)識惟一性;②分類性:③多態(tài)性;④封裝性;⑤模塊獨(dú)立性好。其中,封裝性是指從外面看只能看到對象的外部特征,對象的內(nèi)部特征即處理能力的實行和內(nèi)部狀態(tài),對外是不可見的,對象的內(nèi)部狀態(tài)只能由其自身改變。

40.a*b*c*d*a*b*c*d*解析:字符處理函數(shù)strlen()測試字符串常量的長度,不包括‘\\0’在內(nèi)。因此,函數(shù)insert()實現(xiàn)了將字符數(shù)組中每個非‘\\0’的字符后插入字符‘*’的功能。故輸出結(jié)果是a*b*c*d*。

41.D在最壞情況下,冒泡排序和快速排序的比較次數(shù)都是n(n一1)/2?!局R拓展】所謂冒泡排序,就是將相鄰的兩個數(shù)據(jù)比較,如前面的數(shù)據(jù)大于后面的,則位置互換。這樣不停地比較、互換,其實就是把大的數(shù)往后排,小的數(shù)往前排(就像冒泡一樣冒出來了)。

42.B

43.C解析:此題考查了指針引用一維數(shù)組元素的方法。*p+9因為運(yùn)算符'*'的優(yōu)先級高于'+',所以輸出結(jié)果為p指向的元素1,然后加9,值為10。

44.C算法具有的5個特性是:有窮性、確定性、可行性、有0個或多個輸入、有一個或多個輸出。所以說,用C程序?qū)崿F(xiàn)的算法可以沒有輸入,但必須要有輸出。因此本題答案選C。

45.A

46.B

47.C解析:本題考查預(yù)處理命令的特點,編譯預(yù)處理命令的特點:①為了區(qū)別一般的語句,預(yù)處理命令行都必須以“#”號開始,結(jié)尾不加分號;②預(yù)處理命令可以放在程序中的任何位置;③在程序中凡是以“#”號開始的語句行都是預(yù)處理命令行。

48.A解析:C語言中文件有文本文件與二進(jìn)制文件,對文件的使用前必須先打開,打開方式有只讀、寫入、讀寫等方式。

49.B解析:主函數(shù)中先定義了一個整型變量a,一個字符變量c并賦初值10,一個浮點型變量f并賦初值100.00和一個double型x,接著執(zhí)行a=f/=c*=(x=6.5),該語句從右向左計算,先把6.5賦值給x(該括號表達(dá)式的值也為6.5),此時x的值變?yōu)?.5,然后執(zhí)行c*=(x=6.5)相當(dāng)于執(zhí)行c=c*(x=6.5),此時c的值為65,接著向左執(zhí)行f/c*=(x=6.5),語句相當(dāng)于執(zhí)行f=f/c,所以f的值為100/65≈1.538。接著向最右邊執(zhí)行“a=f”,由于a是整型變量,所以a最后去f的整數(shù)部分為1。程序最后輸出的a、c、f和x的值(f和x只保留小數(shù)點后面1位)分別為1、65、1.5、6.5。所以,4個選項中選項B符合題意。

50.B解析:本題中,表達(dá)式將5個初值分別賦給a[0]至a[4],系統(tǒng)自動給后面的元素a[5]至a[9]賦0。

51.C解析:在數(shù)據(jù)庫系統(tǒng)中,由于采用的數(shù)據(jù)模型不同,相應(yīng)的數(shù)據(jù)庫管理系統(tǒng)(DBMS)也不同。目前常用的數(shù)據(jù)模型有三種:層次模型、網(wǎng)狀模型和關(guān)系模型。在層次模型中,實體之間的聯(lián)系是用樹形結(jié)構(gòu)來表示的,其中實體集(記錄型)是樹中的結(jié)點,而樹中各結(jié)點之間的連線表示它們之間的關(guān)系。因此,本題的正確答案是C。

52.B解析:根據(jù)題中給定的條件,可做如下模擬操作:

①元素a、b、c進(jìn)棧,棧中有3個元素,分別為a、b、c;

②元素c出棧后,元素d、e、f進(jìn)棧,棧中有5個元素,分別為a、b、d、e、f;

③元素f、e、d、a、b出棧,棧為空??梢钥闯?,進(jìn)棧的順序為a、b、c、d、e、f,出棧的順序為c、f、e、d、b、a,滿足題中所提出的要求。

在每一次進(jìn)棧操作后,棧中最多有3個元素,因此,為了順利完成這些操作,棧的容量應(yīng)至少為5。本題答案為B。

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

54.C解析:本題考查指向數(shù)組的指針變量的聲明。這里的p表示一個指向數(shù)組的指針;*p表示指針p指向地址的內(nèi)容。

55.C解析:本題考核的知識點是結(jié)構(gòu)體類型的定義、初始化以及結(jié)構(gòu)體數(shù)組中元素的引用方法。本題中首先定義了結(jié)構(gòu)體類型STU,該結(jié)構(gòu)體由一個長度為10的字符數(shù)組、兩個整型變量hum和Score組成.在主函數(shù)中,定義了一個長度為5的結(jié)構(gòu)體數(shù)組s并賦初值,一個指針數(shù)組p和一個指針變量t,接著將數(shù)組s中各元素的地址依次賦給指針數(shù)組p中的各成員。然后通過兩個for循環(huán)將數(shù)組p按Score的值從小到大的順序排列。因此最后輸出的p[1]->Seore的值為550,而數(shù)組s[1]。Score的值為580,所以,4個選項中選項C符合題意。

56.C解析:本題的宏定義是合法的,宏定義展開為3*(3+((A+1)*a))=3*(3+((7+1)*3))=81。

57.D解析:本題考查給二維數(shù)組元素賦值。給二維數(shù)組元素賦值時應(yīng)注意下列兩點:①在對二維數(shù)組元素賦初值時,可以只對部分元素賦初值,未賦初值的元素自動取0。②二維數(shù)組第一維的大小由下列規(guī)則確定;當(dāng)初值的個數(shù)能被第二維的常量表達(dá)式的值除盡時,所得商數(shù)就是第一維的大??;當(dāng)初值的個數(shù)不能被第二維的常量表達(dá)式的值除盡時,第一維的大小等于所得商數(shù)加1。

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

59.C解析:C語言中,switch語句專用于實現(xiàn)多分支結(jié)構(gòu)程序,其特點是各分支清晰且直觀。switch后面括號中可以是任何表達(dá)式,取其整數(shù)部分與各常量表達(dá)式進(jìn)行比較。常量表達(dá)式中不能出現(xiàn)變量,且類型必須是整型、字符型或枚舉型,各常量表達(dá)式各不相同。

60.AA?!窘馕觥砍绦蛟O(shè)計的風(fēng)格主要強(qiáng)調(diào)程序的簡單、清晰和可理解性,以便讀者理解。程序濫用goto語句將使程序流程無規(guī)律,可讀性差;添加注釋行有利于對程序的理解.不應(yīng)減少或取消,程序的長短要依據(jù)實際的需要而定,并不是越短越好。

61.D

62.A

63.A本題考查的是指針變量的賦值。題目中各變量定義后,指針變量P指向了變量n2所在的存儲單元,指針變量q指向了變量nl所在的存儲單元,要使得nl的值賦給n2,可用指針變量q所指向的存儲單元的值賦給指針變量P所指向的存儲單元,即*P=*q。

64.A

65.BB。【解析】組合框和列表框都沒有selected屬性。

66.A

67.A本題中a>b的!條件不滿足,因此不執(zhí)行逗號表達(dá)式“a=b,b=-c;”的操作,而是執(zhí)行“c=a”的操作,即c的值為10?!时绢}答案為A)。

68.B

69.D

70.C本題考查scanf函數(shù)的調(diào)用形式:scanf(格式字符串,輸入項地址表)。“格式字符串”是要輸入的變量的格式符;“輸入項地址表”是要輸入的變量的地址。

71.AP=8;后,指針P指向s的首地址,*P=s[0],因此選項A)是正確的;p是字符串指針,所指向的字符串為”beijing”,其長度為7,而數(shù)組s中元素的個數(shù)為20,因此選項B)和D)是錯誤的;s是數(shù)組,不是指針變量,所以選項C)也是錯誤的。

72.B結(jié)構(gòu)體定義的類型說明的一般形式為:struct結(jié)構(gòu)體標(biāo)識名{類型名1結(jié)構(gòu)成員名表l;類型名2結(jié)構(gòu)成員名表2;···};。注意:①結(jié)構(gòu)體說明同樣要以分號結(jié)尾;②緊跟在結(jié)構(gòu)體類型說明之后進(jìn)行定義;③在說明一個無名結(jié)構(gòu)體類型的同時,直接進(jìn)行定義;④先說明結(jié)構(gòu)體類型,再單獨(dú)進(jìn)行變量定義等。所以B選項錯誤。

73.A根據(jù)程序可以分析出系統(tǒng)只分配了一個整型數(shù)據(jù)的存儲空間,把這個空間的地址分別賦給了指針型變量a,b和c。程序利用指針a把數(shù)據(jù)1寫入了該空間,然后利用指針b,把數(shù)據(jù)2寫入該空間,所以原來的1就被覆蓋掉了,最后用指針c把數(shù)據(jù)3寫入該空間把數(shù)據(jù)2覆蓋掉了,此空間中最后留有的數(shù)據(jù)是3。因為3個指針都指向該空間,所以輸出數(shù)據(jù)均為3。

74.D

75.D

76.B按邏輯位運(yùn)算特點:①用按位與運(yùn)算將特定位清為0或保留特定位;②用按位或運(yùn)算將特定的位置為1;③用按位異或運(yùn)算將某個變量的特定位翻轉(zhuǎn)或交換兩個變量的值。

77.A

78.D解析:選項A,*m=&n錯誤。選項B,輸入

double型,要用%lf或%le,否則數(shù)據(jù)不能正常輸入。

選項C,n是變量,不是指針,scanf("%if",n)錯誤。

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

80.D

81.(1)錯誤:for(i=j=0;str[i]!=0;i++)

\n正確:for(i=j=0;str[i]!=\0;i++)

\n(2)錯誤:str[j]=str[i];

\n正確:str[i++]=str[i];

\n【解析】根據(jù)題目中的要求,從字符串str中刪除所有大寫字母F,需要檢查字符串str中的每一個字符,直到字符串結(jié)束,因此,“for(i=j=0;str[i]!=0;i++)”應(yīng)改為“for(i=J=0;str[i]!=0;i++)”;將每一個不是F的字符放入原來的字符串中,形成新的字符串,因此,“str[j]=str[i];”應(yīng)改為“str[j++]=str[i];”。

\n

82.longfun(char*s)}inti,len;Longsum=0;len=strlen(s);for(i=0;i<len;i++){sum=sum*10+*s-'0's++;}returnsum;}<len;i++)要把一個數(shù)字字符轉(zhuǎn)為相應(yīng)的數(shù)字,只要將它的ASCII值減去48(或D1)即可。要把數(shù)字字符串轉(zhuǎn)為相應(yīng)的數(shù)字,則要從左到右依次取出字符轉(zhuǎn)為相應(yīng)數(shù)字,乘10再加上下一位數(shù)字。</len;i++)2022-2023年寧夏回族自治區(qū)中衛(wèi)市全國計算機(jī)等級考試C語言程序設(shè)計學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.有以下程序:#include<stdi0.h>main(){inta=1,b=2;for(;a<8;a++){b+=a;a+=2;)printf("%d,%d\n",a,b);}程序運(yùn)行后的輸出結(jié)果是()。A.9,18B.8,11C.7,11D.10,14

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

f(intb[],intm,intn)

{inti,s=0;

for(i=m;i<n;i=i+2)s=s+b[i];

returns;

}

voidmain()

{intx,a[]={1,2,3,4,5,6,7,8,9};

x=f(a,3,7);

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

}A.A.10

B.18

C.8

D.15

3.

4.下列關(guān)于線性表、棧和隊列的敘述,錯誤的是()。

A.線性表是給定的n(n必須大于零)個元素組成的序列

B.線性表允許在表的任何位置進(jìn)行插入和刪除操作

C.棧只允許在一端進(jìn)行插入和刪除操作

D.隊列允許在一端進(jìn)行插入在另一端進(jìn)行刪除

5.設(shè)R是一個二元關(guān)系,S是一個三元關(guān)系,則下列運(yùn)算中正確的是()。

A.R-SB.R×SC.R∩SD.R∪S

6.用單鏈表方式存儲的線性表,存儲每個結(jié)點需要兩個域,一個數(shù)據(jù)域,另一個是()。

A.當(dāng)前結(jié)點的所在地址B.后繼結(jié)點的所在地址C.空指針域D.空閑域

7.線性鏈表中結(jié)點的結(jié)構(gòu)為(data,next)。已知指針p所指結(jié)點不是尾結(jié)點,若在*p之后插入結(jié)點*s,則應(yīng)執(zhí)行下列()操作。

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

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

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

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

8.

9.

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

A.只能在循環(huán)體內(nèi)和switch語句體內(nèi)使用break語句

B.eotinue語句的作用是結(jié)束整個循環(huán)的執(zhí)行

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

D.從多層循環(huán)嵌套中退出時,只能使用got0語句

11.有以下程序:#include〈stdio.h〉voidfun(int*s){staticintj=0;do{s[j]=s[j]+s[j+1];}while(++j<2);}main(){inti.a(chǎn)[10]={1,2,3,4,5};for(i=1;i<3;i++)fun(a);for(i=0;i<5;i++)pfintf(“%d”,a[i]);printf(“\n”);}程序運(yùn)行后的輸出結(jié)果是()。A.12345B.23445C.34756D.35745

12.堆的形狀是一棵_______。

A.二叉排序樹B.滿二叉樹C.完全二叉樹D.平衡二叉樹

13.針對二分查找算法,假設(shè)一個有序數(shù)組有136個元素,那么要查找到第10個元素,需要比較的元素為()

A.68,34,17,9,13,11,10

B.68,34,17,8,12,10

C.69,35,18,10

D.68,34,18,9,13,11,10

14.層次型、網(wǎng)狀型和關(guān)系型數(shù)據(jù)庫劃分原則是()。

A.記錄長度B.文件的大小C.聯(lián)系的復(fù)雜程度D.數(shù)據(jù)之間的聯(lián)系方式

15.有說明語句“inta,b;”,如果輸入111222333,使得a的值為111,b的值為333,則以下正確的語句是()。A.scanf("%3d%*3d%3d",&a,&b);

B.scanf("%*3d%3d%3d",&a,&b);

C.scanf("%3d%3d%*3d",&a,&b);

D.scanf("%3d%*2d%3d",&a,&b);

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

17.若變量已經(jīng)定義且正確賦值,則針對程序段“temp=a;a=b;b=temp;”,以下敘述中正確的是()。

A.C語言的順序結(jié)構(gòu)不允許將多條語句寫在一行里

B.程序順序結(jié)構(gòu)對于此段程序是從左至右依次執(zhí)行的

C.此程序段的執(zhí)行順序是,先執(zhí)行“b=temp;”,再執(zhí)行“a=b;”,最后執(zhí)行“temp=a;”

D.將此段程序的前兩個分號改成逗號,后面一個不變,則不能實現(xiàn)a和b值的交換

18.有以下程序:#include<stdio.h>,main(){intS;scanf("%d",&s);while(s>O){switch(s){casel:printf("%d",s+5);case2:printf("%d",s+4);break;case3:printf("%d",s+3);default:("%d",s+1);break;}scanf("%d",&s);}}運(yùn)行時,若輸入123450<回車>,由輸出結(jié)果是()。A.6566456B.66656C.66666D.6666656

19.在一個C語言源文件中定義的全局變量,其作用域為()。

A.由具體定義位置和extern說明來決定范圍B.所在程序的全部范圍C.所在函數(shù)的全部范圍D.所在文件的全部范圍

20.

二、2.填空題(20題)21.一個項目具有一個項目主管,一個項目主管可管理多個項目,則實體“項目主管”與實體“項目”的聯(lián)系屬于______的聯(lián)系。

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

charstr[]="ABCD",*p=str;

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

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

main()

{inta=1,b=2,c=3,t=0;

if(a<B){t=a;a=b;b=t;}

if(a<C){t=a;a=c;c=t;}

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

}

24.在關(guān)系模型中,若屬性A是關(guān)系R的主碼,屬性A的取值不能為空,稱為約束。

25.若有如下程序:

main()

{intx=4,y=3,x=2,t;

t=x<y<z;

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

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

26.下列程序用來輸出結(jié)構(gòu)體變量ex所占存儲單元的字節(jié)數(shù)。

structst

{charname[20];doublescore;};

main()

{structstex;

printf("exsize:%d\n",sizeof(【】));

}

27.設(shè)inta=5,b=6,表達(dá)式(++a==b--)?++a:--b的值是【】。

28.在C語言中,字符的比較就是對它們的【】碼進(jìn)行比較。

29.單元測試又稱模塊測試,一般采用【】測試。

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

intx=0,y=0;

while(x<15)y++,x+=++y;

printf("%d,%d",y,x);

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

32.以下sstrcpy()函數(shù)實現(xiàn)字符串復(fù)制,即將t所指字符串復(fù)制到s所指向內(nèi)存空間中,形成一個新的字符串s。清填空。

voidsstrcpy(char*s,char*t)

{while(*s++=【】);}

main()

{charstr1[100],str2[]="abcdefgh";

strcpy(str1,str2);

printf('%s\n",str1);

}

33.對一組記錄{54,38,96,23,15,72,60,45,83}進(jìn)行直接插入排序時,當(dāng)插入第5個記錄到有序表時,尋找插入位置需比較【】次。

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

#defineMAX3

inta[MAX];

main()

{fun1();{un2(A);printf("\n");}

funl()

{intk,t=0;

for(k=0;k<MAX;k++,t++)a[k]=t+t;

}

fun2(intb[])

{intk;

for(k=0;k<MAX;k++)printf("%d",*(b+k));

}

35.設(shè)函數(shù)findbig已定義為求3個數(shù)中的最大值,以下程序?qū)⒗煤瘮?shù)指針調(diào)用findbig函數(shù)。請?zhí)羁铡?/p>

main()

{intfindbig(int,int,int);

int(*f)(),x,y,z,big;

f=【】。

scanf("%d%d%d",&x,&y,&z);

big=(*f)(x,y,z);

printf("big=%d\n",big);

}

36.數(shù)據(jù)庫設(shè)計分為以下6個設(shè)計階段:需求分析階段、______、邏輯設(shè)計階段、物理設(shè)計階段、實施階段、運(yùn)行和維護(hù)階段。

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

main()

{inta=5,b=4,c=3,d;

d=(a>b>c);

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

}

38.函數(shù)rewind的作用是

39.在面向?qū)ο蟪绦蛟O(shè)計中,從外面看只能看到對象有外部特征,而不知道也無須知道數(shù)據(jù)的具體結(jié)構(gòu)以及實現(xiàn)操作的算法,這稱為對象的______。

40.當(dāng)運(yùn)行以下程序時,輸入abcd,程序的輸出結(jié)果是:()。

insert(charstr[])

{inti;

i=strlen(str);

while(i>0)

{str[2*i]=str[i];str[2*i-1]='*';i--;}

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

}

main()

{charstr[40];

scanf("%s",str);insert(str);

}

三、1.選擇題(20題)41.對于長度為n的線性表,在最壞情況下,下列各種排序法所對應(yīng)的比較次數(shù)中正確的是()。

A.冒泡排序為n/2B.冒泡排序為nC.快速排序為nD.快速排序為n(n-1)/2

42.設(shè)有定義:Structcomplex{intreal,unreal;}data1={1,8},data2;則以下賦值語句中錯誤的是()。

A.data2={data1.rea1,data1.unrea1};

B.data2=(2,6);

C.data2.rea1=data1->rea1;

D.data2->rea1=data1.unrea1;

43.下面程序的輸出結(jié)果是

#include<stdio.h>

main()

{inta[]={1,2,3,4,5,6,7,8,9,0},*p;

p=a;

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

A.0B.1C.10D.9

44.以下敘述中正確的是

A.用C程序?qū)崿F(xiàn)的算法必須要有輸入和輸出操作

B.用C程序?qū)崿F(xiàn)的算法可以沒有輸出但必須要有輸入

C.用C程序?qū)崿F(xiàn)的算法可以沒有輸入但必須要有輸出

D.用C程序?qū)崿F(xiàn)的算法可以既沒有輸入也沒有輸出

45.下列程序的輸出結(jié)果是______。#includemain(){char*a="abcdefghi";intk;fun(a);puts(a);}fun(char*s){intx,y;charc;for(x=0,y=strlen(s)-1;x<y;x++,y--){c=s[y];s[y]=s[x];s[x]=c;}}

A.ihgfsdcbaB.abcdcfghiC.abcdedebaD.ihgfefghi

46.下列敘述中,正確的一條是()

A.語句“goto12;”是合法的

B.for(;;)語句相當(dāng)于while(1)語句

C.if(表達(dá)式)語句中,表達(dá)式的類型只限于邏輯表達(dá)式

D.break語句可用于程序的任何地方,以終止程序的執(zhí)行

47.下列描述中正確的是()。

A.在C語言程序中預(yù)處理是指完成宏替換和文件包含指定的文件的調(diào)用

B.預(yù)處理指令只能位于C源程序文件的首部

C.預(yù)處理命令可以放在程序中的任何位置

D.預(yù)處理命令結(jié)尾需要加分號

48.下面的程序執(zhí)行后,文件test.t中內(nèi)容是______。#include<stdio.h>voidfun(char*fname,char*st){FILE*myf;inti;myf=fopen(fname,"w");for(i=0;i<strlen(st);i++)fputc(st[i],myf);fclose(myf);}main(){fun("test.t","newworld");fun("test.t","hello,");}

A.hello,B.newworldhelloC.newworldD.hello,rld

49.有以下程序:main(){inta;charc=10;floatf=100.0;doublex;a=f/=c*=(x=6.5);printf("%d%d%3.1f%3.1f\n",a,c,f,x);}程序運(yùn)行后的輸出結(jié)果是______。

A.16516.5B.1651.56.5C.1651.06.5D.2651.56.5

50.對以下說明語句的正確理解是inta[10]={6,7,8,9,10};

A.將5個初值依次賦給a[1]至a[5]

B.將5個初值依次賦給a[0]至a[4]

C.將5個初值依次賦給a[6]至a[10]

D.因為數(shù)組長度與初值的個數(shù)不相同,所以此語句不正確

51.用樹形結(jié)構(gòu)表示實體之間聯(lián)系的模型是

A.關(guān)系模型B.網(wǎng)狀模型C.層次模型D.以上三個都是

52.設(shè)棧S初始狀態(tài)為空。元素a、b、c、d、e、f依次通過棧S,若出棧的順序為c、f、e、d、b、a,則棧S的容量至少應(yīng)該為()。

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

53.下列程序執(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

54.設(shè)有變量說明int(*p)[m],其中的標(biāo)識符p是()。

A.m個指向整型變量的指針

B.指向m個整型變量的指針

C.一個指向具有m個整型元素的一維數(shù)組的指針

D.具有m個指針元素的一維指針數(shù)組,每個元素都指向整型變量

55.有以下程序struetSTU{charname[10];intnum;intScore;};main(){structSTUs[5]-{{"YangSan",20041,703},("LiSiGuo",20042,580},{"WangYin",20043,680},{"SunDan",20044,550},{"Penghua",20045,537}},*p[5],*t;inti,j;for(i=0;i<5;i++)p[i]-&s[i];for(i0;i<4;i++)for(j-i+1;j<5;j++)if(p[i]>Score>p[j]>Score){t=p[i];p[i]=p[j];p[j]-t;}printf("%d%dkn",s[1].Score,p[1]->Score);}執(zhí)行后輸出結(jié)果是

A.550550B.680680C.580550D.580680

56.已知下面的程序段,正確的判斷是______。#defineA3#defineB(A)((A+1)*a)inta=3;......X=3*(A+B(7));

A.程序錯誤,不允許嵌套定義B.X=93C.X=81D.程序錯誤,宏定義不允許有參數(shù)

57.若有說明:inta[][3]={0,0};則不正確的敘述是()。

A.數(shù)組a的每個元素的初值都是0

B.數(shù)組a的第一維大小為1

C.數(shù)組a的行數(shù)為1

D.只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0

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

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

59.若有定義floatx=1.5;inta=1,b=3,c=2;,則正確的switch語句是

A.swimh(x){case1.0:printf("*\n");case2.0:printf("**\n");}

B.switch((int)x);{case1:printf("*\n");case2:printf("**\n");}

C.switch(a+

D.{case1:pfintf("*\n");case2+1:pfintf("**\n");}switch(a-I-{case1:pfintf("*\n");casec:printf("**\n");}

60.設(shè)計程序時,應(yīng)采納的原則之一是()。

A.程序的結(jié)構(gòu)應(yīng)有助于讀者的理解B.限制goto語句的使用C.減少或取消注釋行D.程序越短越好

四、選擇題(20題)61.

62.

63.

A.*P=*q;B.P=q;C.*P=&nl;D.P=*q;

64.

65.下列敘述中錯誤的是()。

A.列表框和組合框都有List屬性

B.列表框有Selected屬性,而組合框沒有

C.列表框和組合框都有Style屬性

D.組合框有Text屬性,而列表框沒有

66.

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

A.a=10b=50c=10

B.a=10b=50c=30

C.a=10b=30c=lO

D.a=50b=30c=50

68.

69.

70.若有“doublea;”,則正確的輸入語句是()。A.A.scanf("%1f",a);

B.scanf("%f",&a);

C.scanf("%1f",&a);

D.scanf("1e",&a);

71.設(shè)有如下程序段:

則執(zhí)行P=s;語句后,以下敘述中正確的是()。

A.可以用*P表示s[O]

B.S數(shù)組中元素的個數(shù)和P所指字符串長度相等

C.s和P都是指針變量

D.數(shù)組s中的內(nèi)容和指針變量P中的內(nèi)容相等

72.下面結(jié)構(gòu)體的定義語句中,錯誤的是()。

A.structord{intx;intY;intZ;};struetorda;

B.structord{intx;inty;intZ;}structorda;

C.structord{intX;intY;intZ;}a;

D.struct{intX;inty;intZ;}a;

73.有以下程序:

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

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

74.

75.

76.交換兩個變量的值,不允許用臨時變量,應(yīng)該使用下列()位運(yùn)算符。

A.&B.^C.D.E.F.~

77.

78.若有說明,double*m,n;則能通過sCanf語句正確給輸入項讀人數(shù)據(jù)的程序段是()。

A.*m=&n;scanf("%lf",m);

B.m=(double*)malloc(10);scanf("%f",m);

C.m=&n;scanf("%lf",n);

D.m=&n;scanf("%le",m);

79.有以下程序:

程序運(yùn)行后的輸出結(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,

80.

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc的功能是:從字符串str中,刪除所有大寫字母F。

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

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

試題程序:

#include<stdio.h>

voidproc(char*str)

{

inti,j;

//****found****

for(i=j=0;str[i]一0;i++)

if(str[i]!=F)

//****found****

str[i]=str[i];

str[j]=\0;

}

voidmain

{

charstr[80];

printf("\nEnterastring:");

gets(str);

printf("Theoriginalstring:");

puts(str);

proc(str);

printf("Thestringafterdeleted:");

puts(str);

printf("\n\n");}

六、程序設(shè)計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,請編寫函數(shù)fun(),其功能是將一個數(shù)字字符串轉(zhuǎn)換成與其面值相同的長整型整數(shù)??烧{(diào)用strlen函數(shù)求字符串的長度。例如,在鍵盤輸入字符串2345210,函數(shù)返回長整型整數(shù)2345210。注意:部分源程序存放在文件prog1.c中,請勿改動主函數(shù)main()和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun()指定的部位填入所編寫的若干語句。試題程序:

參考答案

1.D第一次執(zhí)行循環(huán)前,a=1,滿足a<8,執(zhí)行循環(huán)后,b=3,a=3。執(zhí)行完a++操作后,a=4。由于a<8,執(zhí)行第二次循環(huán)后,b=7,a=6,執(zhí)行完a++操作后,a=7。由于a<8,執(zhí)行第三次循環(huán)后,b=14,a=9,執(zhí)行完a++操作后a=10。此時不滿足a<8,跳出循環(huán)。

2.A函數(shù)的功能是對數(shù)組某一區(qū)域內(nèi)的元素隔個求和;a[3]=4,所以從4開始進(jìn)行隔個求和,a[7]=8,即對4到8的元素隔個求和,4+6=10。

3.D

4.A解析:線性表的插入和刪除允許在任何位置進(jìn)行,所以B選項的說法是正確的;棧的操作只允許在棧頂進(jìn)行,因此,棧稱為先進(jìn)后出表(FILO,FirstInLastOut),或“后進(jìn)先出”表(LIFO,LastInFirstOut),所以C選項說法也是正確的;隊列(queue)是只允許在一端刪除,在另一端插入的順序表,允許刪除的一端叫做隊頭(front),允許插入的一端叫做隊尾(rear),因此隊列亦稱作先進(jìn)先出(FIFO,FirstInFirstOut)的線性表,或后進(jìn)后出(LILO,LastInLastOut)的線性表。所以D選項說法也是正確的。

5.BB?!窘馕觥筷P(guān)系的交(∩)、并(∪)和差(-)運(yùn)算要求兩個關(guān)系是同元的,顯然作為二元的R和三元的S只能做笛卡兒積運(yùn)算。

6.B

7.B

8.D

9.B

10.A本題考查循環(huán)跳出的知識點:①break語句可以出現(xiàn)在switch循環(huán)體內(nèi)及語句體內(nèi),它的作用是跳出循環(huán)體,不能用于其他的語句;②continue語句的作用是結(jié)束本次循環(huán),即跳過循環(huán)體中下面尚未執(zhí)行的語句,而接著判定循環(huán)條件是否成立,確定下一次循環(huán)是否繼續(xù)執(zhí)行,執(zhí)行contiune語句不會使整介循環(huán)終止;③循環(huán)體內(nèi)使用break語句會使循環(huán)提前終止;④從多層循環(huán)嵌套中退出時,可以使用90t0語句或者break語句。

11.D本題考查靜態(tài)變量,靜態(tài)變量有儲存已經(jīng)操作過的值,所以fun(a)s[O]=3,s[1]=5,s[2]=7,所以答案選擇D。

12.C

13.B

14.D層次模型的基本結(jié)構(gòu)是樹形結(jié)構(gòu),網(wǎng)狀模型是一個不加任何條件限制的無向圖,關(guān)系模型采用二維表來表示,所以三種數(shù)據(jù)庫的劃分原則是數(shù)據(jù)之間的聯(lián)系方式。

15.A根據(jù)題意,要使a的值為111,b的值為333,必須在讀入時指定a的讀入寬度為3,b的讀入寬度為3,且a和b的控制字符之間必須額外增加%*控制符,用于跳過中間的3位輸入數(shù)字,選項A正確。本題答案為A選項。

16.C解析:這是一個逗號表達(dá)式,它

溫馨提示

  • 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

提交評論