2022年江蘇省常州市全國計算機等級考試C語言程序設計知識點匯總卷(含答案)_第1頁
2022年江蘇省常州市全國計算機等級考試C語言程序設計知識點匯總卷(含答案)_第2頁
2022年江蘇省常州市全國計算機等級考試C語言程序設計知識點匯總卷(含答案)_第3頁
2022年江蘇省常州市全國計算機等級考試C語言程序設計知識點匯總卷(含答案)_第4頁
2022年江蘇省常州市全國計算機等級考試C語言程序設計知識點匯總卷(含答案)_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

2022年江蘇省常州市全國計算機等級考試C語言程序設計知識點匯總卷(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.有如下定義:structperson{charname[9];intage;}structpersonclass[10]={"John",17,"Paul",19,"Mary",18,"Adam",16};能輸出字母M的是()

A.printf("%c\n",class[3].name);

B.printf("%c\n",class[3].name[1]);

C.printf("%c\n",class[2].name[1]);

D.printf("%c\n",class[2].name[0]);

2.有以下程序:程序運行后的輸出結果是()。A.13442B.13431C.01234D.02431

3.以下關于指針的說法錯誤的是()。

A.可以向指針中寫入任意數據

B.可以向指針所指內存單元中寫入數據

C.指針可以指向與其基類型相同的普通變量

D.可以通過加法運算,使指針指向下一個內存單元

4.設變量P是指針變量,語句P=NULL;是給指針變量賦NULL值,它等價于()。A.A.p="";

B.p="0";

C.p=0;

D.p="";

5.已知大寫字母A的ASCII值是65,小寫字母a的ASCII值是97。下列不能將變量c中的大寫字母轉換為對應小寫字母的語句是()。

A.c=(‘A’,+c)%26-‘a’B.c=c+32C.c=c-‘A’+‘a’D.c=(c-‘A’)%26+‘a’

6.下列程序的輸出結果是()。#includedstdi0.h>#includedstring.h>voidfun(intb[]){staticinti=0;do{b[i]+=b[i+1];}while(++i<2);}main{intk,a[5]={1,3,5,4,9};fun(a);for(k=0;k<5;k++)printf("%d",a[k]);}A.13579B.48579C.48549D.48999

7.有以下定義:structperson{charname[10];intage;};structpersonclass[10]={“Johu”,17,“Paul”,19,“Mary”,18,“Adam”,16,};能輸出字母M的語句是()。

A.printf(“%c\n”,class[2].name[0]);

B.printf(“%c\n”,class[3].name[0]);

C.printf(“%c\n”,class[3].name[1]);

D.printf(“%c\n”,class[2].name[1]);

8.若i、j已定義成mt型,則下列程序段中內循環(huán)體的總執(zhí)行次數是()。for(i=6;i>0;i--)for(j=0;j<4;j++){…}A.20B.24C.25D.30

9.若有定義和語句:int**pp),*P,a=20,b=10;pp=&p;p=&a;p=&b;printf("%d,%d\n",*P,*PP);則輸出結果是()。A.20,10B.20,20C.10,20D.10,10

10.檢查軟件產品是否符合需求定義的過程稱為()。

A.確認測試B.集成測試C.驗證測試D.驗收測試

11.若變量x、y已正確定義并賦值,以下符合C語言語法的表達式是()。

A.x+1=yB.++x,y=x--C.x=x+10=x+yD.double(x)/10

12.有下列程序: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);printS(”%d,”,k);k=fun(j,m);printf(”%d\n”,k);)執(zhí)行后的輸出結果是()。A.5,5B.5,11C.11,11D.11,5

13.以下能正確定義一維數組的選項是______。

A.inta[5]={0,1,2,3,4,5};

B.chara[]={0,1,2,3,4,5};

C.chara={'A','B','C'};

D.inta[5]="0123";

14.

15.有定義語句:“intx,y;”,若要通過“scanf("%d,%d,&x,&y);”語句使變量x得到數值11,變量y得到數值12,下面四組輸入形式中,錯誤的是

A.1112<回車>B.11,12<回車>C.11,12<回車>D.11,<回車>12<回車>

16.可用作C語言用戶標識符的一組標識符是()。A.voiddefine+WORDB.a3_b3_123YNC.for-abcCaseD.2aDOsizeof

17.設abcdef以所給的次序進棧,若在進棧操作時,允許退棧操作,則下面得不到的序列為()。

A.fedcbaB.bcafedC.dcefbaD.cabdef

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

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

19.在Internet中,域名服務器的主要功能是實現(xiàn)()的轉換。

A.IP地址到域名(主機名字)B.域名到IP地址C.主機IP地址和路由器IP地址之間D.路由器IP地址之問

20.計算機算法指的是()。

A.計算方法B.排序方法C.解決問題的有限運算序列D.調度方法

二、2.填空題(20題)21.某二叉樹中度為2的結點有n個,則該二叉樹中有【】個葉子結點。

22.下列程序的輸出結果是【】。

main()

{

inta[]={2,4,6},*ptr=&a[0],x=8,y,z;

for(y=0;y<3;y++)

z=(*(ptr+y)<x)?*(ptr+y):x;

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

}

23.設有下列的程序段;

charstr[]="Hello";

char*ptr;

ptr=str;

執(zhí)行上面的程序段后,*(ptr+5)的值為______。

24.現(xiàn)有兩個C程序文件T18.c和myfun.c同在TC系統(tǒng)目錄(文件夾)下,其中T18.c文件如下:

#include<stdio.h>

#include"myfun.c"

main()

{fun();printf("\n");}

myfun.c文件如下:

voidfun()

{chars[80],c;intn=0;

while((c=getchar())!=′\n′)s[n++]=c;

n--;

while(n>=0)printf("%c",s[n--]);

}

當編譯連接通過后,運行程序T18時,輸入Thank!,則輸出結果是【】。

25.已有定義如下:

structnode

{

intdata;

structnode*next;

}*p;

以下語句調用malloc函數,使指針p指向一個具有stmctnode類型的動態(tài)存儲空間。

請?zhí)羁铡?/p>

p=(structnode*)malloc();

26.若有如下程序:

main()

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

t=x<y<z;

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

則程序運行后的輸出結果是【】。

27.算法執(zhí)行過程中所需要的基本運算次數稱為算法的______。

28.以下程序運行結果是【】。

#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);}

29.若x和a均是int型變量,則計算完x=(a=4,6*2)后的x值為______。

30.以下程序運行后的輸出結果是______。

main()

{

inta,b,c;

a=25;

b=025;

c=0x25;

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

}

31.下列程序的輸出結果是______。

10ngfun5(intn)

{longs;

if((n==1)‖(n==2))

s=2;

else

s=n+fun5(n-1);

return(s);

}

main()

{longx;

x=fun5(4);

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

32.請在以下程序第一行的下劃線處填寫適當內容,使程序能正確運行。

【】(double,double);

main()

{doublex,y;

scanf("%lf%lf",&x,&y);

printf("%1f\n",max(x,y));

}

doublemax(doublea,doubleb)

{return(a>b?a:b);}

33.為了便于對照檢查,測試用例應由輸入數據和預期的【】兩部分組成。

34.下面程序的運行結果是:【】。

voidswap(int*a,int*b)

{int*t;

t=a;a=b;b=t;

}

main()

{intx=3,y=5,*p=&x,*q=&y;

swap(p,q);

printf(“%d%d\n”,*p,*q);

}

35.數據庫的設計通??梢苑譃檫@樣四個步驟:需求分析、概念設計、______、和物理設計。

36.軟件是程序、數據和【】的集合。

37.以下定義的結構體類型擬包含兩個成員,其中成員變量info用來存入整形數據;成員變量link是指向自身結構體的指針,請將定義補充完整。

structnode

{intinfo;

【】link;};

38.以下程序的運行結果是()。

intk=0;

voidfun(intm)

{m+=k;k+=m;printf("m=%d\nk=%d",m,k++);}

main()

{inti=4;

fun(i++);printf("i=%dk=%d\n",i,k);

}

39.在面向對象的程序設計中,類描述的是具有相似性質的一組【】。

40.函數viodfun(float*sn,intn)的功能是:根據以下公式計算S,計算結果通過形參指針sn傳回;n通過形參傳入,n的值大于等于0。請?zhí)羁铡?/p>

s=1-1/3+1/5-1/7+…1/(2n+1)

voidfun(float*sn,intn)

{floats=0.0,w,f=-1.0;

inti=0;

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

{f=【】*f;

w=f/(2i+1);

s++=w;

}

【】=s;

}

三、1.選擇題(20題)41.下列敘述中正確的是()。

A.算法的執(zhí)行效率與數據的存儲結構無關

B.算法的空間復雜度是指算法程序中指令(或語句)的條數

C.算法的有窮性是指算法必須能在執(zhí)行有限個步驟之后終止

D.以上3種描述都不對

42.下列程序的輸出結果是______。#include<stdio.h>main(){union{intk;chari[2];}*S,a;s=&a;s->i[0]=0x39;s->i[1]=0x38;printf("%x\n",s->k);}

A.3839B.3938C.380039D.390038

43.若變量已正確定義并賦值,下面符合C語言的表達式是_____。

A.a:=b+1B.a=b=c+2C.int18.5%3D.a=a+7=c+b

44.已知函數的原形如下,其中結構體a為已經定義過的結構,且有下列變量定義structa*f(intt1,int*t2,strcutat3,structa*t4)structap,*p1;inti;則正確的函數調用語句為

A.&p=f(10,&i,p,p1);

B.p1=f(i++,(int*)p1,p,&p);

C.p=f(i+1,&(i+2),*p,p);

D.f(i+1,&i,p,p);

45.設fp為指向某二進制文件的指針,且已讀到此文件末尾,則函數feof(fp)的返回值為______。A.EOFB.非0值C.0D.NULL

46.下列選項中,不屬于模塊間耦合的是()。A.數據耦合B.標記耦合C.異構耦合D.公共耦合

47.有以下函數char*fun(char*p){returnp;}該函數的返回值是______。

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

48.數據庫DB、數據庫系統(tǒng)DBS、數據庫管理系統(tǒng)DBMS之間的關系是()。

A.DB包括DBS和DBMSB.DBMS包括DB和DBSC.DBS包括DB和DBMSD.沒有任何關系

49.c語言規(guī)定,在一個源程序中,main函數的位置()。

A.必須在最開始B.必須在系統(tǒng)調用的庫函數的后面C.可以任意D.必須在最后

50.以下程序企圖把從終端輸入的字符輸出到名為abc.txt的文件中,直到從終端讀入字符#號時結束輸入和輸出操作,但程序有錯。#include<stdio.h>main(){FILE*fout;charch;four=fopen('abc.txt','w');ch=fgetc(stdin);while(ch!='#'){fputc(ch,fout);ch=fgetc(stdin);}felose(fout);}出錯的原因是

A.函數fopen調用形式錯誤B.輸入文件沒有關閉C.函數fsetc調用形式錯誤D.文件指針stdin沒有定義

51.下面程序的輸出結果是()。#include"stdio.h"fun(xintx{inty=0;staticintz=5;z=x++,y++;return(Z);}main(){inta=4,i,j;for(i=0;i<2;i++)j=fun(a++);printf("%d",j);}

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

52.若有下面的程序段:chars[]="china";char*p;p=s;則下列敘述正確的是

A.s和p完全相同

B.數組s中的內容和指針變量p中的內容相等

C.s數組長度和p所指向的字符串長度相等

D.*p與s[0]相等

53.有以下程序main(){inti,s=1;for(i=1;<50;i++)if(!(i%5)&&!(i%3))s=+i;printf("%d\n",s);}程序的輸出結果是

A.409B.277C.1D.91

54.若有以下說明和定義uniondt{inta;charb;doublec;}data;以下敘述中錯誤的是

A.data的每個成員起始地址都相同

B.變量data所占內存字節(jié)數與成員c所占字節(jié)數相等

C.程序段:data.a=5;printf(“%I'm”,data.C);輸出結果為5.000000

D.data可以作為函數的實參

55.若變量c為char類型,能正確判斷出c為小寫字母的表達式是______。

A.'a'<=c<='z'

B.(c>='a')||(c<='z')

C.('a'<=c)and('z'>=c)

D.(c>='a')&&(c<='z')

56.在說明語句:int*f();中,標識符f代表的是

A.一個用于指向整型數據的指針變量

B.一個用于指向一維數組的行指針

C.一個用于指向函數的指針變量

D.一個返回值為指針型的函數名

57.下列選項中不屬于結構化程序設計方法的是()。

A.自頂向下B.逐步求精C.模塊化D.可復用

58.若指針p已正確定義,要使p指向兩個連續(xù)的整型動態(tài)存儲單元,不正確的語句是

A.p=2*(int*)malloc(sizeof(int));

B.p=(int*)mall0c(2*sizeof(int));

C.p=(int*)malloc(2*2);

D.p=(int*)calloc(2,sizeof(int));

59.設x=015,則x=x017的值是()。

A.1111B.11111101C.10D.11000000

60.設有:

inta=1,b=2,c=3,d=4,m=2,n=2;

執(zhí)行(m=a>b)&&(n=c>d)后,n的值是

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

四、選擇題(20題)61.第

15

非空的循環(huán)單鏈表head的尾結點(由p所指向),滿足

A.p->next==NULLB.p==NULLC.p->next=headD.p=head

62.

63.耦合性和內聚性是對模塊獨立性度量的兩個標準。下列敘述中正確的是()。

A.提高耦合性降低內聚性有利于提高模塊的獨立性

B.降低耦合性提高內聚性有利于提高模塊的獨立性

C.耦合性是指一個模塊內部各個元素間彼此結合的緊密程度

D.內聚性是指模塊間互相連接的緊密程度

64.下列函數的功能是()。

A.將a所指字符串賦給b所指空間

B.使指針b指向a所指字符串

C.將a所指字符串和b所指字符串進行比較

D.檢查a和b所指字符串中是否有‘、O’

65.以三級模式為框架形成的3種數據庫中,真實存在于計算機外存的數據庫是()。

A.概念數據庫B.用戶數據庫C.物理數據庫D.邏輯數據庫

66.設有條件表達式:(EXP)?i++;j--,則以下表達式中(EXP)完全等價的是()。

A.(EXP==0)B.(EXP!=0)C.(EXP==1)D.(EXP!=1)

67.

68.非空的循環(huán)單鏈表head的尾結點(由p所指向)應該滿足

A.p->next==NULLB.p==NULLC.p->next=headD.p=head

69.

70.有以下程序執(zhí)行程序時,給變量X輸入l0,程序的輸出結果是()。

A.55B.54C.65D.45

71.在軟件生產過程中,需求信息的給出是______。A.A.程序員B.項目管理者C.軟件分析設計人員D.軟件用戶

72.C源程序中不能表示的數制是

A.十進制B.八進制

C.二進制D.十六進制

73.

74.

75.設p1和p2是指向同一個int型一維數組的指針變量,k為int型變量,則下列不能正確執(zhí)行的語句是_______。

A.k=*p1+*p2;B.p2=k;C.p1=p2;D.k=*p1*(*p2);

76.以下程序的輸出結果是()。

main()

{charst[20]="hell0\O\t\\\”;

printf("%d%d\n",strlen(st),sizeof(st));

}

A.99

B.520

C.1320

D.2020

77.有以下程序當執(zhí)行程序時,按下列方式輸入數據(從第l列開始,<CR>代表回車,注意;回車也是--+qz符)12<CR>34<CR>則輸出結果是()。

A.123B.12C.1234D.1234

78.

79.有以下程序:

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

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

80.

五、程序改錯題(1題)81.下列給定程序中函數fun的功能是。用遞歸算法計算斐波拉契數列中第n項的值。從第l項起,斐波拉契數列為:1、1、2、3、5、8、l3、21、……

例如,若給n輸入7,則該項的斐波拉契數值為l3。請改正程序中的錯誤,使它能得出正確的結果。注意:部分源程序在文件MODll.C中,不得增行或刪行,也不得更改程序的結構。

六、程序設計題(1題)82.編寫一個函數,該函數可以統(tǒng)計一個長度為2的字符串在另一個字符串中出現(xiàn)的次數。例如,假定輸入的字符串為abcdefabcdeabceabcdef,子字符串為cd,則應當輸出3。注意:部分源程序給出如下。請勿改動主函數main和其他函數中的任何內容,僅在函數proc的花括號中填入所編寫的若干語句。試題程序:

參考答案

1.D

2.Bmain函數中定義包含5個元素的數組m,每個元素都是NODE類型。指針p指向數組第1個元素,指針q指向數組最后一個元素。while循環(huán)使用p、q從首尾向中間遍歷,遍歷的同時為各個元素賦值。所以第1輪循環(huán),i的值為0,先執(zhí)行的值為++i,后執(zhí)行i++的值也為1,m[0].k和m[4].k的值都為1;接著第2輪循環(huán),i的值為2,先執(zhí)行的值為3,后執(zhí)行i++的值也為3,m[l].k和m[3].k的值都為3;第3輪循環(huán),p和q指向的都是m[2]元素,指針相同,循環(huán)結束,此時i的值為4,即m[2].k賦值為4。綜上,程序輸出:13431。本題答案為B選項。

3.A指針變量必須區(qū)分基類型,可以向指針所指內存單元寫入與基類型相同的數據,而不能寫入任意數據,選項A錯誤,選項B正確;指針可以指向與其基類型相同的普通變量,選項C正確;指針是一個內存地址,它是一個整數,可以通過加法運算,使指針指向下一個內存單元,選項D正確。故本題答案為A選項。

4.C在C語言中null等價于數字0。

5.A根據題意可知,小寫字母比與之對應的大寫字母的ASCII值大32。A選項中字符W加變量c再對字母個數26取余,不能轉換為對應的小寫字母。故本題答案為A選項。

6.C本題考查do-while循環(huán),在fun函數中,首先定義了靜態(tài)變量i=0,do-while循環(huán)要實現(xiàn)的功能是以b[0]=b[0]+b[1],b[1]=b[1]+b[2],其他元素不變的規(guī)則重新給b數組賦值。在主函數中,通過調用fun函數,按上面的規(guī)則對數組a重新賦值,最后輸出數組a。

7.AC語言規(guī)定數組的下標從0開始,結構體數組class初始化了前4個元素。第3個元素的name=“Marry”,則class[2].name[0]=‘M’。故本題答案為A選項。

8.B本題考查for循環(huán)的使用。對于第1個for循環(huán),任何一個i,內層j的循環(huán)都要使j~0到3,j=4時不符合,所以退出j循環(huán);然后i減1,J仍然要從0~3,j=4時退出J循環(huán)直到i變成0,退出i循環(huán)。第一條for語句執(zhí)行6次,第二條for語句執(zhí)行4次,所以內循環(huán)體執(zhí)行6*4=24次。

9.D本題考查指針變量的賦值。**PP是定義一個指針變量,語句pp=&p是將pp指向指針P,*P和**PP都是指針P所指的內存空間的內容,即b的值。

10.A本題主要考查軟件測試的基本知識。軟件測試的步驟可分為單元測試(模塊測試)、集成測試、確認測試和系統(tǒng)測試。

(1)單元測試是針對每個模塊進行的測試,它可從程序的內部結構出發(fā)設計測試用例,多個模塊可以平行、對立地測試。單元測試主要用于發(fā)現(xiàn)詳細設計和編程時犯下的錯誤。單元測試多采用白盒測試,輔之以黑盒測試。

(2)集成測試是在單元測試的基礎上,根據模塊結構圖將各個模塊連接起來,必須精心計劃,應提交集成測試計劃、集成測試規(guī)格說明和集成測試分析報告。主要目標是發(fā)現(xiàn)與接口有關的問題。集成測試可以發(fā)現(xiàn)概要設計時犯的錯誤。

(3)確認測試用于驗證軟件的功能和性能及其他特性是否與用戶的要求一致。確認測試主要用于發(fā)現(xiàn)需求分析時犯下的錯誤,一般使用黑盒法測試,以表明軟件符合需求說明書的要求,應該仔細設計測試用例和測試過程。確認測試必須有用戶參加,或以用戶為主,用戶應參與設計測試用例,通常情況下,主要使用生產中的實際數據進行測試,測試數據通過用戶接口輸入。

(4)系統(tǒng)測試是將已經通過確認測試的軟件,作為整個計算機系統(tǒng)的元素與計算機硬件、外設和網絡等其他因素結合在一起,進行一系列的組裝測試和確認測試。系統(tǒng)測試的目的是通過與系統(tǒng)的需求定義做比較,發(fā)現(xiàn)軟件與系統(tǒng)的定義不符合的地方。系統(tǒng)測試可以發(fā)現(xiàn)問題定義時犯下的錯誤。

11.B不能將變量賦給表達式,故A、C選項錯誤。D選項中強制類型轉換表達式應寫成“(double)x/10”。故本題答案為B選項。

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

13.B解析:選項A)定義的是長度為5的數組元素,但初值有6個元素,所以錯誤;選項C)不符合數組定義形式,數組名后應加上“[];選項D)的類型說明符錯誤,應改為char;選項B)中的0,1,2,3,4,5分別表示對應字符的ASCII碼,所以正確。

14.C

15.A解析:本題考核的知識點是scanf()函數的運用。seanf()函數有兩個參數,第一個參數為輸入格式字符串,第二個參數為輸入變量地址列表,在scallf()語句中非格式字符可以作為輸入時數據的間隔,輸入時必須原樣輸入,在本題中輸入格式串為%d,%d其中“,”為非格式字符,所以輸入時必須原樣輸入。所以4個選項中選項A符合題意。

16.B

17.D

18.D

19.B在Internet中,把域名翻譯為IP地址的軟件稱為域名系統(tǒng)DNS,運行域名系統(tǒng)的主機稱為域名服務器。域名服務器的主要功能是實現(xiàn)入網主機名字和IP地址的轉換。

20.C

21.n+1n+1解析:在任意一棵二叉樹中,度為0的結點(即葉子結點)總是比度為0的結點多一個。

22.66解析:條件運算符的優(yōu)先級高于賦值運算符,因此本題先計算關系表達式(*ptr+y)<x)?*(ptr+y):x的值,再賦給變量z。當y=0時,*(ptr+y)=2,而x=8,(*(ptr+y)<x)條件為真,則整個條件表達式的值為*(ptr+y)=2,所以z=2;當y-1時,*(ptr+y)=4,(*(ptr+y)<x)條件為真,則整個條件表達式的值為*(ptr+y)=4,所以z=4;當y=2時,*(ptr+y)=6,(*(ptr+y)<x)條件為真,則整個條件表達式的值為*(ptr+y)=6,所以z=6;循環(huán)結束。因此輸出z的結果為6。

23.'\0''\\0'解析:本題涉及字符數組和指針的兩個知識點:①在C語言中,字符型數組在存放字符串時會自動在末尾加上字符串結束標識符'\\0'所以題中數組str有6個元素。②ptr指向數組str的首地址,ptr+5是指向str[5],*(ptr+5)是引用str[5]的值,即'\\0'。

24.!knahT!knahT解析:此程序是一道次序顛倒題,即輸入'Thank!',則輸出'!knahT'。

25.sizeof(structnode)或4sizeof(structnode)或4解析:本題考核的知識點是動態(tài)存儲分配函數malloc()的用法。C標準規(guī)定malloc()函數返回值的類型為void*,函數的調用形式為:malloc(size)。要求aize的類型為unsignedint,所以該空格處應該填sizeof(structnode)或4。

26.1

27.時間復雜度時間復雜度解析:算法在執(zhí)行過程中所執(zhí)行的基本運算的次數,也就是執(zhí)行算法所需要的計算工作量,稱為算法的時間復雜度。

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

29.1212解析:x=(表達式1,表達式2,…)的形式,結果為最后一個表達式的值:x=(a=4,6*2)=2*6=12。

30.252137252137解析:本題中先定義了整型變量a、b和c,然后分別給賦值a為25,b為八進制的025,c為十六進制0x25。然后調用pruntf()函數將a、b和c分別用十進制輸出,且中間用空格隔開,八進制025轉換為十進制的值為21,十六進制的0x25轉換為十進制的值為37,故最后的輸出結果為252137。

31.99解析:考查ifelse語句,n==4不滿足條件,所以fun5(4)=4+fun5(3),n==3也不滿足條件,fun5(3)=3+fun5(2),n==2滿足條件fun5(2)=2,故x=4+3+2=9。

32.doublemaxdoublemax解析:本題考查函數的聲明。C語言中函數聲明的一般形式為:

(1)函數類型函數名(參數類型1,參數類型2,…)

(2)函數類型函數名(參數類型1參數名1,參數類型2參數名2,…)

題目中函數類型是double。函數名是max。故答案是doublemax。

33.輸出結果輸出結果解析:注意:測試的基本方法和步驟。

34.3535解析:在主函數中通過定義和賦初值使p和q分別指向了x和y,執(zhí)行函數調用“swap(p,q)”,把p和q中的地址值傳給了形參指針變量a和b,a和b分別指向了實參x和y。在函數swap()中交換了指針變量a和b的值,并沒有交換a和b指向的實參的值,所以函數調用返回后x和y依然是原來的值。

35.邏輯設計邏輯設計解析:數據庫設計的四個階段為:需求分析、概念設計、邏輯設計和物理設計。

36.文檔文檔解析:計算機軟件是計算機系統(tǒng)中與硬件相互依存的另一部分,是包括程序、數據以及相關文檔的完整集合。

37.structnode*structnode*解析:本題中的結構類型名為structnode,所以空白處應填:structnode*。即定義一個指向自身的結構體指針。

38.m=4k=4i=5k=5m=4k=4i=5k=5解析:在主函數main()中定義了一個變量i,并賦初值4,調用fun()函數將i的初值傳遞給形參m,進行fun()函數后的運算,輸出結果為m=4,k=4。將k值輸出后自行增加1,k=5,此時全局變量k的值變?yōu)?。主函數中調用fun()函數后,i再自行增加1,i=5,所以主函數輸出的結果為“i=5k=5”。

39.對象對象解析:將屬性、操作相似的對象歸為類,也就是說,類是具有共同屬性、共同方法的對象的集合。

40.-1或-1.0或-1*sn-1或-1.0或-1\r\n*sn

41.C解析:算法的執(zhí)行效率與數據的存儲結構密切相關。算法的空間復雜度是指算法執(zhí)行過程中所需的存儲空間。

42.A解析:在主函數定義了—個共用體變量a,及—個指向該變量的指針s。執(zhí)行s->i[0]=0x39;s->i[1]=0x38;,將分別共用體的第—字節(jié)及第二字節(jié)存入十六進制數據0x39及0x38,由于在共用體中,變量共同占用存儲空間,在輸出s->k時,實際上就是輸出開始寫入的數據,而對于PC機,在存放血型數據時,低位在前,高位在后,故本題輸出為3839。

43.B解析:選項A和C一望而知其錯;對于表達式a=a+7=c+b(答案D),是先執(zhí)行賦值表達式a+7=c+b,再把這個表達式的值賦給a,顯然,表達式a+7=c+b非法,因為賦值表達式的左側不能為常量或表達式。

44.B解析:本題目中函數f的返回值為結構類型的指針,函數的四個形參分別為:t1為整型,t2為整型的指針,t3為structa類型,t4為structa類型的指針。在進行函數調用的時候,函數的實參必須要與形參說明相對應,函數的返回值也要賦給相應類型的變量。選項A)函數的返回值不能賦給一個常量;選項C)&(i+2)沒有什么意義;選項D)返回值沒有傳遞給任何變量,向函數傳遞的應該是structa類型的指針,可是傳的卻是變量。

45.B(27)B)解析:函數feof的功能是:測試fp所指的文件的位置是否已達到文件尾,如果達到文件尾,則函數返回非0值,否則返回0,表示文件尚未結束。

46.C解析:模塊之間的耦合程度反映了模塊的獨立性,也反映了系統(tǒng)分解后的復雜程度。按照耦合程度從弱到強,可以將其分成5級,分別是:數據耦合、同構耦合、控制耦合、公用耦合和內容耦合。選項C),沒有這種耦合方式。注意:評價模塊獨立性的主要標準,以及對它們的定義和分類。

47.B解析:p本身就是一個字符型指針變量,返回p也就是返回變量p中存放的地址值。

48.CC。【解析】數據庫系統(tǒng)(DBS)由數據庫(DBS)、數據庫管理系統(tǒng)(DBMS)、數據庫管理員、硬件平臺和軟件平臺五個部分組成,可見DB和DBMS都是DBS的組成部分。

49.C解析:不論main函數在整個過程中的位置如何,一個C程序總是從main函數開始執(zhí)行的。

50.A解析:stdin是標準輸入設備的文件指針,不需定義直接可以使用,它隨系統(tǒng)的啟動而打開,隨系統(tǒng)的關閉而關閉,fgetc()函數的作用是從某個文件中讀取一個數據,其參數為要讀取文件的文件指針。fopen()函數有兩個參數,第一個參數是打開的文件名,第二個參數是文件打開模式,兩個參數都是字符串,本例中“four=fopen('abc.txt','w');”語句的fopen()函數參數是錯誤的,應該用雙引號“w”,正確的應改為fout=fopen(“abc.tx”,“w”);。

51.D解析:本題在fun()函數中定義了一個靜態(tài)局部變量z,在第一次調用此函數時,z被初始化為5,而以后的調用2都會保留上次調用后的值。主函數通過一個for循環(huán),二次調用fun()函數,第1次調用實參表達式a++的值為4,執(zhí)行z=x++,y++;語句,因運算符“=”的優(yōu)先級高于“,”,故z的值為表達式x++的值,x++是先對z賦值再對x加1,則z的值為4。第二次調用實參表達式a++的值為5,返回結果也為5,所以最后輸出結果是5。D為所選。

52.D解析:字符型指針變量p中存放的是'china'的首地址,所以選項A)和B)錯誤。e數組長度為6,而p所指向的字符串長度為5,二者不相等,排除選項C)。

53.D解析:本題是計算50之內的自然數相加之和,題中if語句括號中的條件表達式!(i%5)&&!(i%3)表明只有能同時被5和3整除的數才符合相加的條件,1~49之間滿足這個條件的只有,15、30和45,因為s的初始值為1,所以s=1+15+30+45=91。

54.C解析:本題考查的共用體的概念。共用體變量中的所有成員共享一段公共存儲區(qū),所以共用體變量所占內存字節(jié)數與其成員中占字節(jié)數最多的那個成員相等.本題定義的共用體中成員C所占的內存最多,因此選項B是正確的。由于共用體變量中的所有成員共享存儲空間,因此變量中的所有成員的首地址相同,選項A是正確的。同結構體變量一樣,共用體類型的變量可以作為實參進行傳遞,也可以傳送共用體變量的地址,選項D也是正確的。在內存中,實數與整數的存放形式完全不一樣,共用體的成員共用的是同一塊內存,而不是同一個數值,因此選項C是錯誤的。

55.D解析:字符型數據在計算機內部是以ASCII碼存儲的,英文大寫字母和小寫字母在ASCII碼表中都是連續(xù)的,大寫字母A到Z是從65到90,小寫字母a到z是97到122,所以只要變量c大于a并且小于z就能保證其為小寫字母。

56.D解析:帶回指針值的函數,其一般定義形式為:

類型標識符*函數名(參數表);

例如;int*f(x,y);

其中,f是函數名,調用它以后能得到一個指向整型數據的指針(地址),x,y是函數f的形參。在f的兩側分別為*運算符和()運算符,而()優(yōu)先級高于*,因此f先與()結合,顯然是函數形式。這個函數前面有一個*,表示此函數是指針型函數(函數值是指針)。前面的int表示返回的指針指向整型變量。

57.D解析:20世紀70年代以來,提出了許多軟件設計方法,主要有①逐步求精:對復雜的問題,應設計一些子目標作過渡,逐步細化;②自頂向下:程序設計時應先考慮總體,后考慮細節(jié);先考慮全局目標,后考慮局部目標。不要一開始就過多追求眾多的細節(jié),先從最上層總目標開始設計,逐步使問題具體化;⑧模塊化:一個復雜問題,肯定是由若干稍簡單的問題構成。模塊化是把程序要解決的總目標分解為分目標,再進一步分解為具體的小目標,把每個小目標稱為一個模塊,而可復用是面向對象程序設計的一個優(yōu)點。

58.A解析:本題考核的知識點是manoc()函數的應用。該函數的調用格式是“malloc(n)”,作用是申請n個字符的存儲單元并把該存儲區(qū)的首地址作為返回值,實際調用的時候可在前面加上“(類型說明符*)”,以轉換成需要的類型的地址。選項D多了一個參數,不符合malloc()函數的調用格式;整型變量在有的計算機系統(tǒng)里占4個字節(jié),并不一定在所有的計算機系統(tǒng)里都是兩個字節(jié),所以選項C不正確;選項A中是申請一個整型的存儲空間并把該存儲空間的首地址乘以2,這樣的做法是不正確的,其存儲空間為沒乘以2之前的存儲空間的2倍的連續(xù)存儲空間的地址,選項A不正確。所以,4個選項中B為所選。

59.C解析:本題主要考查按位異或運算,x=015(二進制00001101),017的二進制為000001111,兩者異或結果為00000010。

60.B本題考查邏輯與運算符“&&”的使用。對于邏輯與運算符&&來說,對象的結合方式為從左往右,只有&&左邊的值為真,才繼續(xù)右邊的運算。題目中&&左邊的表達式為m=a>b,“>”運算符優(yōu)先級高于“=”,故先判斷a>b,因為a=1,b=2,所以a>b為假,于是m=0。“&&”左邊的值為假,所以不進行右邊的運算。n的值沒有發(fā)生改變,n=2。

61.C循環(huán)鏈表是另一種形式的鏈式存儲結構。表中最后一個結點的指針域指向頭結點,整個鏈表形成一個環(huán)。這種循環(huán)鏈表的好處是從任意結點開始都可以找到其他結點。

循環(huán)鏈表的操作和線性鏈表基本一致,差別僅在于鏈表最后的結點,線性鏈表的判斷條件是結點的指針域是否為“空”,而循環(huán)鏈表的判斷條件是結點的指針域是否指向頭結點。非空的循環(huán)單鏈表head的尾結點p滿足p->next=head。

62.C

63.B模塊獨立性是指每個模塊只完成系統(tǒng)要求的獨立的子功能,并且與其他模塊的聯(lián)系最少且接口簡單。一般較優(yōu)秀的軟

溫馨提示

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

評論

0/150

提交評論