2021-2022年河北省廊坊市全國計算機等級考試C語言程序設計測試卷(含答案)_第1頁
2021-2022年河北省廊坊市全國計算機等級考試C語言程序設計測試卷(含答案)_第2頁
2021-2022年河北省廊坊市全國計算機等級考試C語言程序設計測試卷(含答案)_第3頁
2021-2022年河北省廊坊市全國計算機等級考試C語言程序設計測試卷(含答案)_第4頁
2021-2022年河北省廊坊市全國計算機等級考試C語言程序設計測試卷(含答案)_第5頁
已閱讀5頁,還剩32頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

2021-2022年河北省廊坊市全國計算機等級考試C語言程序設計測試卷(含答案)學校:________班級:________姓名:________考號:________

一、單選題(20題)1.以下選項中合法的實型常數是

A.5E2.0B.E-3C.2.00E+00D.1.3E

2.有以下程序:#include<stdio.h>intfun(intx,inty){if(x!=y)return((x+y)/2);elsereturn(x);}main(){inta=4,b=5,c=6;printf(“%d\n”,fun(2*a,fun(b,c)));}程序運行后的輸出結果是()。

A.3B.6C.8D.12

3.有以下程序:#include<stdio.h>#defineS(x)4*(x)*x+1main(){intk=5,j=2;printf("%d\n",S(k+j));}程序運行后的輸出結果是()。A.197B.143C.33D.28

4.鏈表不具備的特點是()

A.所需空間與其長度成正比B.不必事先估計存儲空間C.插入刪除不需要移動元素D.可隨機訪問任一節點

5.算法的時間復雜度是指______。

A.執行算法程序所需要的時間B.算法程序的長度C.算法執行過程中所需要的基本運算次數D.算法程序中的指令條數

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

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

7.

8.二維數組A的每個元素是由6個字符組成的串,其行下標i=0,1,…,8,列下標j=1,2,…,10。若A按行先存儲,元素A[8][5]的起始地址與當A按列先存儲時的元素()的起始地址相同。設每個字符占一個字節。

A.A[8][5]B.A[3][10]C.A[5][8]D.A[0][9]

9.若一棵二叉樹具有10個出度為2的結點,則在該二叉樹中,出度為0的結點個數是()

A.9B.11C.12D.不確定

10.

11.

12.設有二維數組A7×8,每個數據元素占8個字節存儲單元,順序存放,A第一個元素A0,0的存儲地址為1000,數組A的最后一個元素A6,7的存儲地址為()。

A.1024B.1440C.1448D.1432

13.語句“printf("akbre"\'hi\'y\\\bou\n")”;的輸出結果是()。

A.akbre\'hi\'y'\\\bou

B.a\bre\'hi\\y\bou

C.re'hi'you

D.abre'hi'y\bou

14.有3個關系R、S和T如下.

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

15.若有定義:“inta[2][3];”,則對a數組的第i行第j列元素的正確引用為()。

A.*(*(a+i)+j)B.(a+i)[j]C.*(a+i+j)D.*(a+i)+j

16.若以下選項中的變量已正確定義,則正確的賦值語句是()。

A.x1=26.8%3B.1+2=x2C.x3=0x12D.x4=1+2=3

17.用鄰接矩陣A表示有向圖G的存儲結構,則有向圖G中頂點i的出度為()。

A.第i行非0元素的個數之和B.第i列非0元素的個數之和C.第i行0元素的個數之和D.第i列0元素的個數之和

18.若變量已正確定義為int型,要通過語句“scanf(“%d,%d,%d”,&a,&b,&c);”將a賦值為1、將b賦值為2、將c賦值為3,以下輸入形式中錯誤的是(注:□代表一個空格符)()。

A.1,2,3<Enter>

B.□□□1,2,3<Enter>

C.1,□□□2,□□□3<Enter>

D.1□2□3<Enter>

19.有以下程序#include<stdio.h>voidfun(int*a,intn)/*fun函數的功能是將a所指數組元素從大到小排序*/{intt,i,j;for(i=0;i<n-1;j++)for(j=i+l;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main{intc[10]={1,2,3,4,5,6,7,8,9,0),i;fun(c+4,6);for(i=0;i<10;i++)printf("%d,",c[i]);printf("\n");}程序運行的結果是()。A.1,2,3,4,5,6,7,8,9,0,

B.0,9,8,7,6,5,1,2,3,4,

C.0,9,8,7,6,5,4,3,2,1,

D.1,2,3,4,9,8,7,6,5,0,

20.

二、2.填空題(20題)21.以下程序的定義語句中,x[1]的初值是【】,程序運行后輸出的內容是【】。

#include<stdio.h>

main()

{intx[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,161},*p[4],i;

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

{p[i]=&x[2*i+1];

printf("%d",p[i][0]);

}

printf("\n");

}

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

______(double,double);

main()

{doublex,y;

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

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

}

doublemax(doublea,doubleB)

{return(a>b?a=B);}

23.按照“先進先出”的原則組織數據的結構是______。

24.軟件的可移植性是用來衡量軟件【】的重要尺度之一。

25.下列程序的運行結果是【】。

#include<stdio.h>

main()

{unionEXAMPLE

{struct

{intx;inty;}in;

inta;

intb;

}e;

e.a=1;e.b=2;

e.in.x=e.a*e.b;

e.in.y=e.a+e.b;

printf("%d,%d\n",e.in.x,e.in.y);

}

26.下面程序的輸出結果是【】。

#include<stdio.h>

main()

{staticchara[]="language",b[]="program";

char*ptr1=a,*ptr2=b;

intk;

for(k=0;k<7;k++)

if(*(ptr1+k)==*(ptr2+k))

printf("%c",*(ptr1+k));}

27.【】是從二維表列的方向進行的運算。

28.下面程序的運行結果是()。#include<stdio.h>main(){chara[80],*p"AbabCDcd";inti=0,j=0;while(*(p++)!='\0'){if(*p>='a'&&*p<='z'){a[i]=*p;i++;}}a[i]='\0';puts(A);}

29.對于長度為n的順序存儲的線性表,當隨機插入和刪除—個元素時,需平均移動元素的個數為【】。

30.以下程序中,函數fun的功能是計算x2-2x+6,主函數中將調用fun函數計算:

y1=(x+8)2-2(x+8)+6

y2=sin2(x)-2sin(x)+6

請填空。

#include"math.h"

doublefun(doublex){return(x*x-2*x+6);}

main()

{doublex,y1,y2;

printf("Enterx:");scanf("%lf",&x);

y1=fun(【】);

y2=fun(【】);

printf("y1=%lf,y2=%lf\n",y1,y2);

}

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

intm=17;

intfun(intx,inty)

{intm=3;

return(x*Y-m);

}

main()

{inta=5,b=7;

printf("%d\n",fun(a,B)/m);

}

32.下面能正確進行字符串賦值操作的是

33.層次模型的典型代表是IBM公司的【】數據庫管理系統。

34.若有定義:inta[4][4]={{l,2,3,4},{0},{4,6,8,10},{1,3,5,7}},則初始化后,a[2][2]得到的初值是______。

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

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

}

36.實體之間的聯系可以歸結為一對一的聯系,一對多的聯系與多對多的聯系。如果一個學校有許多學生,而一個學生只屬于一個學校,則實體集學校與實體集學生之間的聯系屬于【】的聯系。

37.若有定義語句chars[100],d[100];intj=0,i=0;且s中已賦字符串,請填空以實現拷貝。(注:不使用逗號表達式)

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

d[j]=0;

38.以下程序建立一個帶有頭結點的單向鏈表,鏈表結點中的數據通過鍵盤輸入,當輸入數據為-1時,表示輸入結束(鍵表頭結點的data域不放數據,表空的條件是ph->next==NULL),請填空。

#include<stdio.h>

structlist{intdata;structlist*next;};

structlist*creatlist()

{structlist*p,*q,*ph;inta;ph=(structlist*)malloc(sizeof(structlist));

p=q=ph;printf("Inputanintegernumber;entre-1toend:\n");

scanf("%d",&a);

while(a!=-1)

{p=(structlist*)malloc(sizeof(structlist));

【】=a;q->next=p;【】=p;scanf("%d",&a);}

p->next='\0';return(ph);}

main()

{structlist*head;head=creatlist();}

39.設有定義:FILE*fw;,請將以下打開文件的語句補充完整,以便可以向文本文件readme.txt的最后續寫內容。

fw=fopen("readme.txt",【】);

40.以下程序中函數f的功能是在數組x的n個數(假定n個數互不相同)小找出最大最小數,將其中最小的數與第一個數對換,把最大的數與最后一個數對換。請填空。

#include<stdio.h>

voidf(intx[],intn)

{intp0,p1,i,j,t,m;

i=j=x[0];p0=p1=0;

for(m=O;m<n;m++)

{if(x[m]>i){i=x[m];p0=m;}

elseif(x[m]<j){j=x[m];p1=m;)

}

t=x[p0];x[p0]=x[n-1];x[n-1]=t;

t=x[pl];x[p1]=【】;【】=t

}

main()

{inta[10],u;

for(u=0;u<10;u++)scamp("%d",&a[u]);

f(a,10);

for(u=0;u<10;u++)printf("%d",a[u]);

ptintf("\n");

}

三、1.選擇題(20題)41.有以下程序:#include<stdio.h>main(){intc;while((c=getchar())!='\n'){switch(c-'2'){case0:case1:putchar(c+4);case2:putehar(c+4);break;case3:putchar(c+3);default:putchar(c+2);break;}}}運行程序,從第一列開始輸入以下數據:2473<回車>則程序的輸出結果是()。

A.668977B.668966C.66778777D.6688766

42.閱讀下面程序段,則執行后的結果為#include"stdio.h"main(){intm=4,n=2,k;k=fun(m,n);printf("%d\n",k);}fun(intm,intn){return(m*m*m-n*n*n);}

A.64B.8C.56D.0

43.執行以下程序后,x的值為()。unsignedintx=65535;printf("%d\n",x);

A.65535B.1C.有錯誤D.-1

44.若有以下定義和語句:inta[]={1,2,3,4,5,6,7,8,9,10),*p=a;則值為3的表達式是______。

A.P+=2,*(p++)B.p+=2,*++pC.p+=3,*p++D.p+=2,++*p

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

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

46.若程序中定義了以下函數doublemyadd(doublea,doubleb){return(a+b);}并將其放在調用語句之后,則在調用之前應該對該函數進行說明,以下選項中錯誤的說明是()A.doublemyadd(doublea,b);

B.doublemyadd(double,double);

C.doublemyadd(doubleb,doublea);

D.doublemyadd(doublex,doubley);

47.循環鏈表的主要優點是______。

A.不再需要頭指針了

B.已知某個結點的位置后,能夠容易找到它的直接前驅

C.在進行插入、刪除運算時,能更好地保證鏈表不斷開

D.從表中任一結點出發都能掃描到整個鏈表

48.某二叉樹中有n個度為2的結點,則該二叉樹中的葉子結點數為()

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

49.下面函數的功能是______。exchange(int*ptr1,*ptr2){int*ptr;ptr=-ptr1;ptr1=ptr2;ptr2=ptr;}

A.交換*ptr1和*ptr2的值

B.無法改變*ptr1和*ptr2的值

C.可能造成系統故障,因為使用了空指針

D.交換*ptr1和*pb2的地址

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

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

51.以下敘述中錯誤的是A.計算機不能直接執行用C語言編寫的源程序

B.C程序經C編譯程序編譯后,生成后綴為.obj的文件是一個二進制文件

C.后綴為.obj的文件,經連接程序生成后綴為.exe的文件是一個二進制文件

D.后綴為.obj和.exe的二進制文件都可以直接運行

52.設有如下三個關系表:

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

A.T=R∩SB.T=R∪SC.T=R×SD.T=R/S

53.數據庫技術的根本目標是要解決數據的()。

A.存儲問題B.共享問題C.安全問題D.保護問題

54.以下程序運行后,輸出結果為______。main(){inta[2][3]={1,3,5,7,9,11),*s[2],**pp,*p;s[0]=a[0],s[1]=a[1];pp=s;p=(int*)malloc(sizeof(int));**pp=s[1][1];p=*pp;printf("%d\n",*p);}

A.1B.7C.9D.11

55.下列程序的輸出結果為main(){unionu{char*name;intage;intincome;}="WANGLIONG";s.age=28;s.income=1000;printf("%d\n",s.age);}

A.28B.1000C.0D.不確定

56.有如下程序:longfib(intn){if(n>2)return(fib(n-1)+fib(n-2));elsereturn(2);}main(){printf("%ld\n",fib(3));}該程序的輸出結果是______。

A.2B.4C.6D.8

57.設有下列語句inta=1,b=2,c;c=a^(b《2);執行后,C的值為()。

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

58.設有定義intn1=0,n2,*p=&n2,*q=&n1;,以下賦值語句中與n2=n1;語句等價的是______。A.*p=*q;B.p=q;C.*p=&n1;D.p=*q;

59.以下選項小可作為C語言合法整數的是()。

A.10110BB.386C.0XffaD.x2a2

60.若程序執行時的輸入數據是“2473”,則下述程序的輸出結果是#include<stdio.h>voidmain(){intcs;while((cs=getchar())!=;'\n'){switch(cs-'2'){case0case1:putchar(cs+4);case2:putchar(cs+4);break;case3:putchar(cs+3);default:putchar(cs+2),}}}

A.668977B.668966C.6677877D.6688766

四、選擇題(20題)61.在軟件開發中,需求分析階段產生的主要文檔是()。A.軟件集成測試計劃B.軟件詳細設計說明書C.用戶手冊D.軟件需求規格說明書

62.

63.以下關于retllm語句的敘述中正確的是()。

A.一個自定義函數中必須有一條return語句

B.一個自定義函數中可以根據不同情況設置多條retum語句

C.定義成void類型的函數中可以有帶返回值的return語句

D.沒有return語句的自定義函數在執行結束時不能返回到調用處

64.數據庫管理系統是()。

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

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

A.繼承分為多重繼承和單繼承

B.對象之問的通信靠傳遞消息來實現

C.在外面看不到對象的內部特征是基于對象的“模塊獨立性好”這個特征

D.類是具有共同屬性、共同方法的對象的集合

66.若要求從鍵盤讀人含有空格字符的字符串,應使用函數()。

A.getc()B.gets()C.getchar()D.scanf()

67.

68.

69.

70.設有定義:“char*c;”,以下選項中能夠使字符型指針c正確指向一個字符串的()。

A.charstr[]="string";c=str;

B.scanf(%s,c):

C.c=getchar();

D.*c="strin9";

71.

72.執行語句X=(a=10,b=a--.后,x、a、b的值依次為()。

A.10,10,9

B.10,9,9

C.9,10,9

D.10,9,10

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

A.數據庫不需要操作系統的支持

B.數據庫設計是指設計數據庫管理系統

C.數據庫是存儲在計算機存儲設備中的、結構化的相關數據的集合

D.數據庫系統中,數據的物理結構必須與邏輯結構一致

74.以下敘述中正確的是

A.C程序的基本組成單位是函數B.C程序中的每一行只能寫一條語句

C.main()函數必須放在其他函數之前D.C語句必須在一行內寫完

75.若變量c為char類型,能正確判斷出c為小寫字母的表達式是_______。A.′a′<=c<=′z′

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

C.(′a′=C)

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

76.若在定義語句inta,b,c,*P=&c;之后,接著執行以下選項中的語句,則能正確執行的語句是()。

A.

B.

C.

D.

77.在數據管理技術發展的三個階段中,數據共享最好的是()。

A.人工管理階段B.文件系統階段C.數據庫系統階段D.三個階段相同

78.

79.若運行以下程序時,從鍵盤輸入ADescriptor<CR>(<CR>表示回車),則下面程序的運行結果是()。

A.v0=7,vl=4,v2=7

B.v0=8,vl=4,v2=8

C.v0=11,vl=4,v2=11

D.v0=13,vl=4,v2=12

80.

五、程序改錯題(1題)81.下列給定程序中,函數proc()的功能是:先從鍵盤上輸入一個3行3列的矩陣的各個元素的值,然后輸出主對角線元素之和。請修改函數proc()中的錯誤,使它能得出正確的結果。注意:不要改動main()函數,不得增行或刪行,也不得更改程序的結構。試題程序:

六、程序設計題(1題)82.編寫函數fun,其功能是:求出1~1000之間能被7或11整除,但不能同時被7和11整除的所有整數,并將其放在a所指的數組中,通過n返回這些數的個數。

注意:部分原程序在文件PROGl.C中。

請勿改動主函數main和其他函數中的任何內容,僅在函數fun的花括號中填人你編寫的若干語句。

參考答案

1.C解析:在C語言中,實數有兩種表示形式:十進制數形式與指數形式。

1)一般形式的實數:小數形式的實數由整數部分、小數點和小數部分組成(必須要有小數點)。

2)指數形式的小數:指數形式的實數由尾數部分、e(E)和指數部分組成(字母e或E的前后必須要有數字,且其后面的指數必須為整數)。選項A中,5E2.0中E后面的2.0不是整數;選項B中,E前面沒有數字;選項D中,E后面沒有數字。

2.Bfun函數的功能是獲取2個數的平均值,注意平均值是整型數,小數會被截斷。調用函數“fun(2*4,fun(5,6))”相當于調用函數“fun(8,5)”,平均值是6。故本題答案為B選項。

3.B此程序考查帶參數的宏定義,S(k+j)展開后即4*(k+j)*k+j+1,所以結果為l43,答案為B。

4.D

5.C解析:算法的時間復雜度實際上就是執行算法程序所需要的計算工作量。為了客觀地反映算法性能,在度量算法的時間復雜度時,應該與編寫算法程序所使用的程序設計語言、執行算法程序時所使用的計算的工具以及程序員的水平無關。選項A錯誤,因為同一算法程序在運行速度不同的計算機上運行時,其計算時間是不同的。選項B錯誤,因為算法所編寫的程序長度往往與程序設計語言以及程序員的水平有關,同一個算法,用不同的程序設計語言或者不同的程序員所編寫出的程序其長度可能會大不相同。選項D錯誤,因為根據一個算法所編制出的程序之中,其指令條數往往與程序設計語言以及程序員的水平有關,不能用算法程序中的指令條數來度量算法的時間復雜度。所以,本題正確答案為C。

6.D

\n全局變量是在函數外部任意位置上定義的變量,它的作用域是從變量定義的位置開始,到整個源文件結束止。當全局變量定義在后,引用它的函數在前時,應該在引用它的函數中用extern對此全局變量進行說明,以便通知編譯程序該變量是一個已在外部定義了的全局變量,這時全局變量的作用域從extern說明處起,延伸到該函數末尾。

\n

7.B

8.A

9.B

10.B

11.B

12.B

13.C先輸出a、b表示退一格,當執行到:\b后,光標往后退,接著輸出re'hi'y\(反斜杠后又加一個反斜杠的意思是要輸出一個反斜杠),此時又執行:\b后,\就被ou覆蓋。

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

15.A解析:本題考查如何通過地址來引用數組元素。通過地址來引用數組元素的方法有下列5種:

①a[i][j];②*(a[i]+j);③*(*(a+i)+j);④*(a[i])[j];⑤*(&a[0][0]+3*i+j)。

16.C解析:賦值的一般形式為:變量名:表達式;,賦值的方向為由右向左,即將:右側表達式的值賦給:左側的變量,執行步驟是先計算再賦值。選項A中運算符%的運算對象必須為整數,而選項A中26.8不為整數,故選項A不正確;選項B將一個變量賦值給一個常量,這在C語言中是不允許的,故選項B不正確;選項D中也是將一個常量3賦值給一個常量,故選項D不正確;所以,4個選項中選項C符合題意。

17.A

18.D在輸入整數或實數這類數值型數據時,輸入數據之間必須用空格、回車符、制表符等間隔符隔開,間隔符個數不限。scanf的格式控制字符串也可以使用其他非空白字符,如本題中的逗號,但在輸入時必須輸入這些字符,以保證匹配,所以逗號必須輸入。故本題答案為D選項。

19.Dfun函數的功能是對數組a[]的元素從大到小進行排序。

20.B

21.224682\r\n2468解析:在主函數中根據整型數組x[]的定義可知,x[1]的初值等于2。在for循環語句中,當i=0時,p[0]=&x[1],p[0][0]=2;當i=1時,p[1==&x[3],p[1][0]=4;當i=2時,p[2]=&x[5],p[2][0]=6;當i=3時,p[3]=&x[7],p[3][0]=8,所以程序輸出的結果為2、4、6、8。

22.doublemax或externdoublemaxdoublemax或externdoublemax解析:函數聲明是對所用到的函數的特征進行必要的聲明,編譯系統以函數聲明中給出的信息為依據,對調用表達式進行檢測,以保證調用表達式與函數之間的參數正確傳遞.函數聲明的一般格式為:類型標識符函數名(類型標識符形參,…);這些信息就是函數定義中的第一行的內容。本題中main()函數需要調用max()函數,在main()之前就需要聲明函數max(),并且可以用extern說明符使變量的作用域擴充到需要用到它的函數,所以,填寫doublemax(或externdoublemax)。

23.隊列隊列解析:隊列是一種特殊的線性表,只允許在表的一端插入元素,在表的另一端刪除元素,插入元素的一端叫做“隊尾”,刪除元素的一端叫做“隊頭”,先插入的元素先被刪除,是按先進先出的原則組織數據的。

24.質量質量

25.484,8解析:C語言規定,共用體中各個成員變量在內存中占用同一段內存單元,即e.in.x、e.a、e.b占用同一段內存單元。執行語句e.b=2;后,e.in.x=e.a=e.b=2;執行語句e.in.x=e.a*e.b;時,e.a的值為2,e.b的值為2,所以運算得出e.in.x的值為4;執行語句e.in.y=e.a+e.b時,由于e.in.x和e.a、e.b占用的是同一段內存單元,所以此時的e.a、e.b的值為4,因此運算得出e.in.y的值為4+4=8。程序最后的輸出結果為4,8。

26.gaga解析:考查了用字符指針處理字符串的方法。用字符指針處理字符串,首先要使指針指向這個字符串,即題中的ptr1=a和ptr2=b,然后就是通過指針的移動可以引用到字符串中的每一個字符。題中的*(ptr1+k)是使指針ptr1向后移動k個位置,然后取出指向的字符。

27.投影投影解析:在關系模型的數據語言中,一般除了運用常規的集合運算,(并、交,差、笛卡爾積等)外,還定義了一些專門的關系運算,如投影、選擇、連接等。投影是從二維表的列方向上進行的運算。

28.babcdbabcd解析:c語言中\\0表示字符串的結束。程序將D指針指向字符串“AbabCDcd”的首地址,循環開始后,若指針當前不是指向字符串結束標志位,則進入循環體。循環中每次檢驗字符串中字母是否在a與z之間,若滿足則將當前值賦于數組a,最后給數組添加字符結束標志。此程序可以篩選出字符串中的小寫字母。

29.n/2n/2解析:刪除—個元素,平均移動的元素個數為(n-1+n-2+…+0)/n=(n-1)/2;插入一個元素,平均移動元素個數為(n+n-1+n-2+…+1)/n=(n+1)/2:所以總體平均移動元素個數為n/2。

30.x+8sin(x)x+8,sin(x)解析:考查考生對函數調用相關知識的了解。用x+8代替函數fun(doublex)中形式參數x;用sin(x)代替函數fun(doublex)中形式參數x。

31.11解析:本題考查局部變量和全局變量的區別:局部變量是指作用域在函數級和塊級的變量,全局變量是指作用域在程序級和文件級的變量。本程序首先定義了一個全局變量m=17,m=17的作用域在整個程序內。在fun函數內部定義了一個局部變量m=3,m=3的作用域僅在fun函數內部,通過fun函數返回兩個形參的積再減m。在主函數中,輸出fun(a,b)/m=(5*7-3)/17=1。

32.C

33.IMS(informationManagementSystem)

34.88解析:二維數組可以看成是按矩陣形式排列的,題目中給二維數組賦初值是按行分段賦值的,a[4][4]可以分解為4個一維數組,其數組名分別為a[0]、a[1]、a[2]、a[3],這4個一維數組都有,4個元素,a[0]的元素為a[0][0]、a[0][1]、a[O][2]、a[0][3]。

35.66解析:條件運算符的優先級高于賦值運算符,因此本題先計算關系表達式(*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;循環結束。因此輸出z的結果為6。

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

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

38.p->dataqp->data\r\nq解析:本題考查的是鏈表這一數據結構對結構體變量中的數據的引用。鏈表的特點是結構體變量中有兩個域,一個是數據,一個是指向該結構體變量類型的指針,用以指明鏈表的下一個結點。

39.aa解析:本題考查的是文件的打開方式。要向文本文件的末尾續寫內容,需要使用方式“a”(追加)打開文件。

40.x[O]x[O]x[O]\r\nx[O]解析:根據題意,f()函數要“將其中最小的數與第一個數對換,把最大的數與最后一個數對換”,而填空處的上一行語句正是使用交換算法,將下標為p0的元素與數組x的最后一個元素(n個元素的數組,其最后一個元素的下標為n-1)交換。所以不難得知,填空所在行的語句是要將下標為p1的元素與數組x的第1個元素交換。故兩個空都應該填x[0]。

41.A解析:本題考查switch語句。while中的表達式判斷用getchar函數從鍵盤接收的字符是否是回車符,若不是,則執行switch多分支選擇語句,根據表達式c-'2'的值進行分支選擇;函數putchar是在屏幕上輸出一個字符,最后的結果應當為668977。

42.C解析:如果沒有指明函數值類型,則默認函數返回值的類型為int型。注意:順序程序結構的執行過程。

43.D解析:x變量定義為無符號整型。格式控制符d是輸出帶符號的十進制整數,即輸出-1。65535在內存中各位都為1,作為帶符號數輸出時最高位為1即數值為負。在內存中數據都以其補碼形式保存,11111111變為原碼為10000001即-1。

44.A解析:引用—個數組元素,可以用:(1)下標法,如a[i]形式;(2)指針法,如*(a+i)或*(p+i)。數組的下標從0開始,值為3的數組元素是a[2]。B、C的內容為a[3],D將[2]前自加,結果為4。

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

46.A解析:本題考核的知識點是函數聲明的應用。函數聲明是對所用到的函數的特征進行必要的聲明,編譯系統以函數聲明中給出的信息為依據,對調用表達式進行檢測,以保證調用表達式與函數之間的參數正確傳遞。函數聲明的一般格式為:

類型標識符函數名(類型標識符形參…);

這些信息就是函數定義中的第一行的內容。這里形參的名字是不重要的,重要的是類型標識符,函數聲明中也可以不寫形參名只寫該形參的聲明類型,但不能只寫形參名而不寫該形參的類型。本題中,選項A中doublemyadd(doublea,b),沒寫出形參b的類型,故選項A不正確。所以,4個選項中選項A符合題意。

47.D

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

49.B解析:函數中將指針變量ptr1和ptr2中的值交換,而不是交換指針ptr1和ptr2所指變量中的值。

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

51.D解析:一個C語言的源程序(后綴名為.c)在經過編譯器編譯后,先生成一個匯編語言程序,然后由編譯程序再將匯編語言程序翻譯成機器指令程序,即目標程序(后綴名為.obj),目標程序不可以直接運行,它要和庫函數或其它目標程序連接成可執行文件(后綴名為.exe)后方可運行。故本題答案為D)。

52.C解析:本題考查數據庫的關系代數運算。R表中只有一個域名A,有兩個記錄(也叫元組),分別是m和n;S表中有兩個域名,分別是B和C,其所對應的記錄分別為1和3。注意觀察表T,它是由R的第一個記錄依次與S的所有記錄組合,然后再由R的第二個記錄與S的所有記錄組合,形成的一個新表。上述運算恰恰符合關系代數的笛卡兒積運算規則。關系代數中,笛卡兒積運算用“×”來表示。因此,上述運算可以表示為T=R×S。因此,本題的正確答案為C。

53.B解析:數據庫產生的背景就是計算機的應用范圍越來越廣泛,數據量急劇增加,對數據共享的要求越來越高。共享的含義是多個用戶、多種語言、多個應用程序相互覆蓋的使用一些公用的數據集合。在這樣的背景下,為了滿足多用戶、多應用共,享數據的要求,就出現了數據庫技術,以便對數據庫進行管理。因此,數據庫技術的根本目標就是解決數據的共享問題。故選項B正確。

54.C解析:s是一個含有兩個元素的指針數組,pp是一個指向指針變量的指針,s[0]是指向二維數組a行下標為0的元素的首地址,即a[0][0]的地址,s[1]為a[1][0]的地址。pp的值為s[0]的地址。**pp=s[1][1]后,a[0][0]的值將被賦值為a[1][1]的值,執行p=*pp;后,p中將是s[0]的值,最后的輸出語句將輸出地址s[0]所指向的數據,即a[0][0]。

55.B解析:本題對共用體的使用進行了考查。由于共用體所有成員共同占據一段存儲空間,所以對成員變量的賦值,后面的賦值會覆蓋掉前面的賦值,因為s.income=1000;是最后一次成員變量賦值,變量age與變量income共同占據一段存儲空間,所以age的值也為1000。

56.B解析:函數fib內部有兩個遞歸調用,當n=3時,fib(n-1)返回2,fib(n-2)也返回2,所以fib(n-1)+fib(n-2)的值為4。

57.D解析:變量b的初值等于2,所以表達式b<<2表示b的值二進制左移兩位,即擴大4倍,所以變量b的等于8。然后與a的值1進行異或運算,得9。

58.A解析:題面中各變量定義后,指針變量p指向了變量n2所在的存儲單元,指針變量q指向了變量n1所在的存儲單元,要使得n1的值賦n2,可用指針變量q所指向的存儲單元的值賦給指針變量p所指向的存儲單元,即*p=*q。

59.C解析:整數可以用十進制、八進制或十六進制表示,并分為有符號數、無符號數和長整型數,由此可知選項A)錯;選項B),用0386表示八進制錯誤,因為八進制數字為0~7八個數字,含有8是不對的;數字前加“0x”表示十六進制數,所以D)不對。

60.A解析:本題主要考查switch語句的使用方法。switch語句的執行過程為:進入switch結構后,對條件表達式進行運算,然后從上至下去找與條件表達式值相匹配

溫馨提示

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

評論

0/150

提交評論