2022年河北省石家莊市全國計算機等級考試C語言程序設計_第1頁
2022年河北省石家莊市全國計算機等級考試C語言程序設計_第2頁
2022年河北省石家莊市全國計算機等級考試C語言程序設計_第3頁
2022年河北省石家莊市全國計算機等級考試C語言程序設計_第4頁
2022年河北省石家莊市全國計算機等級考試C語言程序設計_第5頁
已閱讀5頁,還剩108頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

2022年河北省石家莊市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.若有以下定義和語句charc1='b',c2='e'printf("%d,%c\n",c2-c1,c2-'a'+A);則輸出結(jié)果()

A.2,MB.3,EC.2,ED.輸出項與對應的格式控制不一致,輸出結(jié)果不確定

2.執(zhí)行下列程序后,輸出的結(jié)果是()。#include<stdio.h>#defineS(X)X*Xvoidmain{inta=9,k=3,m=2;a/=S(k+m)/S(k+m):printf("%d",a);}A.1B.4C.9D.0

3.閱讀以下程序:#include<stdio.h>main(){intcase;floatprintF;printf("請輸人2個數(shù):");scanf("%d%fl"&case,&printF);printf("%dofof\n",case,printF);}該程序在編譯時產(chǎn)生錯誤,其出錯原因是()。A.定義語句出錯,case是關鍵字,不能用做用戶自定義標識符

B.定義語句出錯,printF不能用做用戶自定義標識符

C.定義語句無錯,scanf不能作為輸入函數(shù)使用

D.定義語句無錯,printf不能輸出case的值

4.以下敘述中錯誤的是()。

A.在同一源文件中,函數(shù)名必須唯一

B.凡是帶有返回值的庫函數(shù),都不能通過加分號而作為獨立的語句出現(xiàn)

C.不同函數(shù)中的形式參數(shù)可以同名

D.返回基本數(shù)據(jù)類型的庫函數(shù)的調(diào)用,均可以出現(xiàn)在賦值號右邊的表達式中

5.標準庫函數(shù)fgets(s,n,file)的功能是()。

A.從文件file中讀取長度為n的字符串存入字符數(shù)組s中

B.從文件file中讀取長度不超過n-1個字符的字符串放到字符數(shù)組s中

C.從文件file中讀取n個字符串存入字符數(shù)組s中

D.從文件file中讀取長度為n-1個字符的字符串存入字符數(shù)組s中

6.設有二維數(shù)組A7×8,每個數(shù)據(jù)元素占8個字節(jié)存儲單元,順序存放,A第一個元素A0,0的存儲地址為1000,按行優(yōu)先存放時,元素A3,4的地址為()。

A.1224B.1208C.1200D.1216

7.已知函數(shù)test定義為()。A.執(zhí)行函數(shù)test后,函數(shù)沒有返回值

B.執(zhí)行函數(shù)test后,函數(shù)不再返回

C.執(zhí)行函數(shù)test后,函數(shù)返回任意類型值

D.以上三個答案都是錯誤的

8.設x為int型變量,則執(zhí)行以下語句后,x的值為()。x=10;x=x-=x-x;

A.10B.20C.40D.30

9.高度為h的滿二叉樹的結(jié)點數(shù)是________個。

A.log2h+1B.2h+1C.2h-1D.2h-1

10.以下選項中,當x為大于l的奇數(shù)時,值為0的表達式是

A.x%2==1B.x/2C.x%2!=0D.x%2==0

11.以下程序的輸出結(jié)果是______。charcchar(charch){if(ch>='A'&&ch<='z')ch=ch-'A'+'a';returnch;}main(){chars[]="ABC+abc=defDEF",*p=s;while(*p){*p=cchar(*p);p++;}printf("%s\n",s);}

A.abe+ABC=DEFdef

B.abc+abe=defdef

C.abcaABCDEFdef

D.abcabcdefdef

12.在單鏈表中,增加頭結(jié)點的目的是()。

A.方便運算的實現(xiàn)B.使單鏈表至少有一個結(jié)點C.標識表結(jié)點中首結(jié)點的位置D.說明單鏈表是線性的鏈式存儲實現(xiàn)

13.程序流程圖中有箭頭的線段表示的是()。

A.圖元關系B.數(shù)據(jù)流C.控制流D.調(diào)用關系

14.以下敘述中錯誤的是()。

A.在一個函數(shù)內(nèi)的復合語句中定義的變量在本函數(shù)范圍內(nèi)有效

B.在一個函數(shù)內(nèi)定義的變量只在本函數(shù)范圍內(nèi)有效

C.在不同的函數(shù)中可以定義相同名字的變量

D.函數(shù)的形參是局部變量

15.

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

A.fseek(文件指針,起始點,位移量)

B.fseek(文件指針,位移量,起始點)

C.fseek(位移量,起始點,文件指針)

D.fseek(起始點,位移量,文件指針)

17.將兩個字符串連接起來組成一個字符串時,選用()函數(shù)。A.strlen()B.strcpy()C.strcat()D.strcmp()

18.下述關于數(shù)據(jù)庫系統(tǒng)的敘述中,正確的是()。

A.數(shù)據(jù)庫系統(tǒng)減少了數(shù)據(jù)冗余

B.數(shù)據(jù)庫系統(tǒng)避免了一切冗余

C.數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的一致性是指數(shù)據(jù)類型一致

D.數(shù)據(jù)庫系統(tǒng)比文件系統(tǒng)能管理更多的數(shù)據(jù)

19.廣義表((a))的表尾是()。

A.aB.(a)C.((a))D.()

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

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

二、2.填空題(20題)21.實體之間的聯(lián)系可以歸結(jié)為一對一的聯(lián)系,一對多的聯(lián)系與多對多的聯(lián)系。如果一個學校有許多學生,而一個學生只屬于一個學校,則實體集學校與實體集學生之間的聯(lián)系屬于【】的聯(lián)系。

22.以下程序可把輸入的十進制數(shù)以十六進制數(shù)的形式輸出,請?zhí)羁铡?/p>

#inelude<stdio.h>

main()

{eharb[17]={"0123456789ABCDEF"};

intc[64],d,i=0,base=16;

longn;

printf("Enteranumber:\n");

seanf("%ld",&n);

do{c[i]=【】;i++;n=n/base;}

while(n!=0);

printf("Transmitenewbase:\n");

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

{d=c[i];printf("%c",b【】);}

printf("\n");

}

23.按照邏輯結(jié)構分類,結(jié)構可以分為線性結(jié)構和非線性結(jié)構,棧屬于______。

24.請在以下程序第一行的下劃線處填寫適當內(nèi)容,使程序能正常運行。

#include<stdio.h>

【】(double,double);

main()

{doublex,y;

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

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

}

doublemax(doublea,doubleb)

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

25.診斷和改正程序中錯誤的工作通常稱為【】。

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

intt(intx,inty,intcp,intdp)

{cp=x*x+y*y;

dp=x*x-y*y;

}

main()

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

t(a,b,c,d);

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

}

27.用樹型結(jié)構表示實體類型及實體間聯(lián)系的數(shù)據(jù)模型稱為【】。

28.若a=10,b=20,則表達式!(a<b)的值是【】。

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

main()

{inta;

scanf("%d",&a);

if(a>50)printf("%d",a);

if(a>40)printf("%d",a);

if(a>30)printf("%d",a);}

30.以下程序的輸出結(jié)果是()。#include<stdio.h>main(){inti=10,j=0;do{j=j+i;i--;}while(i>5);printf("%d\n",j);}

31.E-mail地址由用戶名和域名兩部分組成,這兩部分的分隔符為【】。

32.函數(shù)fun的功能是:根據(jù)以下公式求p的值,結(jié)果由函數(shù)值返回。m與n為兩個正數(shù),且要求m>n。

例如:m=12,n=8時,運行結(jié)果應該是495.000000。請在題目的空白處填寫適當?shù)某绦蛘Z句,將該程序補充完整。

#include<stdio.h>

floatfun(intm,intn)

{inti;

doublep=1.0;

for(i=1;i<=m;i++)【】;

for(i=1;i<=n;i++)【】;

for(i=1;i<=m-n;i++)p=p/i;

returnp;

}

main()

{printf("p=%f\n",fun(12,8));

}

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

intf(inta[],intn)

{

if(n>=1)

returnf(a,n-1)+a[n-1];

else

return0;

}

main()

{

intaa[5]={1,2,3,4,5},s;

s=f(aa,5);

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

}

34.以下sstrcpy()函數(shù)實現(xiàn)字符串復制,即將t所指字符串復制到s所指向內(nèi)存空間中,形成一個新的字符串s。請?zhí)羁铡?/p>

voidsstrcpy(char*s,char*t)

{while(*s++=______);}

main()

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

sstrcpy(str1,str2);

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

}

35.下面程序的功能是將一個字符串str的內(nèi)容顛倒過來,請?zhí)羁铡?/p>

#include<string.h>

main()

{inti,j,【】;charstr[]={"1234567"};

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

{k=str[i];str[i]=str[j];str[j]=k;}

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

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

main()

{

inta,b,c;

a=25;

b=025;

c=0x25;

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

}

37.數(shù)據(jù)結(jié)構包括數(shù)據(jù)的邏輯結(jié)構、數(shù)據(jù)的【】以及列數(shù)據(jù)的操作運算。

38.需求分析的最終結(jié)果是產(chǎn)生【】。

39.下面函數(shù)要求計算兩個整數(shù)x,y之和,并通過形參返回該值,請?zhí)羁铡?/p>

add(intx,inty,【】z)

{【】=x+y;}

40.若有定義語句chars[100],d[100];intj=0,i=0;且s中已賦字符串,請?zhí)羁找詫崿F(xiàn)拷貝。(注:不使用逗號表達式)

while(s[i])(d[j]=【】;j++;}

d[j]=0;

三、1.選擇題(20題)41.有以下程序:#include<stdio.h>stxucttt{intx;structtt*y;}*p;structtta[4]={20,a+1,15,a+2,30,a+3,17,a};main(){inti;p=a;for(i=1;i<=2;i++){printf("%d,",p->x);p=p->y;}}程序的運行結(jié)果是()。

A.20,30,B.30,17C.15,30,D.20,15,

42.對長度為n的線性表進行順序查找,在最壞情況下所需要的比較次數(shù)為()。

A.log2nB.n/2C.nD.n+1

43.下列不屬于軟件工程的3個要素的是______。

A.工具B.過程C.方法D.環(huán)境

44.沒有如下定義:Structsk{inta;floatb;}data;int*p;若要使P指向data中的a域,正確的賦值語句是

A.p=&a;B.p=data.a;C.p=&data.a;D.*p=data.a;

45.設有以下程序:structst{intn;structst*next;};staticstructsta[3]={5,&a[1],7,&a[2],9,'\0\},*p;p=&a[0];下面其值為6的表達式為______。

A.p++->nB.p->n++C.(*p).n++D.++p->n

46.有以下程序main(){inta=3,b=4,c=5,d=2;if(a>B)if(b>C)printf("%d",d+++1);elseprintf("%d",++d+1);printf("%d\n",D);}程序運行后的輸出結(jié)果是

A.2B.3C.43D.44

47.以下if語句書寫正確的是()

A.if(x=0;)printf("%f",x);elseprintf("%f",-x);

B.if(x>0){x=x+1;printf("%f",x);}elseprintf("%f",-x);

C.if(x>0);{x=x+1;printf("%f",x);}elseprintf("%f",-x);

D.if(x>0){x=x+1;printf("%f",x)}elseprintf("%f",-x);

48.下面程序main(){intx=32;printf("%d\n",x=x<<1);}的輸出是______。

A.100B.160C.120D.64

49.設變量a、b、c、d和y都己正確定義并賦值。若有下列if語句

if(a<b)

if(c==d)y=0;

elsey=1;

該語句所表示的含義是()。

A.

B.

C.

D.

50.已有定義:Mtx=3,y=4,z=5;,則表達式!(x/y)+z-1&&y+z/2的值是()。

A.6B.OC.2D.1

51.某二叉樹中有n個度為2的結(jié)點,則該二叉樹中的葉子結(jié)點數(shù)為()

A.n+1B.n-1C.2nD.n/2

52.軟件設計中,有利于提高模塊獨立性的一個準則是______。A.低內(nèi)聚低耦合B.低內(nèi)聚高耦合C.高內(nèi)聚低耦合D.高內(nèi)聚高耦合

53.有以下程序#include<stdio.h>#include<string.h>voidfun(char*s[],intn){char*t;inti,j;for(i=0;i<n-1;++)for(j=i+1;j<n;j++)if(strlen(s[i])>strlen(s[j])){t=s[i];s[i];s[j];s[j]=t;}}main(){char*ss[]={"bcc

A.xy,aaaaccB.aaaacc,xyC.bcc,aabccD.aabcc,bcc

54.有以下程序:#include<stdio.h>#include<string.h>voidf(char*s,char*t){chark;k=*s;*s=*t;*t=k;s++;t--;if(*s)f(s,t);}main(){charstr[10]:"abedefg",*p;p=str+strlen(str)/2+1;f(p,p-2);printf("%s\n",str);程序運行后的輸出結(jié)果是()。

A.abcdefgB.gfedcbaC.gbcdefaD.abedcfg

55.若有定義int*p[3];,則以下敘述中正確的是______。

A.定義了一個基類型為int的指針變量p,該變量有三個指針

B.定義了一個指針數(shù)組p,該數(shù)組含有三個元素,每個元素都是基類型為int的指針

C.定義了一個名為*p的整型數(shù)組,該數(shù)組含有三個int類型元素

D.定義了一個可指向二維數(shù)組的指針變量p,所指一維數(shù)組應具有三個int類型元素

56.下面程序段中,輸出*的個數(shù)是char*s="\ta\018bc";for(;*s!='\0';s++)printf("*");

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

57.fgets(str,n,fp)函數(shù)從文件中讀入一個字符串,以下錯誤的敘述是()。

A.字符串讀入后會自動加入'\0'

B.fp是指向該文件的文件型指針

C.fgets函數(shù)將從文件中最多讀入n個字符

D.fgets函數(shù)將從文件中最多讀入n-1個字符

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

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

59.有以下程序:#includo<stdio.h>main(){inty=10;while(y--)printf("y=%d\n",y);}程序執(zhí)行后的輸出結(jié)果是()。

A.y=0B.y=-1C.y=1D.while構成無限循環(huán)

60.閱讀以下函數(shù):fun(char*s1,char*s2){inti=0;while(s1[i]==s2[i]&&s2[i]!='\0')i++;return(s1[i]=='\0'&&s2[i]=='\0');}此函數(shù)的功能是()。

A.將s2所指字符串賦給s1

B.比較s1和s2所指字符串的大小,若s1比s2的大,函數(shù)值為1,否則函數(shù)值為0

C.比較s1和s2所指字符串是否相等,若相等,函數(shù)值為1,否則函數(shù)值為0

D.比較s1和s2所指字符串的長度,若s1比s2的長,函數(shù)值為1,否則函數(shù)值為0

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

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

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

62.

63.

64.有三個關系R、S和T如下:

則由關系R和S得到關系T的操作是()。

A.自然連接B.交C.除D.并

65.

66.若有如下定義,則__________是對數(shù)組元素的正確的引用。.

inta[10],*p;p=a;

A.*&a[10]B.a[11]C.*(p+11)D.*p*p*p

67.有以下程序:

程序運行后的輸出結(jié)果是()。A.235B.0235C.02356D.2356

68.設有數(shù)組定義:chararray[]="China";則數(shù)組array所占的空間為()。

A.4個字節(jié)

B.5個字節(jié)

C.6個字節(jié)

D.7個字節(jié)

A.EFGHIJABCD

B.bcdefghij

C.abdefCghij

D.不確定的值

69.

70.(40)將E-R圖轉(zhuǎn)換到關系模式時,實體與聯(lián)系都可以表示成()

A.屬性

B.關系

C.鍵

D.域

71.執(zhí)行語句“for(i=1;i++<;4;);”后,變量i的值是()。

A.3B.4C.5D.不定

72.

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

A.在C語言中調(diào)用函數(shù)時,只能把實參的值傳送給形參,形參的值不能傳送給實參

B.在C的函數(shù)中,最好使用全局變量

C.外部變量可以在函數(shù)之間傳遞數(shù)據(jù)

D.自動變量實質(zhì)上是一個函數(shù)內(nèi)部的局部變量

74.若有定義語句:doublex,y,*px,+py;,執(zhí)行Tpx=&x;py=&y之后,正確的輸入語句是()。

75.下列函數(shù)的功能是

set(s,t)

{char*s,*t;

while((*s)&&(*t)&&(*t++==*s++));

return(*s-*t);

}A.A.求字符串的長度

B.比較兩字符串的大小

C.將字符串s復制到字符串t中

D.將字符串s連接到字符串t后

76.有以下程序函數(shù)fun只對下標為偶數(shù)的元素進行操作.:

程序運行后的輸出結(jié)果是()。A.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,

77.設有定義語句

則以下敘述正確的是().

A.f是指向函數(shù)的指針變量,該函數(shù)具有_個int類型的形參

B.f是基類型為int的指針變量

C.f是指向int類型一維數(shù)組的指針變量

D.f是函數(shù)名,該函數(shù)的返回值是基類型為int類型的地址

78.軟件生命周期是指()。A.軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程

B.軟件從需求分析、設計、實現(xiàn)到測試完成的過程

C.軟件的開發(fā)過程

D.軟件的運行維護過程

79.

80.以下不正確的定義語句是

A.inty[5.3]={0,1,3,5,7,9};B.doublex[5]={2.0,4.0,6.0,8.0,10.0};

C.charc1[]={’1’,’2’,’3’,’4’,’5’};D.charc2[]={’\x10’,’\xa’,’\x8’};

五、程序改錯題(1題)81.下列給定程序中,函數(shù)ptoc的功能是:利用插入排序法對字符串中的字符按從小到大的順序進行排序。插入法的基本方法是:先對字符串中的頭兩個元素進行排序,然后把第3個字符插入前兩個字符中,插入后前3個字符依然有序;再把第4個字符插入前三個字符中,待排序的字符串已

在主函數(shù)中賦予。

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

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

試題程序:

#include<strin9.h>

#include<stdi0.h>

#defineM80

voidproc(char*arr)

{inti,j,n;charch;

n=strlen(arr):

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

//****found****

{c=arr[i];

j=i-1;

while((j>=o)&&(ch<arr[j]))

{

arr[j+1]=arr[j];

j--;

}

arr[j+1]=ch;

}

}

voidmain

{

chara[M]="QWERTYUIOPASDFGHJKLMNBVCXZ";

printf("Theoriginalstring:%s\n",a);

proc(a);

printf("Thestringaftersortin9:

%s\n\n",a);

}

六、程序設計題(1題)82.某學生的記錄由學號、8門課程成績和平均分組成,學號和8門課程的成績已在主函數(shù)中給出,請編寫函數(shù),其功能是:求出該學生的平均分,并放入記錄的ave成員中。

例如,學生的成績是:85.5,76,69.5,85,91,72,64.5,87.5,則他的平均分應為78.875。

注意:部分源程序給出如下。

請勿改動main函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)fun部位中填入你編寫的若干語句。

試題程序:

#include<stdio.h>

#defineN8

typedefstruct

{

charnum[10];

doubles[N];

doubleave;

}STREC;

voldfun(STREC*a)

{

}

voidmain

STRECs={"GA005",85.5,76,69.5,85,91,72,64.5,87.5};

inti;

fun(&s);

printf("The%ssstudentdata:\n",s.num);

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

printf("%4.1fkn",s.s[i]);

printf("\nknave=%7.3fkn",s.aVe);

printf("\n");

}

參考答案

1.B

2.D本題主要考查帶參數(shù)的宏定義,過程如下:由于定義為define(x)x*x沒有括號優(yōu)先級,所以:a=a/(S(k+m)/S(k+m))=a/(k+m*k+m/k+m*k+m)=9/(3+2*3+2/3+2*3+2)=0。

3.A本題中定義了整形變量case,但case是關鍵字,關鍵字不能用做標識符。單精度printF不是關鍵字,因為標識符區(qū)分大小寫。所以A不正確。

4.B在同一源文件中,函數(shù)名必須唯一,選項A正確。函數(shù)的調(diào)用有兩種形式:①出現(xiàn)在表達式中,可以出現(xiàn)在賦值號右邊的表達式中;②作為獨立的語句完成某種操作。因此選項B錯誤,選項D正確。不同函數(shù)中的形參可以同名,它們的作用域都限制在各自的函數(shù)體內(nèi),選項C正確。故本題答案為B選項。

5.B解析:字符串輸入函數(shù)fgets()的調(diào)用形式為:fgets(s,n,fp)。fgets函數(shù)參數(shù)說明:“s”可以是一個字符數(shù)組名,也可以是指向字符串的指針;“n”為要讀取的最多的字符個數(shù);“fp”是指向該文件的文件型指針。fgets函數(shù)的功能是:從fp所指向的文件中讀取長度不超過n-1個字符的字符串,并將該字符串放到字符數(shù)組s中;讀入字符串后會自動在字符串末尾加入“'\\0'”結(jié)束符,表示字符串結(jié)束。

6.A

7.A

8.A執(zhí)行x=x-=x-x語句可寫成x=x-(x-x),可看出結(jié)果為10,故八選項正確。

9.C

10.D解析:因為x的值為大于1的奇數(shù),所以x除以2的余數(shù)等于1,因此,選項A)、C)中表達式的結(jié)果為真,不為0;對于選項B)來說,x除以2的商不會等于0;選項D)中表達式的結(jié)果為假,即等于0。

11.B解析:字符數(shù)組元素作函數(shù)參數(shù)是單向的值傳遞。函數(shù)cchar的功能是將大寫字母轉(zhuǎn)換為小寫字母。主函數(shù)中while循環(huán)語句的條件是判斷指針p當前指向的字符是否為空,若不為空,則調(diào)用函數(shù)cchar,即主函數(shù)中通過循環(huán)語句將字符串'ABC+abc=defDEF'中的大寫字母全部轉(zhuǎn)換為小寫字母,因此printf的輸出結(jié)果為選項B。

12.A根據(jù)單位鏈表(包含頭結(jié)點)的結(jié)構,只要掌握了表頭,就能夠訪問整個鏈表,因此增加頭結(jié)點的目的是為了便于運算的實現(xiàn)。

13.C解析:程序流程圖是軟件過程設計中常用的圖形描述工具之一。構成程序流程圖的最基本符號有:→或↓,表示控制流;□表示加工步驟;

表示邏輯條件。

14.A在一個函數(shù)內(nèi)的復合語句中定義的變量在本復合語句塊范圍內(nèi)有效,選項A錯誤,其他選項正確。本題答案為A選項。

15.B

16.B解析:本題考查函數(shù)fseek的用法。fseek函數(shù)的調(diào)用形式為:

fseek(文件指針,位移量,起始點)

“起始點”用0,1或2代替,0代表“文件開始”,1為“當前位置”,2為“文件末尾”。

“位移量”指以“起始點”為基點,向前移動的字節(jié)數(shù)。ANSIC和大多數(shù)C版本要求位移量是long型數(shù)據(jù),這樣當文件長度大于64k時不致出現(xiàn)問題。ANSIC標準規(guī)定在數(shù)字末尾加一個字母L表示long型。

17.C將兩個字符串連接起來組成一個字符串,選用strcat函數(shù)來連接。

18.A解析:數(shù)據(jù)庫是一個通用化的、綜合性的數(shù)據(jù)集合,它可以為各種用戶所共享,具有最小的冗余度和較高的數(shù)據(jù)與程序的獨立性,而且能并發(fā)地為多個應用服務,同時具有安全性和完整性。即數(shù)據(jù)庫系統(tǒng)減少了數(shù)據(jù)冗余,但不能避免一切冗余。所以選項A正確,選項B錯誤。在數(shù)據(jù)庫管理階段中,數(shù)據(jù)是結(jié)構化的,面向系統(tǒng),數(shù)據(jù)冗余度小,從而節(jié)省了數(shù)據(jù)的存儲空間,也減少了對數(shù)據(jù)的存取時間,提高了訪問效率,避免了數(shù)據(jù)的不一致性。數(shù)據(jù)的不一致性,是指對數(shù)據(jù)的存取方式,選項C錯誤。數(shù)據(jù)庫系統(tǒng)比文件系統(tǒng)能管理更多的數(shù)據(jù),并非是數(shù)據(jù)庫系統(tǒng)的特點,選項D錯誤。本題正確答案是A。

19.D

20.C

21.一對多一對多解析:實體之間的聯(lián)系可以歸結(jié)為一對一、一對多與多對多。如果一個學校有許多學生,而一個教師只歸屬于一個學生,則實體集學校與實體集學生之間的聯(lián)系屬于一對多的聯(lián)系。

22.n%base[d]n%base[d]解析:程序中的字符數(shù)組b存儲了十六進制16個數(shù)字的字符,整型數(shù)組c用于存儲轉(zhuǎn)換的十六進制數(shù)的各位數(shù)值。將整數(shù)n轉(zhuǎn)換成它的各位十六進制數(shù)值,需采用除以16取余的方法,即求n除以16的余,得到它的十六進制的末位數(shù),接著將n除以16,在n不等于0的情況下循環(huán),順序求出n的十六進制的倒數(shù)第一、第二、第三位數(shù)等。程序中變量base已預置16,所以在第一處填n%base。當n的十六進制數(shù)的倒數(shù)第一、第二、第三位等依次存放于數(shù)組c中后,就從最高位至最低位,參照數(shù)組c[i]的內(nèi)容d(以其內(nèi)容為下標),取十六進制數(shù)字符表中的字符b[d)輸出,所以在第二處填[d]。

23.線性結(jié)構線性結(jié)構解析:數(shù)據(jù)的邏輯結(jié)構是指數(shù)據(jù)元素之間的邏輯關系,分為線性結(jié)構和非線性結(jié)構。常見的線性結(jié)構有線性表、棧和隊列等,常見的非線性結(jié)構有樹、二叉樹等。

24.doublemax或externdoublemaxdoublemax或externdoublemax解析:main函數(shù)中調(diào)用了一個max函數(shù),而max函數(shù)是在調(diào)用之后定義的,所以要求填空的內(nèi)容應該是對函數(shù)進行聲明的語句。由max函數(shù)的定義可知此函數(shù)是double型的,因此空格處應該填doublemax或externdoublemax。

25.程序調(diào)試程序調(diào)試解析:程序調(diào)試的任務是診斷和改正程序中的錯誤。程序調(diào)試與軟件測試不同,軟件測試是盡可能多地發(fā)現(xiàn)軟件中的錯誤。先要發(fā)現(xiàn)軟件的錯誤,然后借助于調(diào)試工具找出軟件錯誤的具體位置。軟件測試貫穿整個軟件生命期,而調(diào)試主要在開發(fā)階段。

26.5656解析:本題中a,b,c,d足實參,x,y,cp,dp是形參。C語言規(guī)定,實參變量對形參變量的數(shù)據(jù)傳遞是“值傳遞”,即單向傳遞,只由實參傳給形參,而不能由形參傳回來給實參。在內(nèi)存中,實參單元與形參單元是不同的單元。在調(diào)用函數(shù)時,給形參分配存儲單元,并將實參對應的值傳遞給形參,調(diào)用結(jié)束后,形參單元被釋放,實參單元仍保留并維持原值。因此,程序的輸出結(jié)果是56。

27.層次模型用樹型結(jié)構表示實體類型及實體間聯(lián)系的數(shù)據(jù)模型稱為層次模型,用有向圖結(jié)構表示實體類型及實體間聯(lián)系的數(shù)據(jù)模型稱為網(wǎng)狀模型,用二維表格結(jié)構表示實體及其聯(lián)系的數(shù)據(jù)模型稱為關系模型。

28.00解析:已知a=10,b=20,所以邏輯表達式a<b的值為true,即為1,在這個表達式前面有一個邏輯運算符!,表示反操作,所以整個語句的值應當為false,即為0。

29.585858585858解析:本題考查對if語句的掌握,當輸入58以后,程序中的3個if語句都成立,所以分別輸出58。

30.4040解析:分析程序,初始時i=10,j=0,這時do循環(huán)中的“i=j+i”

31.@

32.p=p*ip=p/ip=p*ip=p/i解析:本題中,欲求p的值,需要先求m!,n!,(m-n)!,可分別用循環(huán)語句實現(xiàn)。

33.1515解析:在函數(shù)f()中只有一條if語句,如果n不小于1,則返回f(a,n-1)+a[n-1];否則返回0。所以f(aa,5)返回f(aa,4)+aa[4],而f(aa,4)返回f(aa,3)+aa[3],……直到f(aa,0)返回0。故f(aa,5)實際返回值是0+aa[1]+aa[2]+aa[3]+aa[4]+aa[5],所以本題最終輸出15。

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

35.k-1k,-1解析:顛倒一個字符串中的字符,就是首尾對應的元素兩兩交換。簡單地可用兩個游標變量i和j,i是前端元素的下標,j是后端元素的下標,交換以這兩個變量值為下標的元素str[i]和str[j]。開始時,i的值為0,j的值為字符串末元素的下標(字符串長度減1)。每次交換后,i增1,j減1。繼續(xù)交換的條件是str[i]位于str[j]的前面,即i<j。字符串末元素的下標是它的長度減1,所以在第二個空框處應填入-1。程序為了交換str[i]和str[j],使用了變量k,該變量應在程序的變量定義部分中一起定義,所以在第一個空框處應填入k。

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

37.存儲結(jié)構存儲結(jié)構解析:數(shù)據(jù)結(jié)構包括3個方面,即數(shù)據(jù)的邏輯結(jié)構、數(shù)據(jù)的存儲結(jié)構及對數(shù)據(jù)的操作運算。

38.需求規(guī)格說明書需求規(guī)格說明書解析:軟件需求規(guī)格說明書是需求分析階段的最后成果,是軟件開發(fā)中的重要文檔之一。需求規(guī)格說明書包括正確性、無歧義性、完整性、可驗證性、一致性、可理解性、可修改性和可追蹤性等。

39.int**zint*\r\n*z解析:函數(shù)希望通過形參z帶回結(jié)果,形參z必須是指針類型的。由于返回整型結(jié)果,所以第一處填int*;函數(shù)返回前必須先把結(jié)果通過形參z間接引用傳回,第二處應填*z。

40.s[i++]s[i++]解析:本題中為了能實現(xiàn)字符串的拷貝,需要使字符數(shù)組s從頭到尾依次遍歷其所有元素.本題應使用i的自增后置來實現(xiàn)。

41.D解析:題目中定義了一個全局結(jié)構體數(shù)組a,結(jié)構體中包含兩個成員;一個int型變量x和一個自身類型指針y。所以,結(jié)構體數(shù)組a的初始化列表中每兩個初始化一個結(jié)構體元素。主函數(shù)通過一個for循環(huán),連續(xù)調(diào)用了兩次輸出函數(shù)printf(),每次輸出p所指元素的x成員值。p初始化時指向數(shù)組a的首地址,即a[0]的位置,所以第1次輸出的值為20。然后又將a[0]的成員y的值賦給p,y在初始化時是a+1,所以p在第2次輸出時指向的元素是a[1],故第2次輸出的值為15。所以本題最終輸出結(jié)果是“20,15,”,應該選擇D。

42.C本題考查的是順序查找。在進行順序查找過程中,如果線性表中的第一個元素就是被查找元素,則只需做一次比較就查找成功,查找效率最高;但如果被查找的元素是線性表中的最后一個元素,或者被查找的元素根本就不在線性表中,則為了查找這個元素需要與線性表中所有的元素進行比較,這是順序查找的最壞情況。所以對長度為n的線性表進行順序查找,在最壞情況下需要比較n次。故本題答案為C。

43.D解析:本題考查了軟件工程的基本概念。軟件工程包括3個要素,即方法、工具和過程。方法是完成軟件工程項目的技術手段;工具支持軟件的開發(fā)、管理和文檔生成;過程支持軟件開發(fā)的各個環(huán)節(jié)的控制和管理。

44.C解析:data是一結(jié)構體變量,a是它的成員,因此引用a域的正確方法是:data.a,取它的地址賦值給指針變量p的語句應該是:p=&data.a。選項A,將a的地址直接賦給了p,而忽略了a為結(jié)構體內(nèi)部的一個成員,而不是一單獨的變量,故選項A不正確;選項B在p=data.a表達式中右邊為一個結(jié)構體變量的成員不是地址,而左邊為一指針應該將一地址賦給它,改選項B不正確:選項D表達式*p=data.a是將結(jié)構體變量中的成員a的值賦給指針p所指向的變量值,而不是使指針p指向data中的a域,故選項D不正確;4個選項中只有C正確。

45.D解析:p指向數(shù)組的第1個元素,由于運算符->優(yōu)先級高于運算符++,可知選項A應先取p->n的值5,再使p++指向下一個元素;選項B,先取p->n的值5作為表達式的值,再使p->n的值加1;選項C與選項B等價:選項D,先使p->n的值增1(即值為6),再以此值作為表達式的值,本題應選擇選項D。

46.A解析:本題考核的知識點是if-else語句的程序分析。我們首先看程序中if-else的匹配,由于C語言中規(guī)定else總是與最近的if搭配,因此程序中else與第二個訂搭配,即該if-else語句為第一個if語句的執(zhí)行部分,接著判斷第一個if后面括號里的表達式的值“a>b”為假('3>4'為假),因此不執(zhí)行后面if-else語句,程序?qū)?zhí)行下面的輸出語句輸出d,而d一直未被改變故為原來的值2,所以,4個選項中選項A符合題意。

47.B

48.D解析:<<是C語言中規(guī)定的左移運算符,例如,a=a<<2,這個語句即是將a的二進制數(shù)左移兩位,左移一位相當于該數(shù)乘于2,左移兩位相當于該數(shù)乘以2的2次方。所以,x<<1=32*2=64。

49.C解析:語句if(c==D)y=0;elsey=1;是if(a<B)語句的一個子句。所以整個C語句表達式的意思是:在、a<b的情況下,如果c=d則y=0,否則y==1。所以,選項C)為正確答案。

50.D解析:本題中,&&左邊的表達式!(x+y)為!(3+7),結(jié)果為假,即為0。再加上2,然后減一,相當于0+5-1=4。左邊等于4,&&右邊的表達式y(tǒng)+z/2相當于4+5/2為6,所以整個表達式相當于4&&6為真,即為1,所以選項D正確。

51.A解析:本題考查數(shù)據(jù)結(jié)構中二叉樹的性質(zhì)。二叉樹滿足如下一條性質(zhì),即:對任意一棵二叉樹,若終端結(jié)點(即葉子結(jié)點)數(shù)為n0,而其度數(shù)為2的結(jié)點數(shù)為n2,則n0=n2+1。根據(jù)這條性質(zhì)可知,若二叉樹中有n個度為2的結(jié)點,則該二叉樹中的葉子結(jié)點數(shù)為n+1。因此,本題的正確答案是選項A。

52.C耦合是對一個軟件結(jié)構內(nèi)不同模塊之間互連程度的度量,耦合度越高,則模塊的獨立性越差。內(nèi)聚反映一個模塊內(nèi)各個元素彼此結(jié)合的緊密程度。高內(nèi)聚是指一個軟件模塊是由相關性很強的代碼組成,只負責一項任務,也就是常說的單一責任原則。低耦合是指不同軟件模塊之間通過穩(wěn)定的接口交互,而不需要關心模塊內(nèi)部的實現(xiàn)。

53.A解析:函數(shù)fun(char*s[],intn)的功能是對字符串數(shù)組的元素按照字符串的長度從小到大排序。在主函數(shù)中執(zhí)行fun(ss,5)語句后,*ss[]={'xy','bcc','bbcc','aabcc','aaaacc'},ss[0],ss[4]的輸出結(jié)果為xy,aaaacc。

54.B解析:本程序的作用是將字符串str倒序。語句p=str+strlen(str)/2+1;將指針變量p指向字符\'e\'所在的存儲單元,P-2指向字符,\'c\'所在的存儲單元,在函數(shù)f中將這兩個存儲單元的內(nèi)容交換,然后將f函數(shù)中指向字符\'e\'的指針變量s加1,指向字符\'c\'的指針變量t減1,繼續(xù)將s和t指向的存儲單元的內(nèi)容進行交換,直到s指向的存儲單元的內(nèi)容為空為止。所以本題程序輸出的結(jié)果是字符串'abcdefe”的倒序形式'gfedcba'。

55.B解析:由于運算符[]優(yōu)先級比*高,int*p[3];相當于int*(p[3]);,表示數(shù)組p的三個元素都是指針變量,且每個元素都是基類型為int的指針。

56.C解析:本題中,格式符。表示的是八進制無符號形式輸出整型數(shù)(不帶前導0),字符常量在內(nèi)存中占一個字節(jié),存放的是ACSII碼代碼值。C語言規(guī)定,所有字符常量都作為整型量來處理,在計算機內(nèi)部,其對應的整數(shù)值就是ACSII字符集中該字符的序號,即&*s中有幾個字符就輸出幾個*。

57.C解析:字符串輸入函數(shù)fgets()的調(diào)用形式為:fgets(s,n,fp)。s可以是一個字符數(shù)組名,或是指向字符串的指針;n為要讀取的最多的字符個數(shù):fp是指向該文件的文件型指針。字符串輸入函數(shù)的功能是:從fp所指向的文件中讀取長度不超過n-1個字符的字符串,并將該字符串存放到字符數(shù)組s中。

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

59.B解析:程序首先判斷y值是否非0,顯然y=10滿足條件,y自減1,再次執(zhí)行while語句,判斷y為9的值是否滿足條件,滿足條件,y自減1,……,直到y(tǒng)為0,條件不成立,結(jié)束循環(huán),y自減1后變?yōu)?1,所以輸出結(jié)果為y=-1。

60.C解析:在函數(shù)fun()中有兩個字符型指針變量s1和s2,在函數(shù)中程序執(zhí)行while循環(huán),該循環(huán)退出條件有兩個:一個是s1[i]!=s2[i](兩個字符串不相等):第二個是s1[i]和s2[i]相等均為“\\0”(兩個字符串相等)。循環(huán)退出后,執(zhí)行return語句,即兩個字符串相等則返回1,不相等則返回0。所以,C選項為所選。

61.D調(diào)用f(a,b)函數(shù)返回3,調(diào)用f(a,c)函數(shù)返回6,所以外層調(diào)用f(f(a,b),f(a,c));即調(diào)用f(3,6)函數(shù)返回9。

62.D

63.B

64.C

65.A

66.D

67.B本題考查分支語句用法。因為變量的初始值分別為k=5、n=0,所以程序第1次進入循環(huán)時,執(zhí)行default語句,輸出0,k減1;這時n=0、k=4,程序進行第2次循環(huán),執(zhí)行case4:這個分支,結(jié)果是n=2、k=3,打印出2;這時n=2、k=3,break跳出,程序進行第3次循環(huán),執(zhí)行case3:這個分支,結(jié)果是n=3、k=2,打印出3;這時n=3、k=2,break跳出,程序然后進行第4次循環(huán),執(zhí)行case2:case4:這個分支,結(jié)果是n=5、k=1,打印出5,break跳出,這時因為n=5不滿足n<5的循環(huán)條件,因此循環(huán)結(jié)束。

68.C

69.D

70.B

71.Cfor循環(huán)結(jié)束時,i++的值應為4,i自加后此時應為5,故選擇C選項。

72.C

73.B解析:編譯時,編譯系統(tǒng)不為局部變量分配內(nèi)存單元,而是在程序運行中,當局部變量所在的函數(shù)被調(diào)用時,編譯系統(tǒng)根據(jù)需要要臨時分配內(nèi)存,調(diào)用結(jié)束空間釋放;全局變量一經(jīng)定義,編譯系統(tǒng)為其分配固定的內(nèi)存單元,在程序運行的自始至終都占用固定的單元。在考慮內(nèi)存不定的情況下,最好使用全局變量。

74.A因為x,y都是double型數(shù)據(jù),所以輸入時的格式字符應為%If,所以B)與c)錯誤。D)選項中“scanf(”%If%IP’’x,y);”應為“scanf(”%If%lf'’,&x,&y);”。故本題答案為A)。

75.B在本題中,從題目給出的四個選項我們就可以知道,程序是對兩個字符串進行操作。下面將具體分析程序。

程序首先定義兩個字符型的指針變量s和t,從后面的程序中不難看出這兩個指針變量應該用來對兩個字符串進行操作處理。用循環(huán)來對字符串進行處理時,循環(huán)繼續(xù)的條件是指針變量s和指針變量t所指向的結(jié)果值不為0,且兩結(jié)果值相等。很顯然,指針變量s和指針變量t所指向的結(jié)果值不為0,說明兩字符串沒有結(jié)束,只有結(jié)束時才為0,而結(jié)果值相等說明兩字符相等,如果不等,循環(huán)則結(jié)束,此時程序?qū)⒁蠓祷夭坏仍刂g的差值,從差值的正負關系我們可以判斷出哪個元素更大。綜上所述,程序段的作用是用來比較兩字符串的大小。因此,本題正確的答案選B。

76.A由函數(shù)fun(int*a,intn)中語句if(a[j]>a[k])k=j;可知當前k是記錄數(shù)組中較大數(shù)據(jù)值所在位置的下標變量,所以該函數(shù)的作用是對數(shù)組a中的下標為偶數(shù)位置的數(shù)據(jù)進行從大到小的排序,即對a[0],a[2],a[4],a[6]中的數(shù)據(jù)1,3,5,7進行從大到小的排序,其他位置的數(shù)據(jù)不變,所以答案為A)。

77.A

78.A通常,將軟件產(chǎn)品從提出、實現(xiàn)、使用維護到停止使用退役的過程稱為軟件生命周期。也就是說,軟件產(chǎn)品從考慮其概念開始,到該軟件產(chǎn)品不能使用為止的整個時期都屬于軟件生命周期。

79.B

80.A在一維數(shù)組中要注意的是,下標表達式中常量表達式的值必須大于等于零,并且小于自身元素的個數(shù),即數(shù)組長度,選項A的下標不是整數(shù),所以錯誤。

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

\n正確:ch=arr[i];

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

82.voidfun(STREC*a)

\n{

\ninti;

\na->ave=0.0;

\nfor(i=0;i<N;i++)

\na->ave=a->ave+a->s[i];

\n/*求各門課程成績的總和*/

\na->ave=a->ave/N;/*求平均分*/

\n}

\n【解析】本題考查的是指向結(jié)構體類型的指針變量做參數(shù)和結(jié)構體類型成員的運算。fun函數(shù)中求出平均成績,要帶回主函數(shù)則必須定義一個指針類型的形參STREC*a,同時引用成員使用指向運算符,a->ave和a->s[i]。

\n2022年河北省石家莊市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.若有以下定義和語句charc1='b',c2='e'printf("%d,%c\n",c2-c1,c2-'a'+A);則輸出結(jié)果()

A.2,MB.3,EC.2,ED.輸出項與對應的格式控制不一致,輸出結(jié)果不確定

2.執(zhí)行下列程序后,輸出的結(jié)果是()。#include<stdio.h>#defineS(X)X*Xvoidmain{inta=9,k=3,m=2;a/=S(k+m)/S(k+m):printf("%d",a);}A.1B.4C.9D.0

3.閱讀以下程序:#include<stdio.h>main(){intcase;floatprintF;printf("請輸人2個數(shù):");scanf("%d%fl"&case,&printF);printf("%dofof\n",case,printF);}該程序在編譯時產(chǎn)生錯誤,其出錯原因是()。A.定義語句出錯,case是關鍵字,不能用做用戶自定義標識符

B.定義語句出錯,printF不能用做用戶自定義標識符

C.定義語句無錯,scanf不能作為輸入函數(shù)使用

D.定義語句無錯,printf不能輸出case的值

4.以下敘述中錯誤的是()。

A.在同一源文件中,函數(shù)名必須唯一

B.凡是帶有返回值的庫函數(shù),都不能通過加分號而作為獨立的語句出現(xiàn)

C.不同函數(shù)中的形式參數(shù)可以同名

D.返回基本數(shù)據(jù)類型的庫函數(shù)的調(diào)用,均可以出現(xiàn)在賦值號右邊的表達式中

5.標準庫函數(shù)fgets(s,n,file)的功能是()。

A.從文件file中讀取長度為n的字符串存入字符數(shù)組s中

B.從文件file中讀取長度不超過n-1個字符的字符串放到字符數(shù)組s中

C.從文件file中讀取n個字符串存入字符數(shù)組s中

D.從文件file中讀取長度為n-1個字符的字符串存入字符數(shù)組s中

6.設有二維數(shù)組A7×8,每個數(shù)據(jù)元素占8個字節(jié)存儲單元,順序存放,A第一個元素A0,0的存儲地址為1000,按行優(yōu)先存放時,元素A3,4的地址為()。

A.1224B.1208C.1200D.1216

7.已知函數(shù)test定義為()。A.執(zhí)行函數(shù)test后,函數(shù)沒有返回值

B.執(zhí)行函數(shù)test后,函數(shù)不再返回

C.執(zhí)行函數(shù)test后,函數(shù)返回任意類型值

D.以上三個答案都是錯誤的

8.設x為int型變量,則執(zhí)行以下語句后,x的值為()。x=10;x=x-=x-x;

A.10B.20C.40D.30

9.高度為h的滿二叉樹的結(jié)點數(shù)是________個。

A.log2h+1B.2h+1C.2h-1D.2h-1

10.以下選項中,當x為大于l的奇數(shù)時,值為0的表達式是

A.x%2==1B.x/2C.x%2!=0D.x%2==0

11.以下程序的輸出結(jié)果是______。charcchar(charch){if(ch>='A'&&ch<='z')ch=ch-'A'+'a';returnch;}main(){chars[]="ABC+abc=defDEF",*p=s;while(*p){*p=cchar(*p);p++;}printf("%s\n",s);}

A.abe+ABC=DEFdef

B.abc+abe=defdef

C.abcaABCDEFdef

D.abcabcdefdef

12.在單鏈表中,增加頭結(jié)點的目的是()。

A.方便運算的實現(xiàn)B.使單鏈表至少有一個結(jié)點C.標識表結(jié)點中首結(jié)點的位置D.說明單鏈表是線性的鏈式存儲實現(xiàn)

13.程序流程圖中有箭頭的線段表示的是()。

A.圖元關系B.數(shù)據(jù)流C.控制流D.調(diào)用關系

14.以下敘述中錯誤的是()。

A.在一個函數(shù)內(nèi)的復合語句中定義的變量在本函數(shù)范圍內(nèi)有效

B.在一個函數(shù)內(nèi)定義的變量只在本函數(shù)范圍內(nèi)有效

C.在不同的函數(shù)中可以定義相同名字的變量

D.函數(shù)的形參是局部變量

15.

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

A.fseek(文件指針,起始點,位移量)

B.fseek(文件指針,位移量,起始點)

C.fseek(位移量,起始點,文件指針)

D.fseek(起始點,位移量,文件指針)

17.將兩個字符串連接起來組成一個字符串時,選用()函數(shù)。A.strlen()B.strcpy()C.strcat()D.strcmp()

18.下述關于數(shù)據(jù)庫系統(tǒng)的敘述中,正確的是()。

A.數(shù)據(jù)庫系統(tǒng)減少了數(shù)據(jù)冗余

B.數(shù)據(jù)庫系統(tǒng)避免了一切冗余

C.數(shù)據(jù)庫系統(tǒng)中數(shù)據(jù)的一致性是指數(shù)據(jù)類型一致

D.數(shù)據(jù)庫系統(tǒng)比文件系統(tǒng)能管理更多的數(shù)據(jù)

19.廣義表((a))的表尾是()。

A.aB.(a)C.((a))D.()

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

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

二、2.填空題(20題)21.實體之間的聯(lián)系可以歸結(jié)為一對一的聯(lián)系,一對多的聯(lián)系與多對多的聯(lián)系。如果一個學校有許多學生,而一個學生只屬于一個學校,則實體集學校與實體集學生之間的聯(lián)系屬于【】的聯(lián)系。

22.以下程序可把輸入的十進制數(shù)以十六進制數(shù)的形式輸出,請?zhí)羁铡?/p>

#inelude<stdio.h>

main()

{eharb[17]={"0123456789ABCDEF"};

intc[64],d,i=0,base=16;

longn;

printf("Enteranumber:\n");

seanf("%ld",&n);

do{c[i]=【】;i++;n=n/base;}

while(n!=0);

printf("Transmitenewbase:\n");

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

{d=c[i];printf("%c",b【】);}

printf("\n");

}

23.按照邏輯結(jié)構分類,結(jié)構可以分為線性結(jié)構和非線性結(jié)構,棧屬于______。

24.請在以下程序第一行的下劃線處填寫適當內(nèi)容,使程序能正常運行。

#include<stdio.h>

【】(double,double);

main()

{doublex,y;

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

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

}

doublemax(doublea,doubleb)

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

25.診斷和改正程序中錯誤的工作通常稱為【】。

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

intt(intx,inty,intcp,intdp)

{cp=x*x+y*y;

dp=x*x-y*y;

}

main()

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

t(a,b,c,d);

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

}

27.用樹型結(jié)構表示實體類型及實體間聯(lián)系的數(shù)據(jù)模型稱為【】。

28.若a=10,b=20,則表達式!(a<b)的值是【】。

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

main()

{inta;

scanf("%d",&a);

if(a>50)printf("%d",a);

if(a>40)printf("%d",a);

if(a>30)printf("%d",a);}

30.以下程序的輸出結(jié)果是()。#include<stdio.h>main(){inti=10,j=0;do{j=j+i;i--;}while(i>5);printf("%d\n",j);}

31.E-mail地址由用戶名和域名兩部分組成,這兩部分的分隔符為【】。

32.函數(shù)fun的功能是:根據(jù)以下公式求p的值,結(jié)果由函數(shù)值返回。m與n為兩個正數(shù),且要求m>n。

例如:m=12,n=8時,運行結(jié)果應該是495.000000。請在題目的空白處填寫適當?shù)某绦蛘Z句,將該程序補充完整。

#include<stdio.h>

floatfun(intm,intn)

{inti;

doublep=1.0;

for(i=1;i<=m;i++)【】;

for(i=1;i<=n;i++)【】;

for(i=1;i<=m-n;i++)p=p/i;

returnp;

}

main()

{printf("p=%f\n",fun(12,8));

}

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

intf(inta[],intn)

{

if(n>=1)

returnf(a,n-1)+a[n-1];

else

return0;

}

main()

{

intaa[5]={1,2,3,4,5},s;

s=f(aa,5);

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

}

34.以下sstrcpy()函數(shù)實現(xiàn)字符串復制,即將t所指字符串復制到s所指向內(nèi)存空間中,形成一個新的字符串s。請?zhí)羁铡?/p>

voidsstrcpy(char*s,char*t)

{while(*s++=______);}

main()

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

sstrcpy(str1,str2);

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

}

35.下面程序的功能是將一個字符串str的內(nèi)容顛倒過來,請?zhí)羁铡?/p>

#include<string.h>

main()

{inti,j,【】;charstr[]={"1234567"};

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

{k=str[i];str[i]=str[j];str[j]=k;}

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

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

main()

{

inta,b,c;

a=25;

b=025;

c=0x25;

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

}

37.數(shù)據(jù)結(jié)構包括數(shù)據(jù)的邏輯結(jié)構、數(shù)據(jù)的【】以及列數(shù)據(jù)的操作運算。

38.需求分析的最終結(jié)果是產(chǎn)生【】。

39.下面函數(shù)要求計算兩個整數(shù)x,y之和,并通過形參返回該值,請?zhí)羁铡?/p>

add(intx,inty,【】z)

{【】=x+y;}

40.若有定義語句chars[100],d[100];intj=0,i=0;且s中已賦字符串,請?zhí)羁找詫崿F(xiàn)拷貝。(注:不使用逗號表達式)

while(s[i])(d[j]=【】;j++;}

d[j]=0;

三、1.選擇題(20題)41.有以下程序:#include<stdio.h>stxucttt{intx;structtt*y;}*p;structtta[4]={20,a+1,15,a+2,30,a+3,17,a};main(){inti;p=a;for(i=1;i<=2;i++){printf("%d,",p->x);p=p->y;}}程序的運行結(jié)果是()。

A.20,30,B.30,17C.15,30,D.20,15,

42.對長度為n的線性表進行順序查找,在最壞情況下所需要的比較次數(shù)為()。

A.log2nB.n/2C.nD.n+1

43.下列不屬于軟件工程的3個要素的是______。

A.工具B.過程C.方法D.環(huán)境

44.沒有如下定義:Structsk{inta;floatb;}data;int*p;若要使P指向data中的a域,正確的賦值語句是

A.p=&a;B.p=data.a;C.p=&data.a;D.*p=data.a;

45.設有以下程序:structst{intn;structst*next;};staticstructsta[3]={5,&a[1],7,&a[2],9,'\0\},*p;p=&a[0];下面其值為6的表達式為______。

A.p++->nB.p->n++C.(*p).n++D.++p->n

46.有以下程序main(){inta=3,b=4,c=5,d=2;if(a>B)if(b>C)printf("%d",d+++1);elseprintf("%d",++d+1);printf("%d\n",D);}程序運行后的輸出結(jié)果是

A.2B.3C.43D.44

47.以下if語句書寫正確的是()

A.if(x=0;)printf("%f",x);elseprintf("%f",-x);

B.if(x>0){x=x+1;printf("%f",x);}elseprintf("%f",-x);

C.if(x>0);{x=x+1;printf("%f",x);}elseprintf("%f",-x);

D.if(x>0){x=x+1;printf("%f",x)}elseprintf("%f",-x);

48.下面程序main(){intx=32;printf("%d\n",x=x<<1);}的輸出是______。

A.100B.160C.120D.64

49.設變量a、b、c、d和y都己正確定義并賦值。若有下列if語句

if(a<b)

if(c==d)y=0;

elsey=1;

該語句所表示的含義是()。

A.

B.

C.

D.

50.已有定義:Mtx=3,y=4,z=5;,則表達式!(x/y)+z-1&&y+z/2的值是()。

A.6B.OC.2D.1

51.某二叉樹中有n個度為2的結(jié)點,則該二叉樹中的葉子結(jié)點數(shù)為()

A.n+1B.n-1C.2nD.n/2

52.軟件設計中,有利于提高模塊獨立性的一個準則是______。A.低內(nèi)聚低耦合B.低內(nèi)聚高耦合C.高內(nèi)聚低耦合D.高內(nèi)聚高耦合

53.有以下程序#include<stdio.h>#include<string.h>voidfun(char*s[],intn){char*t;inti,j;for(i=0;i<n-1;++)for(j=i+1;j<n;j++)if(strlen(s[i])>strlen(s[j])){t=s[i];s[i];s[j];s[j]=t;}}main(){char*ss[]={"bcc

A.xy,aaaaccB.aaaacc,xyC.bcc,aabccD.aabcc,bcc

54.有以下程序:#include<stdio.h>#include<string.h>voidf(char*s,char*t){chark;k=*s;*s=*t;*t=k;s++;t--;if(*s)f(s,t);}main(){charstr[10]:"abedefg",*p;p=str+strlen(str)/2+1;f(p,p-2);printf("%s\n",str);程序運行后的輸出結(jié)果是()。

A.abcdefgB.gfedcbaC.gbcdefaD.abedcfg

55.若有定義int*p[3];,則以下敘述中正確的是______。

A.定義了一個基類型為int的指針變量p,該變量有三個指針

B.定義了一個指針數(shù)組p,該數(shù)組含有三個元素,每個元素都是基類型為int的指針

C.定義了一個名為*p的整型數(shù)組,該數(shù)組含有三個int類型元素

D.定義了一個可指向二維數(shù)組的指針變量p,所指一維數(shù)組應具有三個int類型元素

56.下面程序段中,輸出*的個數(shù)是char*s="\ta\018bc";for(;*s!='\0';s++)printf("*");

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

57.fgets(str,n,fp)函數(shù)從文件中讀入一個字符串,以下錯誤的敘述是()。

A.字符串讀入后會自動加入'\0'

B.fp是指向該文件的文件型指針

C.fgets函數(shù)將從文件中最多讀入n個字符

D.fgets函數(shù)將從文件中最多讀入n-1個字符

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

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

59.有以下程序:#includo<stdio.h>main(){inty=10;while(y--)printf("y=%d\n",y);}程序執(zhí)行后的輸出結(jié)果是()。

A.y=0B.y=-1C.y=1D.while構成無限循環(huán)

60.閱讀以下函數(shù):fun(char*s1,char*s2){inti=0;while(s1[i]==s2[i]&&s2[i]!='\0')i++;return(s1[i]=='\0'&&s2[i]=='\0');}此函數(shù)的功能是()。

A.將s2所指字符串賦給s1

B.比較s1和s2所指字符串的大小,若s1比s2的大,函數(shù)值為1,否則函數(shù)值為0

C.比較s1和s2所指字符串是否相等,若相等,函數(shù)值為1,否則函數(shù)值為0

D.比較s1和s2所指字符串的長度,若s1比s2的長,函數(shù)值為1,否則函數(shù)值為0

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

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

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

62.

63.

64.有三個關系R、S和T如下:

則由關系R和S得到關系T的操作是()。

A.自然連接B.交C.除D.并

65.

66.若有如下定義,則__________是對數(shù)組元素的正確的引用。.

inta[10],*p;p=a;

A.*&a[10]B.a[11]C.*(p+11)D.*p*p*p

67.有以下程序:

程序運行后的輸出結(jié)果是()。A.235B.0235C.02356D.2356

68.設有數(shù)組定義:chararray[]="China";則數(shù)組array所占的空間為()。

A.4個字節(jié)

B.5個字節(jié)

C.6個字節(jié)

D.7個字節(jié)

A.EFGHIJABCD

B.bcdefghij

C.abdefCghij

D.不確定的值

69.

70.(40)將E-R圖轉(zhuǎn)換到關系模式時,實體與聯(lián)系都可以表示成()

A.屬性

B.關系

C.鍵

D.域

71.執(zhí)行語句“for(i=1;i++<;4;);”后,變量i的值是()。

A.3B.4C.5D.不定

72.

7

溫馨提示

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

評論

0/150

提交評論