2021-2022年遼寧省撫順市全國計算機等級考試C語言程序設計_第1頁
2021-2022年遼寧省撫順市全國計算機等級考試C語言程序設計_第2頁
2021-2022年遼寧省撫順市全國計算機等級考試C語言程序設計_第3頁
2021-2022年遼寧省撫順市全國計算機等級考試C語言程序設計_第4頁
2021-2022年遼寧省撫順市全國計算機等級考試C語言程序設計_第5頁
已閱讀5頁,還剩101頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

2021-2022年遼寧省撫順市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.若有說明inta[][3]={1,2,3,4,5,6,7,8,9},則a數組第一維的大小是()。

A.2B.3C.4D.無確定值

2.以下選項中,當x為大于1的奇數時,值為0的表達式是A.x%2==1B.x/2C.x%2!=0D.x%2==0

3.若d為double型變量,則表達式d=1,d+5,d++的值是()。

A.1B.6.0C.2.0D.1.0

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

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

5.以下選項中,能用作數據常量的是______。A.o115B.0118C.1.5e1.5D.115L

6.

7.以下數據結構中,()是線性結構。

A.有向圖B.棧C.線索二叉樹D.B樹

8.二叉樹的后序排列DBEFCA,中序排列DBAECF,那么對其做先序線索化二叉樹,節點E的線索化指向節點()

A.BCB.ACC.DFD.CF

9.下面關于B樹和B+樹的敘述中,不正確的結論是()。

A.B樹和B+樹都能有效的支持順序查找

B.B樹和B+樹都能有效的支持隨機查找

C.B樹和B+樹都是平衡的多叉樹

D.B樹和B+樹都可用于文件索引結構

10.有以下程序:

程序運行后的輸出結果是()。A.4284B.2870C.2668D.3981

11.判定一個順序棧st(最多元素為MaxSize)為空的條件是()。

A.st->top!B.st->top!C.top==-1D.top==MaxSize

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

A.圖元關系B.數據流C.控制流D.調用關系

13.

14.若有以下定義:chara;intb;floatc;doubled;則表達式a*b+b-c值的類型為()。A.floatB.intC.charD.double

15.有如下程序段:inta[10]={1,2,3,4,5,6,7,8,9,10};int*p=&a[3],b;b=P[5];則b的值是()。

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

16.有以下程序main(){intx,y,z;x=y=1;z=X++,y++,++y;printf("%d,%d,%d\n",x,y,z);}程序運行后的輸出結果是

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

17.若有運算符:>、=、<<、%、sizeof,則它們按優先級(由高至低)的正確排列順序為()

A.%、sizeof、>、<<、=

B.sizeof、%、>、=、<<

C.sizeof、<<、>、%、=

D.sizeof、%、<<、>、=

18.

19.廣義表((a),a)的表頭是()。

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

20.二維數組M的元素是4個字符(每個字符占一個存儲單元)組成的串,行下標i的范圍從0到4,列下標j的范圍從0到5,M按行存儲時元素M[3][5]的起始地址與M按列存儲時元素()的起始地址相同。

A.M[2][4]B.M[3][4]C.M[3][5]D.M[4][4]

二、2.填空題(20題)21.數據的物理結構在計算機存儲空間中的存放形式稱為數據的【】。

22.軟件維護活動包括以下幾類:改正性維護、適應性維護、【】維護和預防性維護。

23.函數fun的返回值是【】

fun(char*a,char*b)

{intnum=0,n=0;

while(*(a+num)!='\0')mm++;

while(b[n]){*(a+num)=b[n];num++;n++;}

returnnum;

}

24.以下說明語句中,【】是結構體類型名。

typedefstruct

{intn;

charch[8];

}PER;

25.以下程序的輸出結果是#include<stdio.h>structstiintx;int*y;}*p;intdt[4]={10,20,30,40};structstaa[4]={50,&dt[0],60,&dt[0],60,&it[0],60,&dt[0],};main(){p=aa;printf("%d\n",++(p->x));}

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

#defineS(x)4*X*x+1

main()

{inti=6,j=8;

printf("%d\n",S(i+i));

}

27.以下程序運行后的輸出結果是【】。

main()

{intx=10,y=20,t=0;

if(x==y)t=x;x=Y;Y=t;

printf(“%d,%d\n”,x,y);

}

28.若想通過以下輸入語句使a=5.0,b=4,c=3,則輸入數據的形式應該是【】。

intb,c;floata;

scanf("%f,%d,c=%d",&a,&b,&c)

29.設有下列程序:

#include<stdio.h>

#include<string.h>

main()

{inti;

chars[10],t[10];

gets(t);

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

{gets(s);

if(strcmp(t,s)<0)strcpy(t,s);

}

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

}

程序運行后,從鍵盤上輸入(<CR>代表回車符):DEF<CR>BADEF<CR>QTHRG<CR>,則程

序的輸出結果是______。

30.設有以下結構類型說明和變量定義,則變量a在內存所占字節數是【】。

structstud

{charnum[6];

ints[4];

doubleave;

}a,*p;

31.下列循環的循環次數是______。

intk=2;

while(k=0)

printf["%d",k);

k--;

printf("\n");

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

fun(intx)

{if(x/2>0)fun(x/2);

printf("%d",x);

}

main()

{fun(6);}

33.下面程序的功能是:計算1~10之間的奇數之和與偶數之和,請填空。

#include<stdio.h>

main()

{inta,b,c,i;

a=c=0;

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

{a+=i;

【】;

c+=b;}

printf("偶數之和=%d\n",a);

printf("奇數之和=%d\n",c-11);}

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

main()

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

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

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

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

}

35.下列程序將二維數組a的行和列元素互換后存放到另一個二維數組b中。請填空。

main()

{inta[2][3]={{1,2,3},{4,5}},b[3][2],i,j;

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

{for(j=0;j<3;j++)

}

}

36.在循環中,continue語句與break語句的區別是:______語句只是結束本次循環,然后進行循環的條件判定。

37.設有以下定義的語句:

inta[3][2]={10,20,30,40,50,60},(*p)[2];

p=a;

則*(*(P+2)+1)值為【】。

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

intk=0;

voidfun(intm)

{m+=k;k+=m;

printf("m=%dk=%d",m,k++)

}

main()

{inti=4;

fun(i++);

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

}

39.【】(黑箱或白箱)測試方法完全不考慮程序的內部結構和內部特征。

40.如果一個工人可管理多個設施,而一個設施只可被一個工人管理,則實體“工人”與實體“設備”之間存在【】聯系。

三、1.選擇題(20題)41.設有數組定義:chararray[]="China";則數組array所占的空間為()

A.4個字節B.5個字節C.6個字節D.7個字節

42.運行下列程序,若從鍵盤輸入字母“a”,則輸出結果是()。charc;c=getchar();if(c>='a'&&c<='g')c=c+4;elseif(c>='g'&&c<='z')c=c-21;elseprintf("inputerror!\n");putchar(c);

A.fB.tC.eD.d

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

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

44.以下程序的輸出結果是______。#defineTIMES(X)X*Xmain(){inta=16,k=2,m=1;a/=TIMES(k+m)/TIMES(k+m);printf("d\n",a);}

A.16B.2C.9D.1

45.設有定義:charp[]={‘1’,‘2’,‘3’,},*q=p;,以下不能計算出一個char型數據所占字節數的表達式是______。

A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizeof(p[0])

46.設有以下語句:charX=3,y=6,z;z=XY<<2;則2的二進制值是

A.10100B.O0011011C.11100D.11000

47.下列能正確定義一維數組的選項是()。

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

48.以下程序的輸出結果是()main(){inta=5,b=4,c=6,d;printf(”%d\n",d=a>b?(a>c?a:c):(b));}

A.5B.4C.6D.不確定

49.下列敘述中,正確的一條是______。

A.語句int*pt中的*pt是指針變量名

B.運算符*和&都是取變量地址的運算符

C.已知指針變量p指向變量a,則&a和*p值相同,都是變量a的值

D.語句“int*p=a;”等價于“int*p;p=&a[0];”

50.下列對于軟件測試的描述中正確的是()。

A.軟件測試的目的是證明程序是否正確

B.軟件測試的目的是使程序運行結果正確

C.軟件測試的目的是盡可能多地發現程序中的錯誤

D.軟件測試的目的是使程序符合結構化原則

51.關系表中的每一橫行稱為一個()。A.元組B.字段C.屬性D.碼

52.十六進制數FF.1轉換成十進制數是()

A.255.625B.250.1625C.255.0625D.250.0625

53.下列敘述中正確的是

A.C語言中既有邏輯類型也有集合類型

B.C語言中沒有邏輯類型但有集合類型

C.C語言中有邏輯類型但沒有集合類別

D.C語言中既沒有邏輯類型也沒有集合類型

54.有如下程序intfunc(inta,intb){return(a+b);}main(){intx=2,y=5,z=8,r;r=func(func(x,y),z);printf("%d\n",r);}該程序的輸出結果是______。

A.12B.13C.14D.15

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

A.一種數據的邏輯結構可以有多種存儲結構

B.數據的存儲結構與數據的處理效率無關

C.數據的存儲結構與數據的處理效率密切相關

D.數據的存儲結構在計算機中所占的空間不一定是連續的

56.以下能正確定義二維數組的是()。

A.inta[][3];

B.inta[][3]={2*3};

C.inta[][3]={};

D.inta[2][3]={{1},{2},{3,4}}:

57.有以下結構體說明和變量定義,如圖所示,指針p、q、r分別指向此鏈表中的3個連續結點。structnode{intdata;structnode*next;}*p,*q,*r;

現要將q所指結點從鏈表中刪除,同時要保持鏈表的連續,以下不能完成指定操作的語句是

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

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

C.p->next=r;

D.p=q->enxt;

58.以下符合C語言語法的實型常量是()。

A.1.2E0.5B.3.14159EC.5E-3D.E15

59.下列程序的執行結果是_____。main(){intx=23;do{printf("%d",x--);}while(!x);}

A.321B.23C.不輸出任何內容D.陷入死循環

60.下面程序段的運行結果是chara[]="lanuage",*p;p=a;while(*p!='u'){printf("%c",*p-32);p++;}

A.LANGUAGEB.languageC.LAND.langUAGE

四、選擇題(20題)61.若有以下定義:chara;intb;floatc;doubled;則表達式a*b+b-c值的類型為()。A.floatB.intC.charD.double

62.(VC++)若有以下定義,則對b數組元素正確的引用是

intb[2][3]={1,2,3,4,5,6};A.b[1]B.b[0][3]C.b[2][2]D.b[1][1]

63.以下關于簡單程序設計的步驟和順序的說法中正確的是()。

A.確定算法后,整理并寫出文檔,最后進行編碼和上機調試

B.首先確定數據結構,然后確定算法,再編碼,并上機調試,最后整理文檔

C.先編碼和上機調試,在編碼過程中確定算法和數據結構,最后整理文檔

D.先寫好文檔,再根據文檔進行編碼和上機調試,最后確定算法和數據結構

64.下列關于結構型、共用型、枚舉型的定義語句中,正確的是()。

A.structss{intx}

B.unionuu{intx;}xx=5;

C.enumee{intx};

D.struct{intx;};

65.有以下程序:

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

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

66.

67.

68.以下敘述中正確的是

A.用C程序實現的算法必須要有輸入和輸出操作

B.用C程序實現的算法可以沒有輸出但必須要有輸入

C.用C程序實現的算法可以沒有輸入但必須要有輸出

D.用C程序實現的算法可以既沒有輸入也沒有輸出

69.

70.(20)數據庫設計包括兩個方面的設計內容,它們是()

A.概念設計和邏輯設計

B.模式設計和內模式設計

C.內模式設計和物理設計

D.結構特性設計和行為特性設計

71.(68)下列有關數據庫的描述,正確的是______。

A.數據庫是一個DBF文件

B.數據庫是一個關系

C.數據庫是一組文件

D.數據庫是一個結構化的數據集合

72.

73.有以下程序:

main()

{intx=0,y=5,z=3;

while(z-->0&&++x<5?x:y--)y=y-1

Printf("%d,%d,%d\n",x,y,z);

}

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

A.3,2,0B.3,2,-1C.4,3,-1D.3,-1,-2

74.

75.(43)下列關于隊列的敘述中正確的是______。

A.在隊列中只能插入數據

B.在隊列中只能刪除數據

C.隊列是先進先出的線性表

D.隊列是先進后出的線性表

76.有三個關系R、S和t如下:由關系R和s通過運算得到關系T,則所使用的運算為()。

A.笛卡兒積B.交C.并D.自然連接

77.

78.程序設計方法要求在程序設計過程中()。

A.先編制出程序,經調試使程序運行結果正確后再畫出程序的流程圖

B.先編制出程序,經調試使程序運行結果正確后再在程序中的適當位置處加注釋

C.先畫出流程圖,再根據流程圖編制出程序,最后經調試使程序運行結果正確后再在程序中的適當位置處加注釋

D.以上三種說法都不對

79.已知字母A的ASCII碼為十進制的65,下面程序的輸出為()。

voidmain()

{charch1,ch2;

ch1=’A’+’5’-’3’;

ch2=’A’+6-3;

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

}

A.67,DB.B,CC.C,DD.不確定的值

80.有以下程序程序運行后的輸出結果是()。

A.10,l4B.8,11C.7,llD.9,l8

五、程序改錯題(1題)81.下列給定程序的功能是:讀入一個整數n(2<;=n<;=5000),打印它的所有為素數的因子。例如,若輸入整數1234,則應輸出2,617。請修改程序中的錯誤,使程序能得出正確的結果。注意:不要改動main()函數,不能增選或刪行,也不能更改程序的結構。試題程序:

六、程序設計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,編寫函數fun(),其功能是實現B=A+AT,即將矩陣A加上A的轉置,結果存放在矩陣B中。計算結果在main()函數中輸出。舉例如下。注意:部分源程序給出如下。請勿改動主函數main()和其他函數中的任何內容,僅在函數fun()的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>#include<conio.h>#include<stdlib.h>voidfun(inta[3][3],intb[3][3]){}voidmain(){ inta[3][3]={{1,2,3},{4,5,6},{7,8,9}},t[3][3]; inti,j; system(“CLS”); fun(a,t); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf(“%7d”,t[i][j]); printf(“\n”); }}

參考答案

1.B解析:本題考查二維數組第一維的大小如何確定。二維數組第一維的大小由下列規則確定:①當初值的個數能被第二維的常量表達式的值除盡時,所得商數就是第一維的大小:②當初值的個數不能被第二維的常量表達式的值除盡時,第一維的大小等于所得商數加1。

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

3.D

4.D解析:中序遍歷的遞歸算法定義:①遍歷左子樹;②訪問根結點;③遍歷右子樹。前序遍歷的遞歸算法定義:①訪問根結點;②遍歷左子樹;③遍歷右子樹。后序遍歷的遞歸算法定義:①遍歷左子樹;②遍歷右子樹;③訪問根結點。根據前序遍歷的結果可知,a是根結點。由中序遍歷的結果dgbaechf可知,d、g、b是左子樹的結點,e、c、h、f是右子樹的結點。再由前序遍歷的結果bdg可知,b是a左邊子樹的根,由cefh可知,c是a右邊子樹的根。再由中序遍歷的結果dgb可知,d、g是b左邊子樹的結點,b右邊子樹無結點。再由前序遍歷結果dg可知,d為b左子樹的根,g是以d為根的子樹的右結點。至此,a的左子樹已完全弄清楚了。同樣的道理,可以弄清楚以c為根的子樹的結點位置。所以可知后序遍歷的結果是D。

5.D在C語言中,有整型常量、實型常量、字符常量和字符串常量等類型。整型常量和實型常量又稱數值型常量。基本整型常量只能用數字表示,不帶小數點,例如12、-1和0等,在VC6.0中可以在整型常量的后面加—個字母l(L的小寫)或L;實型常量必須用帶小數點的數表示,例如3.14159、-2.71828、0.0等;選項A中字母o不符合要求,選頂B中超出八進制的范圍,選項C中e后面的不為整數,因此選頂D是正確的。

6.D

7.B

8.D

9.A

10.Bfor循環中,i取值為1~100。循環體中,3個if語句必須同時滿足才會輸出x,輸出的x取值為i+3,所以x的取值只能是4到103。x必須滿足以下條件:①x%7==0(x必須是7的倍數);②(x-1)%3==0(x必須是3的倍數+1);③(x-2)%2==0(x必須是2的倍數)。滿足條件③的x取值為7,14,21,28,35,42,49,56,63,70,77,84,91,98;又滿足條件②的x的取值為7,28,49,70,91;又滿足條件①的x的取值為28,70。本題答案為B選項。

11.B

12.C解析:程序流程圖是人們對解決問題的方法、思路或算法的一種描述。其中,圖框表示各種操作的類型,圖框中的文字和符號表示操作的內容,流程線表示操作的先后次序。帶箭頭的線段在數據流程圖中表示數據流。帶箭頭的線段在程序流程圖中表示控制流。題中給出的選項中,在圖元之間用帶有箭頭的線段表示圖元關系。在模塊之間用帶有箭頭的線段表示調用關系。構成程序流程圖的基本圖符及含義:→或↓表示控制流;□表示加工步驟;

表示邏輯條件。

13.B

14.D在表達式a*b+d-c中,double的類型最高,C語言中,由低類型自動向高類型轉換,所以最后的結果一定是double型。

15.C解析:p=&a[3]將指針指向數組a的第4個元素,p[5]則是數組a的第9個元素,而a[8]=9,所以b=9。

16.C解析:整型變量x、y的初值都為1,“x++,y++,++y”是一個逗號表達式,程序執行“z=x++,y++,++y”后,x的值為2,y的值為3,z取豆號表達式中第二個表達式的值,為1。

17.D解析:主要考查運算符的優先級。sizeof的優先級最高,后面的順序是:%、<<、>,優先級最低的是“=”。

18.D

19.B

20.B

21.內模式或物理模式或存儲模式內模式或物理模式或存儲模式解析:一個數據庫只有一個內模式,它是數據物理結構和存儲方式的描述,是數據庫內部的表示方法。例如,記錄的存儲方式是順序存儲、索引按照什么方式組織;數據是否壓縮存儲,是否加密等。

22.完善性軟件維護活動包括以下幾類:改正性維護,適應性維護、完善性維護和預防性維護,完善性維護是指為了滿足用戶對軟件提出的新功能與性能要求,需要修改或再開發軟件,以擴充軟件功能、增強軟件性能、改進加工效率、提高軟件的可維護性。

23.字符串a和b的長度之和字符串a和b的長度之和解析:本題首先通過第一個while循環計算字符串a的長度,再通過第二個循環,將字符串a和b相連,最后返回連接后的總長度。

24.PERPER解析:本題中,typedef聲明新的類型名PER來代替已有的類型名,PER代表上面指定的一個結構體類型,此時,也可以用PER來定義變量。

25.C

26.8181解析:,解此類題一定要注意宏替換與函數調用的區別。宏替換是字面上的,在編譯期間就完成了,它只是將實參字符串替換蚌宏中形參出現的位置,得到的新串來替換掉宏調用.。而函數是將實參先計算好,然后將值賦給形參,再執行函數體,整個過程在程序運行時發生。所以本題的宏調用s(1+1)將被替換成表達式4*i+j*i+j+1等于4*6+8*6+8+1=24+48+8+1=81。所以本題輸出81。

27.20020,0解析:在主函數中首先定義了三個整型變量x、y、t,并分別給它們賦初值為10,20,0,接著執行if語句,在if后面括號內的條件表達式中,條件“x==y”即“10==20”不成立,則不執行其后的語句“t=x”,然后退出if語句,順序執行語句x=Y;Y=t;。執行完這兩條語句后x的值變為20,y的值變為0,所以最后輸出x,y的值為20和0。

28.5.04c=35.0,4,c=3解析:scanf(掐式控制,地址列表),如果在“格式控制”字符串中除了格式說明以外還有其他字符,則在輸入數據時應輸入與這些字符相同的字符。所以此題中輸入數據的形式是5.04,c=3。

29.QTHRGQTHRG解析:函數strcmp(t,s)用來比較t和s所指字符串的大小,若t>s,則函數值大于0;若t=s,則函數值等于0:若t<s,則函數值小于0。函數strcpy(t,s)的功能是,把字符數組s所指字符串的內容復制到字符數組t所指存儲空間中。本題中,t[10]='CDEF'。第一次循環,s[10]='BADEF',if語句的控制條件strcmp(t,s)<0不成立,接著執行第二次循環,s='QTHRG',if語句的控制條件strcmp(t,s)<0成立,執行下列的語句,將字符數組s所指字符串的內容復制到字符數組t所指存儲空間中,然后輸出字符數組t。

30.22

31.00解析:解答本題需要注意表達式“k=0”,它是賦值表達式而不是關系表達式,不論k為何值,表達式k=0總會使k為0,所以不能進入循環。

32.136136解析:本題考核的知識點是函數遞歸。主函數調用函數fun(6),由于6/2>0為真遞歸調用fun(3),接著遞歸調用fun(1),輸出1,返回上一層輸出3,在返回上一層輸出6。故空格處應該填136。

33.b=i+1b=i+1解析:本題考查了for循環語句的執行過程。i+=2是修正表達式,執行一次循環體后i的值就增加2,i的初始值為0,每次加2之后和累加至a,所以a的值就是1~10之間的偶數之后;b的值是1~11之間的奇數和,但在輸出b值時c去掉多加的11,即為1~10之間的奇數之和。

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

35.b[j][i]=a[i][j]b[j][i]=a[i][j]解析:本題考查二維數組的基本知識。它是要將一個二維數組,的行和列元素互換后存放到另一個二維數組b中,只要將數組a的行標和列標互換,然后賦給數組b即可。

36.continuecontinue解析:continue語句只是結束本次循環,然后進行循環的條件判定。break語句是終止整個循環的執行,不再進行條件判定。

37.6060解析:p是指向整型數組的指針變量,p=a使得p指向數組a的第1行。p+2是數組a第3行的地址,*(p+2)是數組a第3行{50,60},其實*(p+2)為數組a第3行的首地址,*(p+2)+1為數組a第3行第2個元素的地址,那么*(*(P+2)+1)就是數組a第3行第2個元素,即60。

38.m=4k=4i=5k=5m=4k=4i=5k=5解析:main()函數首先定義了1個變量i,并初始化為4。然后用表達式i++的值為實參調用函數fun(),因為后綴”表達式的值為增1之前的值,故此時傳遞給函數的參數m值為4。fun()函數中,首先讓形參m自增k,由于此時k還是0,所以m不變,然后讓k自增m,執行后k的值和m相同為4。最后fun()函數輸出m和k廿的值,兩個值都是4,故首先輸出了“m=4k=4”,輸出完后,k自增1(k變為5)。fun()函數執行完畢,返回main()函數中,此時i會被自增1變為5,故接著又輸出的i和k的值都是5。故最終輸出結果是“m=4k=4i=5k=5”。

39.黑箱黑箱解析:本題考查了軟件測試中的黑箱測試。黑箱測試是根據程序規格說明所規定的功能來設計測試用例,它不考慮程序的內部結構和處理過程。常用的黑箱測試技術分為等價類劃分、邊界分析、錯誤猜測以及因果圖等。

40.一對多或1:N實體之間的對應關系稱為聯系,它反映現實世界事物之間的相互關聯。兩個實體間的聯系可以歸結為三種類型:一對一聯系表現為某一實體與另一實體一一對應相關聯;一對多聯系表現為某一實體與相關多個實體相關聯;多對多聯系表現為多個實體與相關多個實體相關聯。

41.C解析:在給數組賦值時,可以用一個字符串作為初值,這種方法直觀、方便,而且符合人們的習慣。數組array的長度不是5,而是6,這點必須要注意。因為字符串常量的最后由系統加上一個'\\0',因此,上面的初始化與下面的等價:

Chararray[]={'C','h','i','n','a','\\0'};

42.C解析:首先,getchar函數通過鍵盤讀入字符'a',即c='a',(其實c得到的是字符a的ASCII碼值),然后判斷if語句的控制條件,發現'a'>='a'&&'a'<='g'成立,則執行下一步列的語句,c=c+4,c得到的是字符e的ASCII碼值,退出if語句,通過putchar函數輸出字符e。

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

44.B解析:宏定義的作用是進行字符的替換,應先將賦值語句的右邊進行宏替換,即等號右邊為:k+m*k+m/k+m*k+m=2+1*2+1/2+1*2+1=2+2+0+2+1=7,然后計算a/=7,即a=a/7=16/7=2。

45.A解析:本題考查的重點是sizeof()的運用。sizeof用于返回其操作數(變量、類型)相對應數據類型的字節數。因此,選項A是錯誤的,因為p是一個地址,它既不是一個數據類型,也不是數據變量。

46.B解析:本題考查兩個位運算符。

按位異或運算符“^”是雙目運算符。其功能是參與運算的兩數各對應的二進位相異或,當兩對應的二進位相異時,結果為1。

左移運算符“<<”是雙目運算符。其功能把“<<”左邊的運算數的各二進位全部左移若干位,由“<<”右邊的數指定移動的位數,高位丟棄,低位補0。并且“<<”運算符的優先級高干“^”。

47.B解析:在定義數組時,如果賦給的初始值個數大于數值的長度,這樣就會越界,因此選項A)錯誤;選項C)中定義的是一個字符變量C;選項D)中整型數組,中只能存儲整型數據,而不能存儲字符串常量“0123”。

48.C

49.D

50.C解析:關于軟件測試的目的,GrenfordJ.Myers在《TheArtofSoftwareTesting》一書中給出了深刻的闡述:軟件測試是為了發現錯誤而執行程序的過程;一個好的測試用例是指很可能找到迄今為止尚未發現的錯誤的用例;一個成功的測試是發現了至今尚未發現的錯誤的測試。整體來說,軟件測試的目的就是盡可能多地發現程序中的錯誤。本題答案為C。

51.A解析:關系表中,每一行稱為一個元組,對應表中的一條記錄;每一列稱為表中的一個屬性,對應表中的一個字段;在二維表中凡能惟一標識元組的最小屬性集稱為該表的鍵或碼。

52.C

53.D解析:本題考核的知識點是c語言數據類型.在C語言中沒有邏輯類型,邏輯類型用整型來表示,故選項A和選項C不正確;C語言中沒有集合類型,故選項B不正確。所以,D選項為所選。

54.D解析:調用函數func(x,y),返回x+y,即7;再調用函數func(7,z),返回7+z,即15。

55.BB。【解析】數據的存儲結構分為順序結構和鏈式結構,一個數據的邏輯結構可以有多種存儲結構。順序結構中數據元素所占的存儲空間是連續的,而鏈式存儲結構中,數據元素所占的存儲空間不一定是連續的。數據的存儲結構與數據的處理效率密切相關。

56.B解析:(1)二維數組的定義

二維數組的定義方式為:類型說明符數組名[常量表達式][常量表達式]。

二維數組在內存中是按行優先的順序存放的,即先存放第一行的元素,再存放第二行的元素,依次類推。

(2)二維數組元素的引用

二維數組元素的表示形式為:數組名[下標][下標],下標可以是整型常量或整型表達式其范圍為:0~(常量表達式-1)。

(3)二維數組的初始化

可以用以下方法對二維數組元素初始化:

①分行給二維數組賦初值

例如:inta[2][2]={{1,2},{3,4}};

這種賦值方式比較直觀,把第1個大括號內的數據賦給第1行的元素,第2個大括號內的數據賦給第2行的元素,即按行賦值。

②可以將所有數據寫在一個大括號內,按數組排列的順序對各個元素賦初值。

③可以對部分元素賦初值,沒有初始化的元素值為0。

④如果對全部數組元素賦初值,則定義數組時對第一維的長度可以不指定,但第二維的長度不能省略。

57.D解析:本題考查鏈表結點的刪除。q->next中存放的是r所指結點的首地址,將r所指結點的首地址存于p->next中,則實現刪除q所指結點的功能,并保持鏈表連續,p所指結點與r所指結點相連。

58.C解析:實數在C語言中又稱浮點數,它有兩種表示形式:

①十進制數形式。它由數字和小數點組成(注意必須有小數點)。0.123,.123,123.0,123.,0.0都是十進制數形式。

②指數形式。如123e3或123E3都代表123*103。要注意字母e(或E)之前必須有數字,且e后面的指數必須為整數,如e3,2.1e3.5,.e3,e等都不是合法的指數形式。

59.B

60.C解析:本段程序的作用是輸出字符串“lanuage”中字母u之前的字符,并將其轉化為大寫字母。注意:如果一個字符數組用來作為字符串使用,那么在定義該字符數組時,數組的大小就應該比它將要實際存放的最長字符多一個元素,以存放‘\\0’。

61.D在表達式a*b+d-c中,double的類型最高,C語言中,由低類型自動向高類型轉換,所以最后的結果一定是double型。

62.D這是二維數組,所以A錯\r\n數組是從0開始,所以第一個不能有2,第二個不能有3.所以B,C錯。

63.B\n選項C和D可直接排除,程序是數據結構和算法的組合體,所以是先選擇數據結構,然后繼而選擇相對應的算法,編碼并上機調試,最后整理文檔。

\n

64.D定義語句后必須要分號‘;’,所賦初值放在大括號里。枚舉類型的基礎類型定義在枚舉名的后面,如果沒有顯式聲明,則其類型為int型,無需再次聲明:intx;

65.D第一次循環時,k=1,在switch語句中,先執行default后面的語句,即c=c+k=1,因為沒有break語句,所以不會跳出switch結構,會接著執行case2后面的語句,即c=c+1=2,然后跳出switch;第二次循環時,k=2,直接執行ease2后面的語句,即c=c+1=3,然后跳出switch語句,結束循環,執行輸出語句。

66.D

67.C

68.C算法具有的5個特性是:有窮性、確定性、可行性、有0個或多個輸入、有一個或多個輸出。所以說,用C程序實現的算法可以沒有輸入,但必須要有輸出。因此本題答案選C。

69.A

70.A

71.D

72.C

73.D第一次:x=0,y=5,z=3,z>0,z--=2,++x=1<5,所以執行y--=4,y=y-1=4-1=3;

第二次:x=1,y=4,z=2,z>0,z--=1,++x=2<5,所以執行y--=2,y=y-1=2-1=1;

第三次:x=2,y=3,z=1,z>0,z--=0,++x=3<5,所以執行y--=0,y=y-1=0-1=-1;

第四次:x=3,y=2,z=0,z>0不成立,z--=-1,y--=-2退出循環。

74.B

75.C

76.D自然連接是一種特殊的等值連接,它要求兩個關系中進行比較的分量必須是相同的屬性組,并且在結果中把重復的屬性列去掉,因此根據關系T中的有序組可知關系R與s進行的是自然連接操作,故本題答案為D)。

77.A

78.D解析:在程序設計過程中,一個很重要的環節是首先確定實現各種功能的算法,并且用某種工具將它精確地表達出來。流程圖是其中的工具之一。因此,程序設計的過程應是先畫出流程圖,然后根據流程圖編制出程序。因此,選項A中的說法是錯誤的。程序中的注釋是為了提高程序的可讀性,使程序易于理解、易于維護,注釋必須在編制程序的同時加入。因此,選項B和C中的說法也都是錯誤的。

79.A將字符進行運算時,進行運算的是ASCII值,所以ch1=65+2=67(‘5’與’3’的ASCII值差為2),ch2=65+6-3=68.

80.A第一次循環后,a為4,b為3,第二次循環后,a為7,b為7,第三次循環后,a為10,b為14,故答案為A)。

81.(1)錯誤:Prime(intm);

正確:Prime(intm)

(2)錯誤:if!(m%j)

正確:if(!(m%j))

【解析】(1)第一個標識下面的“Prime(intm);”在程序中顯然是一個函數,因此應將后面的分號去掉。

(2)第二個標識下面的for語句最簡單的應用形式為:for(循環變量賦初值;循環條件;循環變量增值)語句。顯然if語句后面缺少括號,因此,“if!(m%j)”改為“if(!(m%j))”。

本題主要考查標點符號、運算符、基本定義。

82.voidfun(inta[3][3],intb[3][3]){ inti,j; for(i=0;i<3;i++) for(j=0;j<3;j++) b[i][j]=a[i][j]+a[j][i];/*把矩陣a加上a的轉置,存放在矩陣b中*/}行列數相等的二維數組的轉置就是行列互換。即轉置后的第i行第j列正好對應原矩陣的第j行第i列。本題使用兩層循環實現矩陣的轉置,并將計算結果存入矩陣b中,外層循環控制矩陣的行下標,內層循環控制矩陣的列下標。2021-2022年遼寧省撫順市全國計算機等級考試C語言程序設計學校:________班級:________姓名:________考號:________

一、單選題(20題)1.若有說明inta[][3]={1,2,3,4,5,6,7,8,9},則a數組第一維的大小是()。

A.2B.3C.4D.無確定值

2.以下選項中,當x為大于1的奇數時,值為0的表達式是A.x%2==1B.x/2C.x%2!=0D.x%2==0

3.若d為double型變量,則表達式d=1,d+5,d++的值是()。

A.1B.6.0C.2.0D.1.0

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

A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca

5.以下選項中,能用作數據常量的是______。A.o115B.0118C.1.5e1.5D.115L

6.

7.以下數據結構中,()是線性結構。

A.有向圖B.棧C.線索二叉樹D.B樹

8.二叉樹的后序排列DBEFCA,中序排列DBAECF,那么對其做先序線索化二叉樹,節點E的線索化指向節點()

A.BCB.ACC.DFD.CF

9.下面關于B樹和B+樹的敘述中,不正確的結論是()。

A.B樹和B+樹都能有效的支持順序查找

B.B樹和B+樹都能有效的支持隨機查找

C.B樹和B+樹都是平衡的多叉樹

D.B樹和B+樹都可用于文件索引結構

10.有以下程序:

程序運行后的輸出結果是()。A.4284B.2870C.2668D.3981

11.判定一個順序棧st(最多元素為MaxSize)為空的條件是()。

A.st->top!B.st->top!C.top==-1D.top==MaxSize

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

A.圖元關系B.數據流C.控制流D.調用關系

13.

14.若有以下定義:chara;intb;floatc;doubled;則表達式a*b+b-c值的類型為()。A.floatB.intC.charD.double

15.有如下程序段:inta[10]={1,2,3,4,5,6,7,8,9,10};int*p=&a[3],b;b=P[5];則b的值是()。

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

16.有以下程序main(){intx,y,z;x=y=1;z=X++,y++,++y;printf("%d,%d,%d\n",x,y,z);}程序運行后的輸出結果是

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

17.若有運算符:>、=、<<、%、sizeof,則它們按優先級(由高至低)的正確排列順序為()

A.%、sizeof、>、<<、=

B.sizeof、%、>、=、<<

C.sizeof、<<、>、%、=

D.sizeof、%、<<、>、=

18.

19.廣義表((a),a)的表頭是()。

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

20.二維數組M的元素是4個字符(每個字符占一個存儲單元)組成的串,行下標i的范圍從0到4,列下標j的范圍從0到5,M按行存儲時元素M[3][5]的起始地址與M按列存儲時元素()的起始地址相同。

A.M[2][4]B.M[3][4]C.M[3][5]D.M[4][4]

二、2.填空題(20題)21.數據的物理結構在計算機存儲空間中的存放形式稱為數據的【】。

22.軟件維護活動包括以下幾類:改正性維護、適應性維護、【】維護和預防性維護。

23.函數fun的返回值是【】

fun(char*a,char*b)

{intnum=0,n=0;

while(*(a+num)!='\0')mm++;

while(b[n]){*(a+num)=b[n];num++;n++;}

returnnum;

}

24.以下說明語句中,【】是結構體類型名。

typedefstruct

{intn;

charch[8];

}PER;

25.以下程序的輸出結果是#include<stdio.h>structstiintx;int*y;}*p;intdt[4]={10,20,30,40};structstaa[4]={50,&dt[0],60,&dt[0],60,&it[0],60,&dt[0],};main(){p=aa;printf("%d\n",++(p->x));}

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

#defineS(x)4*X*x+1

main()

{inti=6,j=8;

printf("%d\n",S(i+i));

}

27.以下程序運行后的輸出結果是【】。

main()

{intx=10,y=20,t=0;

if(x==y)t=x;x=Y;Y=t;

printf(“%d,%d\n”,x,y);

}

28.若想通過以下輸入語句使a=5.0,b=4,c=3,則輸入數據的形式應該是【】。

intb,c;floata;

scanf("%f,%d,c=%d",&a,&b,&c)

29.設有下列程序:

#include<stdio.h>

#include<string.h>

main()

{inti;

chars[10],t[10];

gets(t);

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

{gets(s);

if(strcmp(t,s)<0)strcpy(t,s);

}

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

}

程序運行后,從鍵盤上輸入(<CR>代表回車符):DEF<CR>BADEF<CR>QTHRG<CR>,則程

序的輸出結果是______。

30.設有以下結構類型說明和變量定義,則變量a在內存所占字節數是【】。

structstud

{charnum[6];

ints[4];

doubleave;

}a,*p;

31.下列循環的循環次數是______。

intk=2;

while(k=0)

printf["%d",k);

k--;

printf("\n");

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

fun(intx)

{if(x/2>0)fun(x/2);

printf("%d",x);

}

main()

{fun(6);}

33.下面程序的功能是:計算1~10之間的奇數之和與偶數之和,請填空。

#include<stdio.h>

main()

{inta,b,c,i;

a=c=0;

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

{a+=i;

【】;

c+=b;}

printf("偶數之和=%d\n",a);

printf("奇數之和=%d\n",c-11);}

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

main()

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

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

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

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

}

35.下列程序將二維數組a的行和列元素互換后存放到另一個二維數組b中。請填空。

main()

{inta[2][3]={{1,2,3},{4,5}},b[3][2],i,j;

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

{for(j=0;j<3;j++)

}

}

36.在循環中,continue語句與break語句的區別是:______語句只是結束本次循環,然后進行循環的條件判定。

37.設有以下定義的語句:

inta[3][2]={10,20,30,40,50,60},(*p)[2];

p=a;

則*(*(P+2)+1)值為【】。

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

intk=0;

voidfun(intm)

{m+=k;k+=m;

printf("m=%dk=%d",m,k++)

}

main()

{inti=4;

fun(i++);

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

}

39.【】(黑箱或白箱)測試方法完全不考慮程序的內部結構和內部特征。

40.如果一個工人可管理多個設施,而一個設施只可被一個工人管理,則實體“工人”與實體“設備”之間存在【】聯系。

三、1.選擇題(20題)41.設有數組定義:chararray[]="China";則數組array所占的空間為()

A.4個字節B.5個字節C.6個字節D.7個字節

42.運行下列程序,若從鍵盤輸入字母“a”,則輸出結果是()。charc;c=getchar();if(c>='a'&&c<='g')c=c+4;elseif(c>='g'&&c<='z')c=c-21;elseprintf("inputerror!\n");putchar(c);

A.fB.tC.eD.d

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

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

44.以下程序的輸出結果是______。#defineTIMES(X)X*Xmain(){inta=16,k=2,m=1;a/=TIMES(k+m)/TIMES(k+m);printf("d\n",a);}

A.16B.2C.9D.1

45.設有定義:charp[]={‘1’,‘2’,‘3’,},*q=p;,以下不能計算出一個char型數據所占字節數的表達式是______。

A.sizeof(p)B.sizeof(char)C.sizeof(*q)D.sizeof(p[0])

46.設有以下語句:charX=3,y=6,z;z=XY<<2;則2的二進制值是

A.10100B.O0011011C.11100D.11000

47.下列能正確定義一維數組的選項是()。

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

48.以下程序的輸出結果是()main(){inta=5,b=4,c=6,d;printf(”%d\n",d=a>b?(a>c?a:c):(b));}

A.5B.4C.6D.不確定

49.下列敘述中,正確的一條是______。

A.語句int*pt中的*pt是指針變量名

B.運算符*和&都是取變量地址的運算符

C.已知指針變量p指向變量a,則&a和*p值相同,都是變量a的值

D.語句“int*p=a;”等價于“int*p;p=&a[0];”

50.下列對于軟件測試的描述中正確的是()。

A.軟件測試的目的是證明程序是否正確

B.軟件測試的目的是使程序運行結果正確

C.軟件測試的目的是盡可能多地發現程序中的錯誤

D.軟件測試的目的是使程序符合結構化原則

51.關系表中的每一橫行稱為一個()。A.元組B.字段C.屬性D.碼

52.十六進制數FF.1轉換成十進制數是()

A.255.625B.250.1625C.255.0625D.250.0625

53.下列敘述中正確的是

A.C語言中既有邏輯類型也有集合類型

B.C語言中沒有邏輯類型但有集合類型

C.C語言中有邏輯類型但沒有集合類別

D.C語言中既沒有邏輯類型也沒有集合類型

54.有如下程序intfunc(inta,intb){return(a+b);}main(){intx=2,y=5,z=8,r;r=func(func(x,y),z);printf("%d\n",r);}該程序的輸出結果是______。

A.12B.13C.14D.15

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

A.一種數據的邏輯結構可以有多種存儲結構

B.數據的存儲結構與數據的處理效率無關

C.數據的存儲結構與數據的處理效率密切相關

D.數據的存儲結構在計算機中所占的空間不一定是連續的

56.以下能正確定義二維數組的是()。

A.inta[][3];

B.inta[][3]={2*3};

C.inta[][3]={};

D.inta[2][3]={{1},{2},{3,4}}:

57.有以下結構體說明和變量定義,如圖所示,指針p、q、r分別指向此鏈表中的3個連續結點。structnode{intdata;structnode*next;}*p,*q,*r;

現要將q所指結點從鏈表中刪除,同時要保持鏈表的連續,以下不能完成指定操作的語句是

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

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

C.p->next=r;

D.p=q->enxt;

58.以下符合C語言語法的實型常量是()。

A.1.2E0.5B.3.14159EC.5E-3D.E15

59.下列程序的執行結果是_____。main(){intx=23;do{printf("%d",x--);}while(!x);}

A.321B.23C.不輸出任何內容D.陷入死循環

60.下面程序段的運行結果是chara[]="lanuage",*p;p=a;while(*p!='u'){printf("%c",*p-32);p++;}

A.LANGUAGEB.languageC.LAND.langUAGE

四、選擇題(20題)61.若有以下定義:chara;intb;floatc;doubled;則表達式a*b+b-c值的類型為()。A.floatB.intC.charD.double

62.(VC++)若有以下定義,則對b數組元素正確的引用是

intb[2][3]={1,2,3,4,5,6};A.b[1]B.b[0][3]C.b[2][2]D.b[1][1]

63.以下關于簡單程序設計的步驟和順序的說法中正確的是()。

A.確定算法后,整理并寫出文檔,最后進行編碼和上機調試

B.首先確定數據結構,然后確定算法,再編碼,并上機調試,最后整理文檔

C.先編碼和上機調試,在編碼過程中確定算法和數據結構,最后整理文檔

D.先寫好文檔,再根據文檔進行編碼和上機調試,最后確定算法和數據結構

64.下列關于結構型、共用型、枚舉型的定義語句中,正確的是()。

A.structss{intx}

B.unionuu{intx;}xx=5;

C.enumee{intx};

D.struct{intx;};

65.有以下程序:

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

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

66.

67.

68.以下敘述中正確的是

A.用C程序實現的算法必須要有輸入和輸出操作

B.用C程序實現的算法可以沒有輸出但必須要有輸入

C.用C程序實現的算法可以沒有輸入但必須要有輸出

D.用C程序實現的算法可以既沒有輸入也沒有輸出

69.

70.(20)數據庫設計包括兩個方面的設計內容,它們是()

A.概念設計和邏輯設計

B.模式設計和內模式設計

C.內模式設計和物理設計

D.結構特性設計和行為特性設計

71.(68)下列有關數據庫的描述,正確的是______。

A.數據庫是一個DBF文件

B.數據庫是一個關系

C.數據庫是一組文件

D.數據庫是一個結構化的數據集合

72.

73.有以下程序:

main()

{intx=0,y=5,z=3;

while(z-->0&&++x<5?x:y--)y=y-1

Printf("%d,%d,%d\n",x,y,z);

}

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

A.3,2,0B.3,2,-1C.4,3,-1D.3,-1,-2

74.

75.(43)下列關于隊列的敘述中正確的是______。

A.在隊列中只能插入數據

B.在隊列中只能刪除數據

C.隊列是先進先出的線性表

D.隊列是先進后出的線性表

76.有三個關系R、S和t如下:由關系R和s通過運算得到關系T,則所使用的運算為()。

A.笛卡兒積B.交C.并D.自然連接

77.

78.程序設計方法要求在程序設計過程中()。

A.先編制出程序,經調試使程序運行結果正確后再畫出程序的流程圖

B.先編制出程序,經調試使程序運行結果正確后再在程序中的適當位置處加注釋

C.先畫出流程圖,再根據流程圖編制出程序,最后經調試使程序運行結果正確后再在程序中的適當位置處加注釋

D.以上三種說法都不對

79.已知字母A的ASCII碼為十進制的65,下面程序的輸出為()。

voidmain()

{charch1,ch2;

ch1=’A’+’5’-’3’;

ch2=’A’+6-3;

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

}

A.67,DB.B,CC.C,DD.不確定的值

80.有以下程序程序運行后的輸出結果是()。

A.10,l4B.8,11C.7,llD.9,l8

五、程序改錯題(1題)81.下列給定程序的功能是:讀入一個整數n(2<;=n<;=5000),打印它的所有為素數的因子。例如,若輸入整數1234,則應輸出2,617。請修改程序中的錯誤,使程序能得出正確的結果。注意:不要改動main()函數,不能增選或刪行,也不能更改程序的結構。試題程序:

六、程序設計題(1題)82.使用VC++2010打開考生文件夾下prog1中的解決方案。此解決方案的項目中包含一個源程序文件prog1.c。在此程序中,編寫函數fun(),其功能是實現B=A+AT,即將矩陣A加上A的轉置,結果存放在矩陣B中。計算結果在main()函數中輸出。舉例如下。注意:部分源程序給出如下。請勿改動主函數main()和其他函數中的任何內容,僅在函數fun()的花括號中填入你編寫的若干語句。試題程序:#include<stdio.h>#include<conio.h>#include<stdlib.h>voidfun(inta[3][3],intb[3][3]){}voidmain(){ inta[3][3]={{1,2,3},{4,5,6},{7,8,9}},t[3][3]; inti,j; system(“CLS”); fun(a,t); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf(“%7d”,t[i][j]); printf(“\n”); }}

參考答案

1.B解析:本題考查二維數組第一維的大小如何確定。二維數組第一維的大小由下列規則確定:①當初值的個數能被第二維的常量表達式的值除盡時,所得商數就是第一維的大小:②當初值的個數不能被第二維的常量表達式的值除盡時,第一維的大小等于所得商數加1。

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

3.D

4.D解析:中序遍歷的遞歸算法定義:①遍歷左子樹;②訪問根結點;③遍歷右子樹。前序遍歷的遞歸算法定義:①訪問根結點;②遍歷左子樹;③遍歷右子樹。后序遍歷的遞歸算法定義:①遍歷左子樹;②遍歷右子樹;③訪問根結點。根據前序遍歷的結果可知,a是根結點。由中序遍歷的結果dgbaechf可知,d、g、b是左子樹的結點,e、c、h、f是右子樹的結點。再由前序遍歷的結果bdg可知,b是a左邊子樹的根,由cefh可知,c是a右邊子樹的根。再由中序遍歷的結果dgb可知,d、g是b左邊子樹的結點,b右邊子樹無結點。再由前序遍歷結果dg可知,d為b左子樹的根,g是以d為根的子樹的右結點。至此,a的左子樹已完全弄清楚了。同樣的道理,可以弄清楚以c為根的子樹的結點位置。所以可知后序遍歷的結果是D。

5.D在C語言中,有整型常量、實型常量、字符常量和字符串常量等類型。整型常量和實型常量又稱數值型常量。基本整型常量只能用數字表示,不帶小數點,例如12、-1和0等,在VC6.0中可以在整型常量的后面加—個字母l(L的小寫)或L;實型常量必須用帶小數點的數表示,例如3.14159、-2.71828、0.0等;選項A中字母o不符合要求,選頂B中超出八進制的范圍,選項C中e后面的不為整數,因此選頂D是正確的。

6.D

7.B

8.D

9.A

10.Bfor循環中,i取值為1~100。循環體中,3個if語句必須同時滿足才會輸出x,輸出的x取值為i+3,所以x的取值只能是4到103。x必須滿足以下條件:①x%7==0(x必須是7的倍數);②(x-1)%3==0(x必須是3的倍數+1);③(x-2)%2==0(x必須是2的倍數)。滿足條件③的x取值為7,14,21,28,35,42,49,56,63,70,77,84,91,98;又滿足條件②的x的取值為7,28,49,70,91;又滿足條件①的x的取值為28,70。本題答案為B選項。

11.B

12.C解析:程序流程圖是人們對解決問題的方法、思路或算法的一種描述。其中,圖框表示各種操作的類型,圖框中的文字和符號表示操作的內容,流程線表示操作的先后次序。帶箭頭的線段在數據流程圖中表示數據流。帶箭頭的線段在程序流程圖中表示控制流。題中給出的選項中,在圖元之間用帶有箭頭的線段表示圖元關系。在模塊之間用帶有箭頭的線段表示調用關系。構成程序流程圖的基本圖符及含義:→或↓表示控制流;□表示加工步驟;

表示邏輯條件。

13.B

14.D在表達式a*b+d-c中,double的類型最高,C語言中,由低類型自動向高類型轉換,所以最后的結果一定是double型。

15.C解析:p=&a[3]將指針指向數組a的第4個元素,p[5]則是數組a的第9個元素,而a[8]=9,所以b=9。

16.C解析:整型變量x、y的初值都為1,“x++,y++,++y”是一個逗號表達式,程序執行“z=x++,y++,++y”后,x的值為2,y的值為3,z取豆號表達式中第二個表達式的值,為1。

17.D解析:主要考查運算符的優先級。sizeof的優先級最高,后面的順序是:%、<<、>,優先級最低的是“=”。

18.D

19.B

20.B

21.內模式或物理模式或存儲模式內模式或物理模式或存儲模式解析:一個數據庫只有一個內模式,它是數據物理結構和存儲方式的描述,是數據庫內部的表示方法。例如,記錄的存儲方式是順序存儲、索引按照什么方式組織;數據是否壓縮存儲,是否加密等。

22.完善性軟件維護活動包括以下幾類:改正性維護,適應性維護、完善性維護和預防性維護,完善性維護是指為了滿足用戶對軟件提出的新功能與性能要求,需要修改或再開發軟件,以擴充軟件功能、增強軟件性能、改進加工效率、提高軟件的可維護性。

23.字符串a和b的長度之和字符串a和b的長度之和解析:本題首先通過第一個while循環計算字符串a的長度,再通過第二個循環,將字符串a和b相連,最后返回連接后的總長度。

24.PERPER解析:本題中,typedef聲明新的類型名PER來代替已有的類型名,PER代表上面指定的一個結構體類型,此時,也可以用PER來定義變量。

25.C

26.8181解析:,解此類題一定要注意宏替換與函數調用的區別。宏替換是字面上的,在編譯期間就完成了,它只是將實參字符串替換蚌宏中形參出現的位置,得到的新串來替換掉宏調用.。而函數是將實參先計算好,然后將值賦給形參,再執行函數體,整個過程在程序運行時發生。所以本題的宏調用s(1+1)將被替換成表達式4*i+j*i+j+1等于4*6+8*6+8+1=24+48+8+1=81。所以本題輸出81。

27.20020,0解析:在主函數中首先定義了三個整型變量x、y、t,并分別給它們賦初值為10,20,0,接著執行if語句,在if后面括號內的條件表達式中,條件“x==y”即“10==20”不成立,則不執行其后的語句“t=x”,然后退出if語句,順序執行語句x=Y;Y=t;。執行完這兩條語句后x的值變為20,y的值變為0,所以最后輸出x,y的值為20和0。

28.5.04c=35.0,4,c=3解析:scanf(掐式控制,地址列表),如果在“格式

溫馨提示

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

評論

0/150

提交評論