2022-2023年廣東省揭陽市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)_第1頁
2022-2023年廣東省揭陽市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)_第2頁
2022-2023年廣東省揭陽市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)_第3頁
2022-2023年廣東省揭陽市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)_第4頁
2022-2023年廣東省揭陽市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

2022-2023年廣東省揭陽市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.設(shè)C語言中,一個int型數(shù)據(jù)在內(nèi)存中占2個字節(jié),則unsignedint型數(shù)據(jù)的取值范圍為()。

A.0~255B.0~32767C.0~65535D.0~2147483647

2.以下敘述中正確的是()。A.A.當(dāng)對文件的讀(寫)操作完成之后,必須將它關(guān)閉,否則可能導(dǎo)致數(shù)據(jù)丟失

B.打開一個已存在的文件并進(jìn)行了寫操作后,原有文件中的全部數(shù)據(jù)必定被覆蓋

C.在一個程序中當(dāng)對文件進(jìn)行了寫操作后,必須先關(guān)閉該文件然后再打開,才能讀到第1個數(shù)據(jù)

D.c語言中的文件是流式文件,因此只能順序存取數(shù)據(jù)

3.設(shè)a,b,c,d,m和n均為int型變量,且a=5,b=6,c=7,d=m=2,n=2,則邏輯表達(dá)式(m=a>b)&&(n=c>d)運(yùn)算后,n的值為()

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

4.以下選項(xiàng)中能用作數(shù)據(jù)常量的是()。

A.115LB.0118C.1.5e1.5D.o115

5.有以下程序:#include<stdio.h>main(){inta=1,b=0;if(--a)b++;elseif(a==0)b+=2;elseb+=3:print[("%d\n",b);}程序運(yùn)行后的輸出結(jié)果是()。A.0B.1C.2D.3

6.

7.定義學(xué)生選修課程的關(guān)系模式如下:SC(S#,Sn,C#,Cn,G,Cr)(其屬性分別為學(xué)號、姓名、課程號、課程名、成績、學(xué)分)則對主屬性部分依賴的是()。

A.C#→CnB.(S#,C#)→GC.(S#,C#)→S#D.(S#,C#)→C#

8.在下列關(guān)系運(yùn)算中,不改變關(guān)系表中的屬性個數(shù)但能減少元組個數(shù)的是A.并B.交C.投影D.笛卡兒乘積

9.若一組記錄的排序碼為(7,9,3,5,1,2,10),則利用堆排序的方法建立的初始堆為()

A.10,7,9,3,5,1,2

B.10,9,7,5,1,2,3

C.10,9,7,5,3,2,1

D.10,9,7,3,2,1,5

10.下列敘述中錯誤的是()。A.在程序中凡是以“#”開始的語句行都是預(yù)處理命令行

B.預(yù)處理命令行的最后不能以分號表示結(jié)束

C.#defineMAX是合法的宏定義命令行

D.C程序?qū)︻A(yù)處理命令行的處理是在程序執(zhí)行的過程中進(jìn)行的

11.如果要求一個線性表既能較快地查找,又能適應(yīng)動態(tài)變化的要求,可以采用下列哪一種查找方法()

A.分塊B.順序C.折半D.哈希

12.

13.設(shè)有一個棧,元素依次進(jìn)棧的順序?yàn)锳、B、C、D、E。下列()是不可能的出棧序列。

A.A,B,C,D,EB.B,C,D,E,AC.E,A,B,C,DD.E,D,C,B,A

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

15.

16.設(shè)變量已正確定義,則以下能正確計算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;

17.有以下程序:#include<stdio.h>main(){intk=5;while(--k)printf(“%d”,k-=3);printf(“\n”);}程序運(yùn)行后的輸出結(jié)果是()。

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

18.設(shè)”inta=15,b=26;”,則”printf(“%d,%d”,a,b);”的輸出結(jié)果是()。

A.15B.26,15C.15,26D.26

19.下列程序是用來判斷數(shù)組中特定元素的位置所在的。#include<conio.h>#include<stdio.h>intfun(int*s,intt,int*k){inti;*k=0;for(i=0;i<t;i++)if(s[*k]<s[i])*k=i;returns[*k];}main(){inta[10]={876,675,896,101,301,401,980,431,451,777},k;fun

A.7,431B.6C.980D.6,980

20.下列程序的輸出的結(jié)果是()。main{doubled=3.2;intx,Y;x=1.2;v=(x+3.8)/5.0;printf("%d\n",d*y);}A.3B.3.2C.0D.3.07

二、2.填空題(20題)21.以下程序的輸出結(jié)果是【】。

main()

{charc=′z′;

printf("%c",c-25);}

22.有如圖所示的雙鏈表結(jié)構(gòu),請根據(jù)圖示完成結(jié)構(gòu)體的定義:

structaa

{intdata;

【】}node;

23.在結(jié)構(gòu)化分析使用的數(shù)據(jù)流圖(DFD)中,利用【】對其中的圖形元素進(jìn)行確切解釋。

24.以下程序用來輸出結(jié)構(gòu)體變量ex所占存儲單元的字節(jié)數(shù),請?zhí)羁铡?/p>

structst

{charname[20];doublescore;};

main()

{structstex;

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

25.耦合和內(nèi)聚是評價模塊獨(dú)立性的兩個主要標(biāo)準(zhǔn),其中______反映了模塊內(nèi)各成分之間的聯(lián)系。

26.求任意一個數(shù)(用16位二進(jìn)制碼表示)的補(bǔ)碼。

main()

{

unsignedinta;

【】;

scanf("%o",&a);

printf("%o\n",getbits(a));

}

unsignedintgetbits(value)

unsignedintvalue;

{

unsignedintz;

z=【】;

if(z==0100000)

【】;

else

z=value;

return(z);

}

27.下列程序執(zhí)行輸出的結(jié)果是______。

#include<stdio.h>

f(intA)

{intb=0;

staticc=7;

a=c++;b++;

return(A);

}

main()

{inta=2,i,k;

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

k=f(a++);

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

}

28.軟件生命周期分為軟件定義期、軟件開發(fā)期和軟件維護(hù)期,詳細(xì)設(shè)計屬于______中的一個階段。

29.有以下程序:

main()

{intt=1,i=5;

for(;i>=0;i--)t*=i;

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

}

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

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

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

main()

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

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

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

}

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

#include<stdio.h>

main()

{inta=2,b=-1,C=2;

if(a<B)

if(b<O)c=0;

elsec++;

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

}

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

#include<stdio.h>

main()

{inta=10,b=3;

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

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

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

}

33.數(shù)據(jù)結(jié)構(gòu)分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),線性表、棧和隊(duì)列都屬于【】。

34.以下程序的輸出結(jié)果是()。#definePR(ar)printf("ar=%d”,ar)main(){intj,a[]={1,8,3,7,6,13,17,15},*p=a+5;for(j=3;j;j--)switch(j){case1:case2:PR(*p++);break;case3:PR(*(--p));}}

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

#include<stdio.h>

main()

{intx=3,y=2,z=1;

if(x<y)

if(y<0)z=0;

elsez+=1;

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

}

36.有以下程序

main()

{intt=1,i=5;

for(;i>=0;i--)t*=i;

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

}

執(zhí)行后輸出結(jié)果是______。

37.以下程序的運(yùn)行結(jié)果是【】。

#include<string.h>

typeaefstructstudent{

charname[10];

longsno;

floatscore;

{STU;

main()

{STUa={"zhangsan",2001,95},b={"Shangxian",2002,90},c={"Anhua",2003,95},d,*p=&d;

d=a;

if(strcmp(a.name,b.name)>0)d=b;

if(strcmp(C.name,)>0)d=C;

printf("%1d%s\n",d.sno,p->name);

}

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

39.下列的for語句的循環(huán)次數(shù)為______。

for(x=1,y=0;(y!=19)&&(x<7);x++);

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

#include<stdio.h>

longfunc(intx)

{longp;

if(x==0||x==1)

return(1);

p=x*func(x-1);

return(p);

}

main()

{printf("%d\n",func(4));

}

三、1.選擇題(20題)41.有以下程序:main(){intn=0,m=l,x=2;if(!n)x-=l:if(!m)x-=2;if(!x)x-=3;printf("%d\n",x);}執(zhí)行后的輸出結(jié)果是______。

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

42.C語言函數(shù)返回值的類型是由______決定的。

A.return語句中的表達(dá)式類型B.調(diào)用函數(shù)的主調(diào)函數(shù)類型C.調(diào)用函數(shù)時臨時D.定義函數(shù)時所指定的函數(shù)類型

43.下列程序的運(yùn)行結(jié)果為

#include<stdio.h>

voidabc(char*str)

{inta,b;

for(a=b=0;str[a]!='\0';a++)

if(str[a]!='c')

str[b++]=str[a];

str[b]='\0';}

voidmain()

{charstr[]="abcdef";

abc(str);

printf("str[]=%s",str);}

A.str[]=abdefB.str[]=abcdefC.str[]=aD.str[]=ab

44.假定所有變量均已正確說明,下列程序段運(yùn)行后x的值是a=d=c=0;x=35;if(!a)x=-1,elseif(b);if(c)x=3;elsex=4;

A.34B.4C.35D.3

45.與十進(jìn)制數(shù)96等值的二進(jìn)制是()

A.1100000B.10010110C.1100001D.1100011

46.以下選項(xiàng)中非法的表達(dá)式是

A.0<=x<100B.i=i==0C.(char)(65+3)D.x+1=x+1

47.若定義inta=10,則表達(dá)式a+=a-=a*=a的值是()。

A.0B.-180C.-100D.-90

48.在數(shù)據(jù)處理中,其處理的最小單位是()。

A.數(shù)據(jù)B.數(shù)據(jù)項(xiàng)C.數(shù)據(jù)結(jié)構(gòu)D.數(shù)據(jù)元素

49.已知、棵二叉樹的后序遍歷序列是dabec,中序遍歷序列是debac,則它的前序遍歷序列是()。

A.acbedB.decabC.deabcD.cedba

50.函數(shù)fseek的正確調(diào)用形式是()。

A.fseek(位移量,起始點(diǎn),文件類型指針);

B.fseek(文件類型指針,位移量,起始點(diǎn));

C.fseek(文件類型指針,起始點(diǎn),位移量);

D.fseek(起始點(diǎn),位移量,文件類型指針);

51.有以下程序:#include<stdio.h>inta=1;intfun(intC){staticinta=2;c=c+1;return(a++)+c;}main(){inti,k=0;for(i=0;i<2;i++){inta=3;k+=f(A);}k+=a;printf("%d\n",k);}程序的運(yùn)行結(jié)果是()。

A.14B.15C.16D.17

52.在C語言的循環(huán)語句for、while、do-while中,用于結(jié)束本次循環(huán),繼續(xù)執(zhí)行下一次循環(huán)的語句是______。

A.switchB.breakC.continueD.goto

53.若有以下類型說明語句:charw;intx;floaty,z;則表達(dá)式w*x+z-y的結(jié)果為______類型。

A.floatB.charC.intD.double

54.若fp已正確定義并指向某個文件,當(dāng)未遇到該文件結(jié)束標(biāo)志時函數(shù)feof(fp)的值為()

A.0B.1C.-1D.一個非0值

55.若執(zhí)行下面程序時從鍵盤上輸入5,main(){intx;scanf("%d",&x);if(x++>5)printf("%d\n",x);elseprintf("%d\n",x-);}則輸出是_______。

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

56.已定義c為字符型變量,則下列語句中正確的是()。

A.c='97'B.c="97"C.c=97D.c="a"

57.計算機(jī)軟件一般包括應(yīng)用軟件和____。

A.字處理軟件B.系統(tǒng)軟件C.服務(wù)性軟件D.操作系統(tǒng)

58.在計算機(jī)中,算法是指()。

A.查詢方法B.加工方法C.解題方案的準(zhǔn)確而完整的描述D.排序方法

59.需求分析階段的任務(wù)是()

A.軟件開發(fā)方法B.軟件開發(fā)工具C.軟件開發(fā)費(fèi)用D.軟件系統(tǒng)功能

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

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

四、選擇題(20題)61.以下選項(xiàng)中值為1的表達(dá)式是()。

A.

B.

C.

D.

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

A.算法就是程序B.設(shè)計算法時只需要考慮數(shù)據(jù)結(jié)構(gòu)的設(shè)計C.設(shè)計算法時只需要考慮結(jié)果的可靠性D.以上三種說法都不對

63.有以下程序:

main

{chara='a',b;

printf("%c,",++a);

printf("%c\n",b=a++):

)

程序運(yùn)行后的輸出結(jié)果是()。A.A.b,bB.b,cC.a,bD.a,c

64.數(shù)據(jù)庫管理系統(tǒng)是()。

A.操作系統(tǒng)的一部分B.在操作系統(tǒng)支持下的系統(tǒng)軟件C.一種編譯系統(tǒng)D.一種操作系統(tǒng)

65.

66.有以下函數(shù)intaaa(char*s){char*t=s;while(*t+t);t--:return(t-s);}以下關(guān)于aaa函數(shù)的功能敘述正確的是()。A.求字符串S的長度B.比較兩個串的大小C.將串S復(fù)制到串tD.求字符串S所占字節(jié)數(shù)

67.下列字符串不屬于標(biāo)識符的是()

A.sumB.averageC.day_nightD.M,D.JOHN

68.

69.有如下程序

voidf(int*x,int*y)

{intt;

t=*x;*x=*y;*y=t;

}

main()

{inta[6]={1,2,4,6,8,10},i,*p,*q;

p=a;q=&a[5];

while(p<q)

{f(p,q);p++;q--;}

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

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

}

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

A.1,2,4,6,8,10B.10,8,4,6,2,1

C.10,8,6,4,2,1D.10,2,4,6,8,1

70.有3個關(guān)系R、S和T如下.

則由關(guān)系R和S得到關(guān)系T的操作是()。A.自然連接B.差C.交D.并

71.

已知有如下結(jié)構(gòu)體:

structsk

{inta;

floatb;

}data,*p;

若有P=&data,則對data的成員a引用正確的是()。

A.(*p).data.a(chǎn)B.(*p).a(chǎn);C.p->data.a(chǎn)D.p.data.a(chǎn)

72.若fp是指向某文件的指針,且已讀到文件末尾,則庫函數(shù)feof(fp)的返回值是

A.EOFB.-1C.1D.NULL

73.下列關(guān)于隊(duì)列的敘述中正確的是()。A.在隊(duì)列中只能插人數(shù)據(jù)B.在隊(duì)列中只能刪除數(shù)據(jù)C.隊(duì)列是先進(jìn)先出的線性表D.隊(duì)列是先進(jìn)后出的線性表

74.有以下程序(函數(shù)fun只對下標(biāo)為偶數(shù)的元素進(jìn)行操作):

#include<stdio.h>

voidfun(int*n)

{inti,j,k,t;

for(i=0;i<n-1;i+=2)

{k=i;

for(j=i;j<n;j+=2)if(a[j]>a[k])k=j;

t[a[i];a[i]=a[k];a[k]=t;

}

}

main

{intaa[lO]=[1,2,3,4,5,6,7],a;

fun(aa,7);

for(i=0;i<7;i++)printf("%d,",aa[i]);

printf("n");

}

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

A.7,2,5,4,3,6,1,

B.1,6,3,4,5,2,7,

C.7,6,5,4,3,2,1,

D.1,7,3,5,6,2,1,

75.

76.

77.

78.

有下列程序:

intfun(intx[],intn)

{staticintsum=0,i:

for(i0;i<n;i++)sum+=x[i];

returnsum;

}

main

{inta[]={1,2,3,4,5),b[]一{6,7,8,9),s=0:

s=fun(a,5)+fun(b,4);printf("%d\n",s):

}

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

A.45B.50C.60D.55

79.請選出以下程序的輸出結(jié)果()。

A.1234

B.4321

C.0000

D.4444

80.有以下程序:

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

A.0B.10C.20D.出錯

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:利用插入排序法對字符串中的字符按從小到大的順序進(jìn)行排序。插入法的基本方法是:先對字符串中的頭2個元素進(jìn)行排序,然后把第3個字符插入到前2個字符中,插入后前3個字符依然有序;再把第4個字符插人到前3個字符中,待排序的字符串已在主函數(shù)中賦予。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.請編寫一個函數(shù)voidproc(char*tt,intpp[]),統(tǒng)計在tt字符串中“a”到“z”26個字母各自出現(xiàn)的次數(shù),并依次放在pp所指數(shù)組中。例如,當(dāng)輸入字符串a(chǎn)bcdefghxyzabcde“e后,程序的輸出結(jié)果應(yīng)該是:222233110000000000000000111。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.C

2.AB)選項(xiàng)中打開一個已存在的文件并進(jìn)行了寫操作后,原有文件中的全部數(shù)據(jù)不一定被覆蓋,也可以對源文件進(jìn)行追加操作等。c)選項(xiàng)中在一個程序中當(dāng)對文件進(jìn)行了寫操作后,不用先關(guān)閉該文件然后再打開,才能讀到第1個數(shù)據(jù),可以用fseek()函數(shù)進(jìn)行重新定位即可。D)選項(xiàng)中,C語言中的文件可以進(jìn)行隨機(jī)讀寫。故本題答案為A)。

3.C

4.AA選項(xiàng)中“115L”表示長整型數(shù)據(jù)。B選項(xiàng)是八進(jìn)制常量的表示方法,但是在八進(jìn)制中不能含有數(shù)字8,所以B選項(xiàng)錯誤。C選項(xiàng)中e后面應(yīng)該是整數(shù),而不能是小數(shù)1.5,所以C選項(xiàng)錯誤。D選項(xiàng)中八進(jìn)制常量應(yīng)該是以數(shù)字“0”開始,而不是以字母“o”開始。故本題答案為A選項(xiàng)。

5.D

6.D

7.A關(guān)系SC中的主鍵是(S#,C#),但C#(課程號)單獨(dú)就可以決定Cn(課程名),存在著對主鍵的部分依賴。本題答案為A選項(xiàng)。

8.B并運(yùn)算的含義是:假設(shè)有一個“在校學(xué)生信息表”,它包括這樣一些字段:學(xué)號、姓名、性別、出生日期、籍貫、聯(lián)系電話,這個表的關(guān)系模式可以表示為:校學(xué)生信息表(學(xué)號,姓名,性別,出生日期,籍貫,聯(lián)系電話)。還有一個“新生信息表(學(xué)號,姓名,性別,出生日期,籍貫,聯(lián)系電話)”。若要將9月份進(jìn)校的新生信息加入到“在校學(xué)生信息表”中,這樣進(jìn)行的就是并運(yùn)算。并運(yùn)算不會改變表的字段(又叫屬性)個數(shù),但是會增加記錄(又叫元組)個數(shù)。交運(yùn)算的含義是:兩個表(要求結(jié)構(gòu)要一模一樣)進(jìn)行交運(yùn)算取兩個表中相同的記錄構(gòu)成一個新表,交運(yùn)算不會改變表的字段個數(shù),但是一般會減少記錄個數(shù)。投影運(yùn)算的含義是:從在“校學(xué)生信息表(學(xué)號,姓名,性別,出生日期,籍貫,聯(lián)系電話)”中選取學(xué)生的“姓名”和“聯(lián)系電話”這兩個字段,可以構(gòu)成一個“學(xué)生聯(lián)系表(姓名,聯(lián)系電話)”,這就是一個投影運(yùn)算,所以投影運(yùn)算一般會減少字段(又叫屬性)的個數(shù)。笛卡兒乘積又叫稱乘運(yùn)算,設(shè)有n元關(guān)系R和m元關(guān)系s,他們分別有P、q個元組,則關(guān)系R和關(guān)系s的笛卡兒積表示為R×S,該關(guān)系是一個n+m元關(guān)系,元組個數(shù)是PXq。因此本題的正確答案是B。\r\n

9.B

10.C解析:預(yù)處理命令行是以“#”開始的語句,預(yù)處理命令行的最后不能以分號表示結(jié)束,預(yù)處理命令行。其中宏定義的字符替換的定義格式為:#define標(biāo)識符字符串,預(yù)處理命令行是在系統(tǒng)對源程序進(jìn)行編譯之前進(jìn)行處理的,不是在程序執(zhí)行的過程中。

11.D

12.B

13.C

14.C

15.A

16.D解析:A選項(xiàng),將f賦值為0,結(jié)果得到0,因?yàn)?乘任何數(shù)都為0;B選項(xiàng),i<n,計算的是(n-1)!,C選項(xiàng)將陷入死循環(huán)。

17.A“--k”是先自減再使用,所以第1次判斷條件即while(4),條件為真輸出k的值,k=4-3,結(jié)果為1;第2次判斷條件即while(0),條件為假,結(jié)束循環(huán),輸出回車換行符。故本題答案為A選項(xiàng)。

18.C

19.D解析:本題中直接使用指針變量k,但在使用時要注意對k的指針運(yùn)算。此外,一開始應(yīng)知道*k的值為數(shù)組中的某一下標(biāo)值,即*k=0,本函數(shù)的功能是找出數(shù)組中的最大元素的位置及最大元素的值。

20.C根據(jù)賦值運(yùn)算的類型轉(zhuǎn)換規(guī)則,先將double型的常量l.2轉(zhuǎn)換為int型,因?yàn)閤的類型是int,則X的值為1;執(zhí)行語句y=(K+3.8)/5.0時,即先將整型變量X的值1轉(zhuǎn)換為double型1.0,然后3.8相加得4.8,進(jìn)行除法運(yùn)算4.8/5.0結(jié)果為0.即變量y的值為0,d*Y的值也為0,故選C選項(xiàng)。

21.aa解析:'z'的ASCII碼值為122,經(jīng)過c-25運(yùn)算后,得97,以字符形式輸出是a。

22.structaa*lhead*rchild;structaa*lhead,*rchild;解析:結(jié)構(gòu)體對鏈表的定義。

23.數(shù)據(jù)字典或DD數(shù)據(jù)字典或DD解析:數(shù)據(jù)流圖用來對系統(tǒng)的功能需求進(jìn)行建模,它可以用少數(shù)幾種符號綜合地反映出信息在系統(tǒng)中的流動、處理和存儲情況。數(shù)據(jù)詞典(DataDictionary,DD)用于對數(shù)據(jù)流圖中出現(xiàn)的所有成分給出定義,它使數(shù)據(jù)流圖上的數(shù)據(jù)流名字、加工名字和數(shù)據(jù)存儲名字具有確切的解釋。

24.structst或exstructst或ex解析:結(jié)構(gòu)體類型數(shù)據(jù),其數(shù)據(jù)成員各自占據(jù)不同的存儲空間,整個結(jié)構(gòu)體變量所占存儲單元的字節(jié)數(shù)為每一個數(shù)據(jù)成員所占的存儲空間的和。注意:共用體變量所占存儲單元字節(jié)數(shù)的計算。

25.內(nèi)聚內(nèi)聚

26.unsignedintgetbits()value&0100000z=~value+1unsignedintgetbits()\r\nvalue&0100000\r\nz=~value+1

27.88解析:第1次for循環(huán),i=0,調(diào)用函數(shù)f(2),然后將a的值加1,在f()函數(shù)中,變量c為static類型,所以c=8:第2次for循環(huán),i=1,調(diào)用函數(shù)f(3),然后將a的值加1,調(diào)用函數(shù)f(3)時,a=c++=8,所以k=8。

28.軟件開發(fā)軟件開發(fā)解析:軟件生命周期分為3個時期共8個階段:軟件定義期(問題定義、可行性研究和需求分析)、軟件開發(fā)期(系統(tǒng)設(shè)計、詳細(xì)設(shè)計、編碼和測試)、軟件維護(hù)期(即運(yùn)行維護(hù)階段)。

29.00解析:for循環(huán)執(zhí)行完成后t=5×4×3×2×1×0=0。

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

31.22解析:分析程序,a=2,b=-1,c=2時,if語句的表達(dá)式a<b不成立,不再往下判斷,直接退出if語句,執(zhí)行后面的輸出語句,程序結(jié)束。在這個程序中a、b、c的值沒做任何改變。

32.11371,13,7解析:本題考查3個知識點(diǎn):①余數(shù)的計算,題中的a=10,b=3,a%b=1:②(表達(dá)式1,表達(dá)式2)形式的結(jié)果為最后一個表達(dá)式的值,題中的a=10,b=3,(a-b,a+b)=a+b=13;③條件運(yùn)算符的使用,題中的a-b?a-b:a+b,判斷語句a-b=7不為0,所以執(zhí)行a-b,結(jié)果為7。

33.線性結(jié)構(gòu)線性結(jié)構(gòu)解析:本題考查了數(shù)據(jù)結(jié)構(gòu)的基本概念。與棧類似,隊(duì)列也是線性表,可以采用鏈?zhǔn)酱鎯Y(jié)構(gòu),所以帶鏈的隊(duì)列屬于線性結(jié)構(gòu)。

34.ar=6ar=6ar=13ar=6ar=6ar=13解析:通過*p=a+5將指針P指向a[5],第1次循環(huán),i=3時,switch(3),執(zhí)行case3,*(-p)-a[4]=6,所以輸出ar=6;第2次循環(huán),j=2時,switch(2),執(zhí)行case2,(*p++)是先引用a[4]的值6,輸出ar=6,再將指針P移位指向a[5];第3次循環(huán),j=1時,switch(1),執(zhí)行case1,case1后沒有break語句,接著執(zhí)行case2,(*p++)是先引用a[5]的值13,輸出ar=13,再將指針P移位指向a[6]。

35.11解析:ifelse語句的功能是:若表達(dá)式的值為真,執(zhí)行語句1,并跳過其他語句,執(zhí)行ifelse語句的下一條語句,若表達(dá)式的值為假,跳過語句1,執(zhí)行語句2,依次往下判斷。題中,x=3,y=2,第一個if語句的控制條件x<y就不滿足,又沒有與之配對的else語句,所以直接執(zhí)行printf語句,在整個過程中變量z的值都沒發(fā)生變化。

36.00解析:本題中的for循環(huán)共執(zhí)行了6次,每執(zhí)行一次將相應(yīng)i的值相乘,最后當(dāng)i=-1時停止循環(huán).該for循環(huán)執(zhí)行完后t的值為5*4*3*2*1*0=0,故最后輸出I的值為0。

37.2002Shanxian2002Shanxian解析:本題中第一個if語句將結(jié)構(gòu)體變量a.name和結(jié)構(gòu)體變量b.name中較小的那個賦值給結(jié)構(gòu)體變量d,第二個if語句將結(jié)構(gòu)體變量c.name和結(jié)構(gòu)體變量d.name較大的那個賦給結(jié)構(gòu)體變量d。通過函數(shù)strcmp比較。strcmp()函數(shù)有兩個參數(shù),分別為被比較的兩個字符串。如果第一個字符串大于第二個字符串返回值大于0,若第一個小于第二個返回值小于0,相等時返回值為0。字符串比較大小的標(biāo)準(zhǔn)是從第一個字符開始依次向右比較,遇到某一個字符大,該字符所在的字符串就是較大的字符串,如果遇到某一個字符小,該字符所在的字符串就是較小的字符串。本程序中第一個if語句strcmp(a.name,b.name)>0為真,故將b的值賦給d,第二個if語句strcmp(c.name,d.name)>0為假,故不執(zhí)行后面的語句,最后d的值為b的值,因此d.sno和p->name的值為2002Shangxian。

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

39.66解析:分析程序可知,每循環(huán)一次,x的值加1,然后檢測循環(huán)控制條件(y!=19)&&(x<7),因y的值不變,故滿足x<7時循環(huán)6次。

40.2424解析:本題考查函數(shù)的循環(huán)調(diào)用。p=x*func(x-1),當(dāng)x=4時,不滿足if語句的條件,p=4*func(3),x=3也不滿足條件,則func(3)=3*func(2),func(2)=2*func(1),x=1滿足條件return(1),則輸出結(jié)果為4*3*2*1=24。

41.B解析:因n=0,故!n為真,執(zhí)行語句x-=1得x=x-1=2-1=1;條件!m和!x不成立,所以x=1,正確答案為1。

42.D解析:函數(shù)值的類型應(yīng)當(dāng)是在定義函數(shù)時指定的。在定義函數(shù)時對函數(shù)值說明的類型一般應(yīng)該和return語句中的表達(dá)式類型—致,如果不—致,則以函數(shù)類型為準(zhǔn),即函數(shù)類型決定返回值的類型。

43.A解析:本題考查了用字符指針引用字符數(shù)組中的字符及對字符的操作。函數(shù)abc()的for語句執(zhí)行過程是:從字符指針str所指向的字符數(shù)組的第一個元素開始,逐一判斷字符是否為'c',若不是就執(zhí)行一次數(shù)組元素的賦值過程,若字符為'c'就不執(zhí)行。

44.B

45.A

46.D解析:本題考核的知識點(diǎn)是表達(dá)式的賦值。選項(xiàng)D中將表達(dá)式的值賦給表達(dá)式,在c語言中是不允許給表達(dá)式賦值的,故選項(xiàng)D是非法的表達(dá)式,所以,4個選項(xiàng)中選項(xiàng)D符合題意。

47.B解析:算術(shù)運(yùn)算符的運(yùn)算規(guī)則是:從右到左的原則。所以表達(dá)式中先計算a=a-a*(上標(biāo))a的值是-90,再計算a=a+a的值是-180。

48.BB)【解析】數(shù)據(jù)元素是由多個數(shù)據(jù)項(xiàng)組成,數(shù)據(jù)是能夠被計算機(jī)識別、存儲和加工處理的信息載體,數(shù)據(jù)處理的最小單位是數(shù)據(jù)項(xiàng)。

49.D解析:依據(jù)后序遍歷序列可確定根結(jié)點(diǎn)為c,由中序遍歷序列可知其左子樹由deba構(gòu)成,右子樹為空;又由左子樹的后序遍歷序列可知其根結(jié)點(diǎn)為e,由中序遍歷序列可知其左子樹為d,右子樹由ba構(gòu)成,如圖所示。由此可知該二叉樹的前序遍歷序列為選項(xiàng)D)。

50.B解析:改變文件位置的指針函數(shù)fseek()的調(diào)用形式為:fseek(fp,offset,position);。fseek函數(shù)參數(shù)說明:“fp”是指向該文件的文件型指針;“offset'’為位移量,指從起始點(diǎn)position.到要確定的新位置的字節(jié)數(shù)。也就是以起點(diǎn)為基準(zhǔn),向前移動的字節(jié)數(shù)。ANSIC要求該參數(shù)為長整型量;“position”為起始點(diǎn),指出以文件的什么位置為基準(zhǔn)進(jìn)行移動,position的值用整型常數(shù)表示,“0”表示文件的開頭,“1”表示文件的當(dāng)前位置,“2”表示文件的末尾。

51.A解析:本題考查的重點(diǎn)是對static變量以及全局變量的理解。static變量是函數(shù)或文件中的永久變量。本題中staticinta=2語句定義了一個static局部變量,編譯程序?yàn)槠渖捎谰么鎯卧?,即調(diào)用函數(shù)fun時,其值一直都保存著,而不是使用函數(shù)外所賦的值(盡管開頭定義了一個同名的全局變量)。在主函數(shù)中,for循環(huán)進(jìn)行兩次,第一次循環(huán)得f(3)=3+1+2=6,從而k+=f(3)=6,第二次循環(huán)由于static局部變量a變成了3,從而f(3)的值為7,故k+=f(3)=13,再執(zhí)行k+=a時,此時a的值為全局變量,其值為1,故k的值為14,選項(xiàng)A是正確的。

52.C解析:循環(huán)輔助控制語句有continue;和break;,前者跳過本次循環(huán),進(jìn)行下一次循環(huán),后者跳出整個循環(huán)語句。

53.A解析:在進(jìn)行運(yùn)算時,不同類型的數(shù)據(jù)參加運(yùn)算,需要先將其轉(zhuǎn)換成同一類型的數(shù)據(jù),然后再進(jìn)行運(yùn)算。轉(zhuǎn)換的順序由低到高為:char,short→int→unsigned→long→double←float,故結(jié)果為float型。

54.A解析:文件尾測試函數(shù)feof()的應(yīng)用,讀取文件時,當(dāng)文件中的數(shù)據(jù)全部讀完后,文件位置指針將位于文件的結(jié)尾。此時如果讀數(shù)據(jù),將會出現(xiàn)錯誤。為了保證讀寫數(shù)據(jù)的正確性,需要進(jìn)行文件尾測試,文件尾測試使用函數(shù)feof(),它的功能是測試fp指向的文件是否到達(dá)文件尾。若到達(dá)文件尾,返回值為非0,否則返回值為0。在本題中fP指向的某文件還沒有到了文件尾,因此返回0。

55.B解析:根據(jù)C語言的語法,x++是使用x之后,再將x的值加1,在if語句中,x的值為5,條件不成立,執(zhí)行else后面的語句,因?yàn)閤的值已經(jīng)加1,為6,所以打印結(jié)果為6。

56.C解析:本題考核的知識點(diǎn)是字符型變量的基本概念。用單引號括起來的一個字符稱為字符常量,而選項(xiàng)B和選項(xiàng)D中用的是雙引號,而用雙引號括起來的字符為字符串常量,故選項(xiàng)B和選項(xiàng)D不正確。因?yàn)樵贑語言中,字符常量在存儲時,并不是把該字符本身放到內(nèi)存單元中去,而是將該字符的相應(yīng)的ASCII代碼放到存儲單元中,所以C語言使字符型數(shù)據(jù)和整形數(shù)據(jù)之間可以通用,選項(xiàng)C正確.而選項(xiàng)A中,給字符型變量賦值時只能賦一個字符,而9,7作為字符時為兩個字符且必須分別為單引號括起來,故選項(xiàng)A不正確,所以,4個選項(xiàng)中選項(xiàng)C符合題意。

57.B

58.CC。【解析】計算機(jī)算法是指解題方案的準(zhǔn)確而完整的描述,它的基本特征分別是:可行性、確定性、有窮性和擁有足夠的情報。

59.DD)【解析】需求分析是軟件定義時期的最后一個階

\n段,它的基本任務(wù)就是詳細(xì)調(diào)查現(xiàn)實(shí)世界要處理的對象,充分了解原系統(tǒng)的工作概況,明確用戶的各種需求,然后在這些基礎(chǔ)上確定新系統(tǒng)的功能。

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

61.B解析:‘0’代表ASCⅡ碼為48的字符,‘\\0’代表ASCⅡ碼為0的字符,‘1’代表ASCⅡ碼為49的字符,所以只有選項(xiàng)B的表達(dá)式的值為1。

62.D算法是指解題方案的準(zhǔn)確而完整的描述,算法不等于程序,也不等于計算方法,所以A錯誤。設(shè)計算法時不僅要考慮對數(shù)據(jù)對象的運(yùn)算和操作,還要考慮算法的控制結(jié)構(gòu)。故答案為D選項(xiàng)。

63.A++a與a++的區(qū)別是前者先自加再運(yùn)算,后者是先運(yùn)算后自加。

64.B數(shù)據(jù)庫管理系統(tǒng)是數(shù)據(jù)庫的機(jī)構(gòu),它是一種系統(tǒng)軟件,負(fù)責(zé)數(shù)據(jù)庫中的數(shù)據(jù)組織、數(shù)據(jù)操縱、數(shù)據(jù)維護(hù)、控制及保護(hù)和數(shù)據(jù)服務(wù)等,是一種在操作系統(tǒng)支持下的系統(tǒng)軟件,因此本題答案為B)。

65.B

66.A在while循環(huán)開始前,指針t和s都指向字符串的起始位置。while循環(huán)的判斷條件中,判斷t所指位置是否為字符串的結(jié)束標(biāo)志,同時讓t右移一位。當(dāng)while循環(huán)結(jié)束時,t自減1,此時t指向的位置是字符串的結(jié)束標(biāo)志,故t-s的值是字符串的長度。

67.D

68.B

69.C題目中給出的程序分為兩個部分:主函數(shù)main和函數(shù)f。在主函數(shù)中初始化定義了一個整型數(shù)組a,大小為6,并定義了兩個數(shù)組指針p,q。指針p指向數(shù)組第一個元素的地址,指針q指向數(shù)組最后一個元素的地址。主函數(shù)包含一個while語句,循環(huán)條件為p<q,while語句內(nèi)部先調(diào)用了f函數(shù),p、q指針為該函數(shù)的實(shí)參,隨后進(jìn)行了p++操作和q--,即使p指針指向下一個元素的地址,q指針指向前一個元素的地址。由于是數(shù)組存儲,必然存在初始時,有p<q,當(dāng)p>=q時,while語句結(jié)束。while語句后面是for語句,該語句的作用是輸出數(shù)組a[]中所有的數(shù)據(jù)。

f函數(shù)的形參為整型指針,函數(shù)的功能是使得輸入的指針變量所指向的數(shù)據(jù)進(jìn)行交換,由于使用的是指針變量,故在f函數(shù)中對指針的操作結(jié)果會影響調(diào)用函數(shù)中(main)實(shí)參所指數(shù)據(jù)的改變,題目中f函數(shù)的調(diào)用實(shí)質(zhì)是將main函數(shù)中的p、q指針?biāo)傅臄?shù)據(jù)進(jìn)行交換,也將導(dǎo)致數(shù)組a中相應(yīng)的數(shù)據(jù)進(jìn)行交換。結(jié)合while語句,也就是將數(shù)組a中的第1個數(shù)據(jù)與第6個數(shù)據(jù)進(jìn)行交換,第2個數(shù)據(jù)與第5個數(shù)據(jù)進(jìn)行交換,以此類推,得到結(jié)果10,8,6,4,2,1。

70.B關(guān)系之間的操作分為自然連接、投影、交、并、差等,由圖可知此操作為差操作。

71.B

\n本題主要考查結(jié)構(gòu)指針:P=&data,訪問結(jié)構(gòu)體的成員。它可以通過結(jié)構(gòu)變量訪問,即data,可以用等價的指針形式:(*p).a(chǎn)和P->a來訪問結(jié)構(gòu)體變量中的成員。

\n

72.C解析:EOF是文本文件的文件結(jié)束標(biāo)志,NULL是打開文件錯誤的時候返回值。foef(fp)用來判斷文件位置指針是否在文件末尾,文本文件和二進(jìn)制文件均可以使用此函數(shù)。如果遇到文件結(jié)束就返回1,否則返回0。

73.C隊(duì)列是一種操作受限的線性表。它只允許在線性表的一端進(jìn)行插入操作,另一端進(jìn)行刪除操作。其中,允許插入的一端稱為隊(duì)尾(rear),允許刪除的一端稱為隊(duì)首(front)。隊(duì)列具有先進(jìn)先出的特點(diǎn),它是按“先進(jìn)先出”的原則組織數(shù)據(jù)的。

74.A\n對下標(biāo)為偶數(shù)的元素進(jìn)行降序排序,下標(biāo)為奇數(shù)元素保持不變。

\n

75.B

76.B

77.D

78.C

\n在函數(shù)intfun(intxE],intn)的定義中,變量sum為一個靜態(tài)局部變量。由于在整個程序運(yùn)行期間,靜態(tài)局部變量在內(nèi)存中的靜態(tài)存儲中占據(jù)著永久的存儲單元。函數(shù)intfun(intx[],intn)的功能是求出數(shù)組X[]各個元素的和,所以在j三函數(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=l5+45=60。

\n

79.C本題的考查點(diǎn)是函數(shù)的形參和實(shí)參的關(guān)系。x作為函數(shù)sub的實(shí)參時,函數(shù)對X值的改變沒有返回主函數(shù),并能使得x的值變化,所以在打印時,x的值始終是0。

80.C分配內(nèi)存空間函數(shù)malloe的調(diào)用形式:類型說明符*)malloe(size)。其功能是在內(nèi)存的動態(tài)存儲區(qū)中分配一塊長度為”size”字節(jié)的連續(xù)區(qū)域,函數(shù)的返回值為該區(qū)域的首地址?!鳖愋驼f明符”表示把該區(qū)域用于何種數(shù)據(jù)類型。

81.錯誤:c=arr[i];

正確:ch=arrEi];

【解析】由函數(shù)定義可知,函數(shù)proc只定義了變量ch,沒有定義變量c。因此,“c=”r[i];”應(yīng)改為“ch=arr[i];”。

82.

【解析】由函數(shù)proc()可知,數(shù)組PP中存放26個字母各自出現(xiàn)的次數(shù),初始化為0。然后判斷字符串tt中每一個字符,每檢查一個字符,將數(shù)組pp中相應(yīng)的元素加1。

2022-2023年廣東省揭陽市全國計算機(jī)等級考試C語言程序設(shè)計模擬考試(含答案)學(xué)校:________班級:________姓名:________考號:________

一、單選題(20題)1.設(shè)C語言中,一個int型數(shù)據(jù)在內(nèi)存中占2個字節(jié),則unsignedint型數(shù)據(jù)的取值范圍為()。

A.0~255B.0~32767C.0~65535D.0~2147483647

2.以下敘述中正確的是()。A.A.當(dāng)對文件的讀(寫)操作完成之后,必須將它關(guān)閉,否則可能導(dǎo)致數(shù)據(jù)丟失

B.打開一個已存在的文件并進(jìn)行了寫操作后,原有文件中的全部數(shù)據(jù)必定被覆蓋

C.在一個程序中當(dāng)對文件進(jìn)行了寫操作后,必須先關(guān)閉該文件然后再打開,才能讀到第1個數(shù)據(jù)

D.c語言中的文件是流式文件,因此只能順序存取數(shù)據(jù)

3.設(shè)a,b,c,d,m和n均為int型變量,且a=5,b=6,c=7,d=m=2,n=2,則邏輯表達(dá)式(m=a>b)&&(n=c>d)運(yùn)算后,n的值為()

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

4.以下選項(xiàng)中能用作數(shù)據(jù)常量的是()。

A.115LB.0118C.1.5e1.5D.o115

5.有以下程序:#include<stdio.h>main(){inta=1,b=0;if(--a)b++;elseif(a==0)b+=2;elseb+=3:print[("%d\n",b);}程序運(yùn)行后的輸出結(jié)果是()。A.0B.1C.2D.3

6.

7.定義學(xué)生選修課程的關(guān)系模式如下:SC(S#,Sn,C#,Cn,G,Cr)(其屬性分別為學(xué)號、姓名、課程號、課程名、成績、學(xué)分)則對主屬性部分依賴的是()。

A.C#→CnB.(S#,C#)→GC.(S#,C#)→S#D.(S#,C#)→C#

8.在下列關(guān)系運(yùn)算中,不改變關(guān)系表中的屬性個數(shù)但能減少元組個數(shù)的是A.并B.交C.投影D.笛卡兒乘積

9.若一組記錄的排序碼為(7,9,3,5,1,2,10),則利用堆排序的方法建立的初始堆為()

A.10,7,9,3,5,1,2

B.10,9,7,5,1,2,3

C.10,9,7,5,3,2,1

D.10,9,7,3,2,1,5

10.下列敘述中錯誤的是()。A.在程序中凡是以“#”開始的語句行都是預(yù)處理命令行

B.預(yù)處理命令行的最后不能以分號表示結(jié)束

C.#defineMAX是合法的宏定義命令行

D.C程序?qū)︻A(yù)處理命令行的處理是在程序執(zhí)行的過程中進(jìn)行的

11.如果要求一個線性表既能較快地查找,又能適應(yīng)動態(tài)變化的要求,可以采用下列哪一種查找方法()

A.分塊B.順序C.折半D.哈希

12.

13.設(shè)有一個棧,元素依次進(jìn)棧的順序?yàn)锳、B、C、D、E。下列()是不可能的出棧序列。

A.A,B,C,D,EB.B,C,D,E,AC.E,A,B,C,DD.E,D,C,B,A

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

15.

16.設(shè)變量已正確定義,則以下能正確計算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;

17.有以下程序:#include<stdio.h>main(){intk=5;while(--k)printf(“%d”,k-=3);printf(“\n”);}程序運(yùn)行后的輸出結(jié)果是()。

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

18.設(shè)”inta=15,b=26;”,則”printf(“%d,%d”,a,b);”的輸出結(jié)果是()。

A.15B.26,15C.15,26D.26

19.下列程序是用來判斷數(shù)組中特定元素的位置所在的。#include<conio.h>#include<stdio.h>intfun(int*s,intt,int*k){inti;*k=0;for(i=0;i<t;i++)if(s[*k]<s[i])*k=i;returns[*k];}main(){inta[10]={876,675,896,101,301,401,980,431,451,777},k;fun

A.7,431B.6C.980D.6,980

20.下列程序的輸出的結(jié)果是()。main{doubled=3.2;intx,Y;x=1.2;v=(x+3.8)/5.0;printf("%d\n",d*y);}A.3B.3.2C.0D.3.07

二、2.填空題(20題)21.以下程序的輸出結(jié)果是【】。

main()

{charc=′z′;

printf("%c",c-25);}

22.有如圖所示的雙鏈表結(jié)構(gòu),請根據(jù)圖示完成結(jié)構(gòu)體的定義:

structaa

{intdata;

【】}node;

23.在結(jié)構(gòu)化分析使用的數(shù)據(jù)流圖(DFD)中,利用【】對其中的圖形元素進(jìn)行確切解釋。

24.以下程序用來輸出結(jié)構(gòu)體變量ex所占存儲單元的字節(jié)數(shù),請?zhí)羁铡?/p>

structst

{charname[20];doublescore;};

main()

{structstex;

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

25.耦合和內(nèi)聚是評價模塊獨(dú)立性的兩個主要標(biāo)準(zhǔn),其中______反映了模塊內(nèi)各成分之間的聯(lián)系。

26.求任意一個數(shù)(用16位二進(jìn)制碼表示)的補(bǔ)碼。

main()

{

unsignedinta;

【】;

scanf("%o",&a);

printf("%o\n",getbits(a));

}

unsignedintgetbits(value)

unsignedintvalue;

{

unsignedintz;

z=【】;

if(z==0100000)

【】;

else

z=value;

return(z);

}

27.下列程序執(zhí)行輸出的結(jié)果是______。

#include<stdio.h>

f(intA)

{intb=0;

staticc=7;

a=c++;b++;

return(A);

}

main()

{inta=2,i,k;

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

k=f(a++);

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

}

28.軟件生命周期分為軟件定義期、軟件開發(fā)期和軟件維護(hù)期,詳細(xì)設(shè)計屬于______中的一個階段。

29.有以下程序:

main()

{intt=1,i=5;

for(;i>=0;i--)t*=i;

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

}

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

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

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

main()

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

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

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

}

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

#include<stdio.h>

main()

{inta=2,b=-1,C=2;

if(a<B)

if(b<O)c=0;

elsec++;

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

}

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

#include<stdio.h>

main()

{inta=10,b=3;

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

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

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

}

33.數(shù)據(jù)結(jié)構(gòu)分為線性結(jié)構(gòu)和非線性結(jié)構(gòu),線性表、棧和隊(duì)列都屬于【】。

34.以下程序的輸出結(jié)果是()。#definePR(ar)printf("ar=%d”,ar)main(){intj,a[]={1,8,3,7,6,13,17,15},*p=a+5;for(j=3;j;j--)switch(j){case1:case2:PR(*p++);break;case3:PR(*(--p));}}

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

#include<stdio.h>

main()

{intx=3,y=2,z=1;

if(x<y)

if(y<0)z=0;

elsez+=1;

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

}

36.有以下程序

main()

{intt=1,i=5;

for(;i>=0;i--)t*=i;

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

}

執(zhí)行后輸出結(jié)果是______。

37.以下程序的運(yùn)行結(jié)果是【】。

#include<string.h>

typeaefstructstudent{

charname[10];

longsno;

floatscore;

{STU;

main()

{STUa={"zhangsan",2001,95},b={"Shangxian",2002,90},c={"Anhua",2003,95},d,*p=&d;

d=a;

if(strcmp(a.name,b.name)>0)d=b;

if(strcmp(C.name,)>0)d=C;

printf("%1d%s\n",d.sno,p->name);

}

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

39.下列的for語句的循環(huán)次數(shù)為______。

for(x=1,y=0;(y!=19)&&(x<7);x++);

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

#include<stdio.h>

longfunc(intx)

{longp;

if(x==0||x==1)

return(1);

p=x*func(x-1);

return(p);

}

main()

{printf("%d\n",func(4));

}

三、1.選擇題(20題)41.有以下程序:main(){intn=0,m=l,x=2;if(!n)x-=l:if(!m)x-=2;if(!x)x-=3;printf("%d\n",x);}執(zhí)行后的輸出結(jié)果是______。

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

42.C語言函數(shù)返回值的類型是由______決定的。

A.return語句中的表達(dá)式類型B.調(diào)用函數(shù)的主調(diào)函數(shù)類型C.調(diào)用函數(shù)時臨時D.定義函數(shù)時所指定的函數(shù)類型

43.下列程序的運(yùn)行結(jié)果為

#include<stdio.h>

voidabc(char*str)

{inta,b;

for(a=b=0;str[a]!='\0';a++)

if(str[a]!='c')

str[b++]=str[a];

str[b]='\0';}

voidmain()

{charstr[]="abcdef";

abc(str);

printf("str[]=%s",str);}

A.str[]=abdefB.str[]=abcdefC.str[]=aD.str[]=ab

44.假定所有變量均已正確說明,下列程序段運(yùn)行后x的值是a=d=c=0;x=35;if(!a)x=-1,elseif(b);if(c)x=3;elsex=4;

A.34B.4C.35D.3

45.與十進(jìn)制數(shù)96等值的二進(jìn)制是()

A.1100000B.10010110C.1100001D.1100011

46.以下選項(xiàng)中非法的表達(dá)式是

A.0<=x<100B.i=i==0C.(char)(65+3)D.x+1=x+1

47.若定義inta=10,則表達(dá)式a+=a-=a*=a的值是()。

A.0B.-180C.-100D.-90

48.在數(shù)據(jù)處理中,其處理的最小單位是()。

A.數(shù)據(jù)B.數(shù)據(jù)項(xiàng)C.數(shù)據(jù)結(jié)構(gòu)D.數(shù)據(jù)元素

49.已知、棵二叉樹的后序遍歷序列是dabec,中序遍歷序列是debac,則它的前序遍歷序列是()。

A.acbedB.decabC.deabcD.cedba

50.函數(shù)fseek的正確調(diào)用形式是()。

A.fseek(位移量,起始點(diǎn),文件類型指針);

B.fseek(文件類型指針,位移量,起始點(diǎn));

C.fseek(文件類型指針,起始點(diǎn),位移量);

D.fseek(起始點(diǎn),位移量,文件類型指針);

51.有以下程序:#include<stdio.h>inta=1;intfun(intC){staticinta=2;c=c+1;return(a++)+c;}main(){inti,k=0;for(i=0;i<2;i++){inta=3;k+=f(A);}k+=a;printf("%d\n",k);}程序的運(yùn)行結(jié)果是()。

A.14B.15C.16D.17

52.在C語言的循環(huán)語句for、while、do-while中,用于結(jié)束本次循環(huán),繼續(xù)執(zhí)行下一次循環(huán)的語句是______。

A.switchB.breakC.continueD.goto

53.若有以下類型說明語句:charw;intx;floaty,z;則表達(dá)式w*x+z-y的結(jié)果為______類型。

A.floatB.charC.intD.double

54.若fp已正確定義并指向某個文件,當(dāng)未遇到該文件結(jié)束標(biāo)志時函數(shù)feof(fp)的值為()

A.0B.1C.-1D.一個非0值

55.若執(zhí)行下面程序時從鍵盤上輸入5,main(){intx;scanf("%d",&x);if(x++>5)printf("%d\n",x);elseprintf("%d\n",x-);}則輸出是_______。

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

56.已定義c為字符型變量,則下列語句中正確的是()。

A.c='97'B.c="97"C.c=97D.c="a"

57.計算機(jī)軟件一般包括應(yīng)用軟件和____。

A.字處理軟件B.系統(tǒng)軟件C.服務(wù)性軟件D.操作系統(tǒng)

58.在計算機(jī)中,算法是指()。

A.查詢方法B.加工方法C.解題方案的準(zhǔn)確而完整的描述D.排序方法

59.需求分析階段的任務(wù)是()

A.軟件開發(fā)方法B.軟件開發(fā)工具C.軟件開發(fā)費(fèi)用D.軟件系統(tǒng)功能

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

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

四、選擇題(20題)61.以下選項(xiàng)中值為1的表達(dá)式是()。

A.

B.

C.

D.

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

A.算法就是程序B.設(shè)計算法時只需要考慮數(shù)據(jù)結(jié)構(gòu)的設(shè)計C.設(shè)計算法時只需要考慮結(jié)果的可靠性D.以上三種說法都不對

63.有以下程序:

main

{chara='a',b;

printf("%c,",++a);

printf("%c\n",b=a++):

)

程序運(yùn)行后的輸出結(jié)果是()。A.A.b,bB.b,cC.a,bD.a,c

64.數(shù)據(jù)庫管理系統(tǒng)是()。

A.操作系統(tǒng)的一部分B.在操作系統(tǒng)支持下的系統(tǒng)軟件C.一種編譯系統(tǒng)D.一種操作系統(tǒng)

65.

66.有以下函數(shù)intaaa(char*s){char*t=s;while(*t+t);t--:return(t-s);}以下關(guān)于aaa函數(shù)的功能敘述正確的是()。A.求字符串S的長度B.比較兩個串的大小C.將串S復(fù)制到串tD.求字符串S所占字節(jié)數(shù)

67.下列字符串不屬于標(biāo)識符的是()

A.sumB.averageC.day_nightD.M,D.JOHN

68.

69.有如下程序

voidf(int*x,int*y)

{intt;

t=*x;*x=*y;*y=t;

}

main()

{inta[6]={1,2,4,6,8,10},i,*p,*q;

p=a;q=&a[5];

while(p<q)

{f(p,q);p++;q--;}

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

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

}

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

A.1,2,4,6,8,10B.10,8,4,6,2,1

C.10,8,6,4,2,1D.10,2,4,6,8,1

70.有3個關(guān)系R、S和T如下.

則由關(guān)系R和S得到關(guān)系T的操作是()。A.自然連接B.差C.交D.并

71.

已知有如下結(jié)構(gòu)體:

structsk

{inta;

floatb;

}data,*p;

若有P=&data,則對data的成員a引用正確的是()。

A.(*p).data.a(chǎn)B.(*p).a(chǎn);C.p->data.a(chǎn)D.p.data.a(chǎn)

72.若fp是指向某文件的指針,且已讀到文件末尾,則庫函數(shù)feof(fp)的返回值是

A.EOFB.-1C.1D.NULL

73.下列關(guān)于隊(duì)列的敘述中正確的是()。A.在隊(duì)列中只能插人數(shù)據(jù)B.在隊(duì)列中只能刪除數(shù)據(jù)C.隊(duì)列是先進(jìn)先出的線性表D.隊(duì)列是先進(jìn)后出的線性表

74.有以下程序(函數(shù)fun只對下標(biāo)為偶數(shù)的元素進(jìn)行操作):

#include<stdio.h>

voidfun(int*n)

{inti,j,k,t;

for(i=0;i<n-1;i+=2)

{k=i;

for(j=i;j<n;j+=2)if(a[j]>a[k])k=j;

t[a[i];a[i]=a[k];a[k]=t;

}

}

main

{intaa[lO]=[1,2,3,4,5,6,7],a;

fun(aa,7);

for(i=0;i<7;i++)printf("%d,",aa[i]);

printf("n");

}

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

A.7,2,5,4,3,6,1,

B.1,6,3,4,5,2,7,

C.7,6,5,4,3,2,1,

D.1,7,3,5,6,2,1,

75.

76.

77.

78.

有下列程序:

intfun(intx[],intn)

{staticintsum=0,i:

for(i0;i<n;i++)sum+=x[i];

returnsum;

}

main

{inta[]={1,2,3,4,5),b[]一{6,7,8,9),s=0:

s=fun(a,5)+fun(b,4);printf("%d\n",s):

}

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

A.45B.50C.60D.55

79.請選出以下程序的輸出結(jié)果()。

A.1234

B.4321

C.0000

D.4444

80.有以下程序:

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

A.0B.10C.20D.出錯

五、程序改錯題(1題)81.下列給定程序中,函數(shù)proc()的功能是:利用插入排序法對字符串中的字符按從小到大的順序進(jìn)行排序。插入法的基本方法是:先對字符串中的頭2個元素進(jìn)行排序,然后把第3個字符插入到前2個字符中,插入后前3個字符依然有序;再把第4個字符插人到前3個字符中,待排序的字符串已在主函數(shù)中賦予。請修改程序中的錯誤,使它能得出正確的結(jié)果。注意:不要改動main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。試題程序:

六、程序設(shè)計題(1題)82.請編寫一個函數(shù)voidproc(char*tt,intpp[]),統(tǒng)計在tt字符串中“a”到“z”26個字母各自出現(xiàn)的次數(shù),并依次放在pp所指數(shù)組中。例如,當(dāng)輸入字符串a(chǎn)bcdefghxyzabcde“e后,程序的輸出結(jié)果應(yīng)該是:222233110000000000000000111。注意:部分源程序給出如下。請勿改動main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.C

2.AB)選項(xiàng)中打開一個已存在的文件并進(jìn)行了寫操作后,原有文件中的全部數(shù)據(jù)不一定被覆蓋,也可以對源文件進(jìn)行追加操作等。c)選項(xiàng)中在一個程序中當(dāng)對文件進(jìn)行了寫操作后,不用先關(guān)閉該文件然后再打開,才能讀到第1個數(shù)據(jù),可以用fseek()函數(shù)進(jìn)行重新定位即可。D)選項(xiàng)中,C語言中的文件可以進(jìn)行隨機(jī)讀寫。故本題答案為A)。

3.C

4.AA選項(xiàng)中“115L”表示長整型數(shù)據(jù)。B選項(xiàng)是八進(jìn)制常量的表示方法,但是在八進(jìn)制中不能含有數(shù)字8,所以B選項(xiàng)錯誤。C選項(xiàng)中e后面應(yīng)該是整數(shù),而不能是小數(shù)1.5,所以C選項(xiàng)錯誤。D選項(xiàng)中八進(jìn)制常量應(yīng)該是以數(shù)字“0”開始,而不是以字母“o”開始。故本題答案為A選項(xiàng)。

5.D

6.D

7.A關(guān)系SC中的主鍵是(S#,C#),但C#(課程號)單獨(dú)就可以決定Cn(課程名),存在著對主鍵的部分依賴。本題答案為A選項(xiàng)。

8.B并運(yùn)算的含義是:假設(shè)有一個“在校學(xué)生信息表”,它包括這樣一些字段:學(xué)號、姓名、性別、出生日期、籍貫、聯(lián)系電話,這個表的關(guān)系模式可以表示為:校學(xué)生信息表(學(xué)號,姓名,性別,出生日期,籍貫,聯(lián)系電話)。還有一個“新生信息表(學(xué)號,姓名,性別,出生日期,籍貫,聯(lián)系電話)”。若要將9月份進(jìn)校的新生信息加入到“在校學(xué)生信息表”中,這樣進(jìn)行的就是并運(yùn)算。并運(yùn)算不會改變表的字段(又叫屬性)個數(shù),但是會增加記錄(又叫元組)個數(shù)。交運(yùn)算的含義是:兩個表(要求結(jié)構(gòu)要一模一樣)進(jìn)行交運(yùn)算取兩個表中相同的記錄構(gòu)成一個新表,交運(yùn)算不會改變表的字段個數(shù),但是一般會減少記錄個數(shù)。投影運(yùn)算的含義是:從在“校學(xué)生信息表(學(xué)號,姓名,性別,出生日期,籍貫,聯(lián)系電話)”中選取學(xué)生的“姓名”和“聯(lián)系電話”這兩個字段,可以構(gòu)成一個“學(xué)生聯(lián)系表(姓名,聯(lián)系電話)”,這就是一個投影運(yùn)算,所以投影運(yùn)算一般會減少字段(又叫屬性)的個數(shù)。笛卡兒乘積又叫稱乘運(yùn)算,設(shè)有n元關(guān)系R和m元關(guān)系s,他們分別有P、q個元組,則關(guān)系R和關(guān)系s的笛卡兒積表示為R×S,該關(guān)系是一個n+m元關(guān)系,元組個數(shù)是PXq。因此本題的正確答案是B。\r\n

9.B

10.C解析:預(yù)處理命令行是以“#”開始的語句,預(yù)處理命令行的最后不能以分號表示結(jié)束,預(yù)處理命令行。其中宏定義的字符替換的定義格式為:#define標(biāo)識符字符串,預(yù)處理命令行是在系統(tǒng)對源程序進(jìn)行編譯之前進(jìn)行處理的,不是在程序執(zhí)行的過程中。

11.D

12.B

13.C

14.C

15.A

16.D解析:A選項(xiàng),將f賦值為0,結(jié)果得到0,因?yàn)?乘任何數(shù)都為0;B選項(xiàng),i<n,計算的是(n-1)!,C選項(xiàng)將陷入死循環(huán)。

17.A“--k”是先自減再使用,所以第1次判斷條件即while(4),條件為真輸出k的值,k=4-3,結(jié)果為1;第2次判斷條件即while(0),條件為假,結(jié)束循環(huán),輸出回車換行符。故本題答案為A選項(xiàng)。

18.C

19.D解析:本題中直接使用指針變量k,但在使用時要注意對k的指針運(yùn)算。此外,一開始應(yīng)知道*k的值為數(shù)組中的某一下標(biāo)值,即*k=0,本函數(shù)的功能是找出數(shù)組中的最大元素的位置及最大元素的值。

20.C根據(jù)賦值運(yùn)算的類型轉(zhuǎn)換規(guī)則,先將double型的常量l.2轉(zhuǎn)換為int型,因?yàn)閤的類型是int,則X的值為1;執(zhí)行語句y=(K+3.8)/5.0時,即先將整型變量X的值1轉(zhuǎn)換為double型1.0,然后3.8相加得4.8,進(jìn)行除法運(yùn)算4.8/5.0結(jié)果為0.即變量y的值為0,d*Y的值也為0,故選C選項(xiàng)。

21.aa解析:'z'的ASCII碼值為122,經(jīng)過c-25運(yùn)算后,得97,以字符形式輸出是a。

22.structaa*lhead*

溫馨提示

  • 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

提交評論