當前位置:首頁 » 編程語言 » 計算機專業C語言期末考試題
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

計算機專業C語言期末考試題

發布時間: 2022-12-15 01:19:50

㈠ 國家計算機二級c語言考試題

一 、選擇題
(1)下列數據結構中,按先進後出原則組織數據的是
A)線性鏈表
B)棧
C)循環鏈表
D)順序表
正確答案: B

(2)具有3個結點的二叉樹有
A)2種形態
B)4種形態
C)7種形態
D)5種形態
正確答案: D

(3)設有下列二叉樹:
對此二叉樹前序遍歷的結果為
A)ZBTYCPXA
B)ATBZXCYP
C)ZBTACYXP
D)ATBZXCPY
正確答案: B

(4)結構化程序設計主要強調的是
A)程序的規模
B)程序的效率
C)程序設計語言的先進性
D)程序易讀性
正確答案: D

(5)程序的3種基本控制結構是
A)過程、子過程和分程序
B)順序、選擇和重復
C)遞歸、堆棧和隊列
D)調用、返回和轉移
正確答案: B

(6)下列敘述中,不屬於測試的特徵的是
A)測試的挑剔性
B)完全測試的不可能性
C)測試的可靠性
D)測試的經濟性
正確答案: C

(7)需求分析中開發人員要從用戶那裡了解
A)軟體做什麼
B)用戶使用界面
C)輸入的信息
D)軟體的規模
正確答案: A

(8)下列關系模型中,能使經運算後得到的新關系中屬性個數多於原來關系中屬性個數的是
A)選擇
B)連接
C)投影
D)並
正確答案: B

(9)下列敘述中,正確的是
A)用E-R圖能夠表示實體集間一對一的聯系、一對多的聯系和多對多的聯系
B)用E-R圖只能表示實體集之間一對一的聯系
C)用E-R圖只能表示實體集之間一對多的聯系
D)用E-R圖表示的概念數據模型只能轉換為關系數據模型
正確答案: C

(10)"年齡在18~25之間"這種約束是屬於資料庫當中的
A)原子性措施
B)一致性措施
C)完整性措施
D)安全性措施
正確答案: C
11)以下說法錯誤的是
A)高級語言都是用接近人們習慣的自然語言和數學語言作為語言的表達形式
B)計算機只能處理由0和1的代碼構成的二進制指令或數據
C)C語言源程序經過C語言編譯程序編譯之後生成一個後綴為.EXE的二進制文件
D)每一種高級語言都有它對應的編譯程序
正確答案: C

(12)演算法是指為解決某個特定問題而採取的確定且有限的步驟,下面不屬於演算法的五個特性的是
A)有零個輸入或多個輸入
B)高效性
C)有窮性
D)確定性
正確答案: B

(13)已知int a=6; 則執行a+=a-=a*a;語句後,a的值為
A)36
B)0
C)-24
D)-60
正確答案: D

(14)下面各選項中,均是C語言標識符的選項組是
A)forchinato
B)long_123short56_do
C)voinion_342
D)text.txt _023_3ew
正確答案: B

(15)下列表達式中,結果為5的是
A)6*5%6
B)5*-2+15
C)5+75%10
D)6+-2/3
正確答案: B

(16)下列常量中,為不合法的實型常量表示的是
A).0032
B)0.0
C)0.3242E8
D).E3
正確答案: D

(17)關於C語言的主函數描述正確的是
A)C程序可以有多個main函數
B)C程序必有一個而且只能有一個main函數
C)C程序可以沒有main函數
D)C程序的執行不一定在main函數開始執行
正確答案: B

(18)已知int a=1,b=-1;則語句printf("%d\n",(a--,++b));的輸出結果是
A)-1
B)0
C)1
D)語句錯誤
正確答案: B

(19)已知int a,b;double c;則以下語句中錯誤的函數調用是
A)scanf("%d,%x,%lf",&a,&b,&c);
B)scanf("%d,%d,%le",&a,&b,&c);
C)scanf("%o,%x,%o",&a,&b);
D)scanf("%d,%o,%e",&a,&b,&c);
正確答案: D

(20)已知x,y,z均為整型變數,且值均為1,則執行語句++x||++y&&++z;後,表達式x+y的值為
A)1
B)2
C)3
D)4
正確答案: C

㈡ 求一份C語言程序設計的期末考試試題!!!謝謝了

一. 選擇題 (共15題, 每題2分,共30分)

1. 定義結構體的關鍵字是( )

A. union B. enum C.struct D.typedef

2. 設整型變數a為5,使b不為2的表達式是( )

A. b=a/2 B. b=6-(--a) C. b=a%2 D. b=a>3?2:1

3. 下面哪一項是不正確的字元串賦值或賦初值的方法( )

A. char *str; str= 「china」;

B. char str[7]= {『c』, 『h』, 『i』, 『n』, 『a』};

C. char str1[]= 「china」,str2[]=「123」;

D. char str1[10]; str1= 「china」;

4. 以下對二維數組a進行正確初始化的是( )

A. int a[2][3]={{1,2},{3,4},{5,6}}; B. int a[ ][3]={1,2,3,4,5,6};

C. int a[2][ ]={1,2,3,4,5,6}; D. int a[2][ ]={{1,2},{3,4}};

5. 選出下列標識符中不是合法的標識符的是( )

A. hot_do B. cat1 C. _pri D. 2ab

6. 以下說法中正確的是( )

A. C語言程序總是從第一個的函數開始執行

B. 在C語言程序中,要調用的函數必須在main()函數中定義

C. C語言程序總是從main()函數開始執行

D. C語言程序中的main()函數必須放在程序的開始部分

7. 若已定義:int a[9], *p=a;並在以後的語句中未改變p的值,不能表示a[1]地址的表達式為( )

A. p+1 B. a+1 C. a++ D. ++p

8. 若有說明: int i,j=7, *p=&i;, 則與i=j; 等價的語句是( )

A. i= *p; B. *p=*&j; C. i=&j; D. i=* *p;

9. 若變數c為char類型,能正確判斷出c為小寫字母的表達式是( )

A. 『a』<=c<= 『z』 B. (c>= 『a』) || (c<= 『z』)

C. (『a』<=c) and (『z』>=c) D. (c>= 『a』) && (c<= 『z』)

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

main()

{ int a[]={1,2,3,4,5,6,7,8,9}, *p;

p=a;

*(p+3)+=2;

printf( 「%d,%d\n」,*p,*(p+3) ); }

A. 0, 5 B. 1, 6 C. 1, 5 D. 0, 6

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

main()

{ int a=5;

float x=3.14;

a*=x*(『E』- 『A』);

printf(「%f\n」,(float)a); }

A. 62.000000 B. 62.800000 C. 63.000000 D. 62

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

#define f(x) x*x

main()

{ int a=6,b=2,c;

c=f(a)/f(b);

printf(「%d\n」,c); }

A. 9 B. 6 C. 36 D. 18

13. 定義如下變數和數組:int i; int x[3][3]={1,2,3,4,5,6,7,8,9};

則語句for(i=0;i<3;i++) printf("%d ",x[i][2-i]); 的輸出結果是( )

A. 1 5 9 B. 1 4 7 C. 3 5 7 D. 3 6 9

14. 下列程序段的輸出結果是 ( )

void main( )

{ int k;

for (k=1;k<5;k++)

{ if(k%2!=0)

printf( 「#」 );

else

printf(「*」) ; }

}

A. #*#* B . *#*# C. ## D. **

15. 下列程序執行後輸出的結果是( )

int d=1;

fun (int p)

{ int d=5;

d + =p + +;

printf("%d,",d); }

main( )

{ int a=3;

fun(a);

d + = a + +;

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

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

二. 填空題(共7題,每空2分,共30分)

1. 數組 int a[3][5]; 共定義了_______________個元素。

2. 有float f=3.1415927; 則 printf(「%5.4f」, f );輸出的結果是_______________。

3. 下面程序的功能是:輸出 100以內(不包含100)能被 3整除且個位數為 6的所有整數,請填空。

main( )

{ int i;

for(i=1; _______________; i++)

if (_______________)

printf("%d", i);

}

4. 設有「int x=2, y」說明,則逗號表達式「y=x+5,x+y」的值是 _______________

5. 以下是使用指針,進行字元串復制的程序,請填空。

main()

{ char a[]= 「Tsinghua University」, b[30], *p1,*p2;

p1=a;

p2=b;

for(; *p1!= 『_______________』; p1++, p2++)

_______________=_______________;

*p2= 『_______________』;

printf(「string a is:%s\n」,a);

printf(「string b is:%s\n」,b);

}

6. 下面程序用冒泡法對數組a進行降序排序,請填空。

main()

{ int a[5]={4,7,2,5,1};

int i,j,m;

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

for(j=0;j<_______________;j++)

if( _______________< _______________ )

{ m=a[ j];

a[ j]=a[ j+1];

a[ j+1]= m; }

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

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

}

7. 函數fun的功能是:使一個字元串按逆序存放,請填空。

void fun (char str[])

{ char m; int i,j;

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

{ m=str[i];

str[i]= _______________;

str[j-1]=m;

}

printf("the rotated string is %s\n",_______________);

}

㈢ C語言期末考試編程題

1輸入兩個整數a和b,若a和b的平方和大於100,則輸出平方和的百位以上的數字,否則輸出a和 b的和。
要求: 1)輸出結果時說明平方和是大於100還是小於100( >100或<100 )
#include<stdio.h>
int main(){
int a, b, c;
scanf("%d%d", &a, &b);
c = a * a + b * b;
if(c > 100) printf("平方和大於100\n%d\n", c%100);
else printf("平方和小於等於100\n%d\n", a + b);
return 0;
}
2輸入一個整數,判斷是否是5和7的公倍數,若是則輸出:5and7yes,否則再判斷是否是3的倍數,若是3的倍數輸出:3yes,若都不是則輸出:no
#include<stdio.h>
int main(){
int input;
scanf("%d", &input);
if(input % 5 == 0 && input % 7 == 0)printf("5and7yes\n");
else if(input % 3 == 0) printf("3yes\n");
else printf("no\n");
return 0;
}
第三,四題和第二題差不多
5計算公式: [ 2*x x=2
y= [ x*x+1 x<2
[ 2*x*x+3*x+1 x>2
要求: 1)從鍵盤輸入x的值,根據x的值求y的值
2)輸出y的值
#include<stdio.h>
int main(){
int x, y;
scanf("%d", &x);
if(x == 2) y = 2*x;
else if(x < 2) y = x*x+1;
else y = 2 * x * x + 3 * x + 1;
printf("%d\n", y);
return 0;
}
8 和7差不多
下面原理都差不多 用if基本都能搞定 判斷條件就行了 應該LZ能搞定了 東西有點多 -。- 就寫這些吧 其他的就不一一寫了^ ^

㈣ 大一c語言考試題(急)

1、C源程序文件的擴展名是(.C);編譯後生成的文件名後綴是(.OBJ);經過連接後生成文件
名後綴是(.exe);在VC++6.0中用Run命令運行當前程序時,運行的程序擴展名是(.exe)。
2、結構化程序的三種基本結構是(順序、選擇、循環)。
3、整型常量有三種表示方法,它們是(十進制整數)、(八制整數)、(十六整數)。
4、表達式3.5+1/2+56%10的值是(9.5);10/10和10%10的值各是(1和0)。
5、表達式3%3*3的值是(0);5/3*3的值是(3);3*6%4的值是(2)。
6、設intx=12;執行x+=x-=x*x後,x的值是(-264)。
7、表達式k=7,k+=k-=k+1的值是(-2)。
8、語句"printf("%x,%o",16,12);"的輸出結果是(10,14)。
9、設shortx,y;y=(x=3,x+2,++x,x++*2);則x,y的值各是(5,8)。
10、設intx,y,z,t;x=y=z=1;t=++x||++y&&++z;則y的值是(1)。
11、條件10<=x<20或x<=0的C語言表達式是(x>=10&&x<20||x<=0)
12、設a=1,b=2,c=3,d=4;表達式a>b?a:c<d?a:d的值是(1)。
13、在C程序中,用(1)表示邏輯值「真」。
14、表示「x≥y≥z」的C表達式是(x>=y&&y>=z)。
15、設x為int型變數,請寫出一個關系表達式((x%21==0)),用以判斷x同時為3和7的倍數時
,關系表達式的值為真。
16、設ch是字元型變數,判斷ch為英文字母的表達式是:(
ch<='z'&&ch>='a'||ch>='A'&&ch<='Z')。
17、在C語言中參數的傳遞總是採用(單向)傳遞。
18、如果return表達式;中」表達式」的類型與函數類型不一致,則以(函數類型)的類型為准
自動轉換;如果實際參數的類型與形式參數的類型不一致,則以(形式參數)的類型為准自動轉
換。
19、函數形式參數在(調用)時分配內存,(調用結束)時釋放內存。
20、系統總是為數組分配(連續)的一塊內存。
21、字元串的結束標志是(ASCII碼的0)。
22、TC系統為任何指針變數分配的內存是(4)位元組。
23、若有定義:doublex[3][5];則x數組中行下標的下限為(2),列下標的上限為(4)。
24、若有定義intx=3,*p;則使p指向變數x的賦值語句為(p=&x)。
25、在C語言程序中,在函數內部定義的變數稱為(局部變數)。
26、chara[2][10]={「123」,」123456789」},*p[2]={「123」,」123456789」};則(前者)
佔用內存多。
27、structst{charnum[5];inta[4];floatave;}a,*p;則變數a和p在內存各
占(25和4)位元組。
28、unionun{inti;charc;};
structst{intv[4];doublet;unionunk;}w,*pw;pw=&w;
變數w佔用(28)位元組;通過w訪問v[0]的形式是(w.v[0]);通過w訪問成員c的形式是(w.k.c
);通過pw訪問v[0]的全部形式有(pw->v[0],*(pw->v));通過pw訪問成員c的全部形式有(
(pw->k.c))。(實驗驗證,pw->k->c這種書寫有錯誤直接用.也是錯誤)
29、設fp是文件指針,要把字元變數ch的內容寫入文件,可用的語句有(
fputc(ch,fp);fwrite(&ch,1,1,fp);)。
30、fputs(str,fp)函數的功能是(將數據str寫入fp文件流中)。
{29題不能用fputs(&ch,fp);由於ch只有一個字元,如果用這句的話,會因為沒有字元串結束標
志而寫入很長的數據。從實驗中得出。}
涉及到窮舉的題目,像28、29可能沒有列舉完全其他題目都是經過vc++6.0驗證過的。

㈤ 計算機二級C語言測試題及答案解析

2017年計算機二級C語言測試題及答案解析

全國計算機等級考試(National Computer Rank Examination,以下簡稱 NCRE),是經原國家教育委員會(現教育部)批准,由教育部考試中心主辦,面向社會,用於考查非計算機專業應試人員計算機應用知識與技能的全國性計算機水平考試體系。下面是2017年計算機二級C語言測試題及答案解析。歡迎閱讀。

2017年計算機二級C語言測試題及答案解析

1.(A )是構成C語言程序的基本單位。

A、函數

B、過程

C、子程序

D、子常式

2.C語言程序從 C 開始執行。

A、 程序中第一條可執行語句

B、 程序中第一個函數

C、 程序中的main函數

D、包含文件中的第一個函數

3、以下說法中正確的是( C )。

A、C語言程序總是從第一個定義的函數開始執行

B、在C語言程序中,要調用的函數必須在main( )函數中定義

C、C語言程序總是從main( )函數開始執行

D、C語言程序中的main( )函數必須放在程序的開始部分

4.下列關於C語言的說法錯誤的是( B ) 。

A、 C程序的工作過程是編輯、編譯、連接、運行

B、 C語言不區分大小寫。

C、 C程序的三種基本結構是順序、選擇、循環

D、C程序從main函數開始執行

5.下列正確的標識符是(C)。

A、-a1

B、a[i]

C、a2_i

D、int t

5~8題為相同類型題

考點:標識符的命名規則

只能由字母、數字、下劃線構成

數字不能作為標識符的開頭

關鍵字不能作為標識符

選項A中的“-” ,選項B中“[”與“]”不滿足(1);選項D中的int為關鍵字,不滿足(3)

6.下列C語言用戶標識符中合法的是(B )。

A、3ax

B、x

C、case

D、-e2 E)union

選項A中的標識符以數字開頭不滿足(2);選項C,E均為為關鍵字,不滿足(3);選項D中的“-”不滿足(1);

7.下列四組選項中,正確的C語言標識符是( C )。

A、 %x

B、a+b

C、a123

D、123

選項A中的“%” ,選項B中“+”不滿足(1);選項D中的標識符以數字開頭不滿足(2)

8、下列四組字元串中都可以用作C語言程序中的標識符的是( A)。

A、print _3d db8 aBc

B、Iam one_half start$it 3pai

C、str_1 Cpp pow while

D、Pxq My->book line# His.age

選項B中的“”,”$” ,選項D中“>”,”#”,”.”,”-”不滿足(1);選項C中的while為關鍵字,不滿足(3)

9.C語言中的簡單數據類型包括(D )。

A、整型、實型、邏輯型

B、整型、實型、邏輯型、字元型

C、整型、字元型、邏輯型

D、整型、實型、字元型

10.在C語言程序中,表達式5%2的結果是 C 。

A、2.5

B、2

C、1

D、3

%為求余運算符,該運算符只能對整型數據進行運算。且符號與被模數相同。5%2=1; 5%(-2)=1;(-5)%2=-1;(-5)%(-2)=-1;

/為求商運算符,該運算符能夠對整型、字元、浮點等類型的數據進行運算,5/2=2

11.如果int a=3,b=4;則條件表達式"aA、 3

B、 4

C、 0

D、1

詳見教材P97.

表達式1?表達式2:表達式3

先計算表達式1,

若表達式1成立, 則選擇計算表達式2,並表達式2的值作為整個大表達式的值;

若表達式1不成立,則選擇計算表達式3,並將表達式3的值作為整個大表達式的值

此題中的aa為3,b為4。a12.若int x=2,y=3,z=4 則表達式x

A、4

B、3

C、2

D、0

E)1

13.C語言中,關系表達式和邏輯表達式的值是( B ) 。

A、0

B、 0或1

C、 1

D、‘T’或’F’

14. 下面( D )表達式的值為4.

A、 11/3

B、 11.0/3

C、 (float)11/3

D、 (int)(11.0/3+0.5)

14~16題為同一類型

詳見教材P54~56.

(1)相同數據類型的元素進行數學運算(+、-、*、/)得到結果還保持原數據類型。

(2)不同數據類型的元素進行數學運算,先要統一數據類型,統一的標準是低精度類型轉換為高精度的數據類型。

選項A,11與3為兩個整數,11/3結果的數據類型也應為整數,因此將3.666666的小數部分全部舍掉,僅保留整數,因此11/3=3.

選項B,11.0為實數,3為整數,因此首先要統一數據類型,將整型數據3轉換為3.0,轉換後數據類型統一為實型數據,選項B變為11.0/3.0,結果的數據類型也應為實型數據,因此選項B 11.0/3=3.666666

選項C,先將整數11強制類型轉換,轉換為實型11.0,因此選項C變為11.0/3,其後計算過程、結果與選項B同

選項D,首先計算11.0/3,其計算過程、結果與選項B同,得到3.666666;再計算3.666666+0.5=4.166666,最後將4.166666強制類型轉換為整型,即將其小數部分全部舍掉,結果為4

15.設整型變數 a=2,則執行下列語句後,浮點型變數b的值不為0.5的是( B)

A、b=1.0/a

B、b=(float)(1/A、

C、b=1/(float)a

D、b=1/(a*1.0)

16. 若“int n; float f=13.8;”,則執行“n=(int)f%3”後,n的值是(A)

A、1

B、4

C、4.333333

D、4.6

“(int)f“表示將f中的值強制類型轉換為整型,即將13.8的小數部分舍掉,轉換為13;然後計算13%3,結果為1,再將結果賦給變數n,因此n的值為1

17. 以下對一維數組a的正確說明是: D

A、char a(10);

B、 int a[];

C、int k=5,a[k];

D、char a[3]={‘a’,’b’,’c’};

詳見教材P143~144,一維數組的定義、初始化

類型符 數組名 [常量表達式]

類型符是指數組中數組元素的類型;數組名要符合標識符命名規則;常量表達式是指數組的長度(數組中包含元素的個數),其值只能是整數,不可以是變數,而且從1開始計數。

選項A,常量表達式只能放在中括弧 [ ]中

選項B,只有在對數組初始化(即賦值)的時候才可以省略數組的長度,B中並未對a進行初始化。

選項C,常量表達式不能為變數。

18.以下能對一維數組a進行初始化的.語句是:( C )

A、int a[5]=(0,1,2,3,4,)

B、 inta(5)={}

C、 int a[3]={0,1,2}

D、 int a{5}={10*1}

詳見教材P145,一維數組的定義、初始化

選項B,D,常量表達式只能放在中括弧 [ ]中

選項A,數組可以看做是若干個相同數據類型元素的有序集合,因此以集合的形式對其初始化,使用{ }對其初始化,選項A用了().

19.在C語言中對一維整型數組的正確定義為 D 。

A、int a(10);

B、int n=10,a[n];

C、int n;a[n];

D、#define N 10

int a[N];

20、已知:int a[10]; 則對a數組元素的正確引用是( D )。

A、a[10]

B、a[3.5]

C、a(5)

D、a[0]

詳見教材P144,數組元素的引用

數組名[下標]

引用數組元素時,[ ]中的下標為邏輯地址下標,只能為整數,可以為變數,且從0開始計數

int a[10]表示定義了一個包含10個整型數據的數組a,數組元素的邏輯地址下標范圍為0~9,即a[0] 表示組中第1個元素; a[1] 表示組中第2個元素; a[2] 表示組中第3個元素; ......;a[9] 表示組中第10個元素.

選項A,超過了數組a的邏輯地址下標范圍;

選項B,邏輯地址下標只能為整數

選項C,邏輯地址下標只能放在[ ]中

21.若有以下數組說明,則i=10;a[a[i]]元素數值是(C)。

int a[12]={1,4,7,10,2,5,8,11,3,6,9,12};

A、10

B、9

C、6

D、5

先算a[a[i]]內層的a[i],由於i=10,因此a[i]即a[10].

a[10]對應下面數組中的元素為9. 因此a[a[i]]即為a[9]

a[9]對應下面數組中的元素為6. 因此a[9]即為6

22.若有說明:int a[][3]={{1,2,3},{4,5},{6,7}}; 則數組a的第一維的大小為: ( B )

A、2

B、3

C、4

D、無確定值

5 7

D、3 6 9

二維數組的一維大小,即指二維數組的行數,在本題中,按行對二維數組賦值,因此內層有幾個大括弧,數組就有幾行

23.對二維數組的正確定義是(C)

詳見教材P149~152,二維數組的定義、初始化

類型符 數組名 [常量表達式][常量表達式]

二維數組可以看做是矩陣

類型符是指數組中數組元素的類型;數組名要符合標識符命名規則;第一個常量表達式是指數組的行數;第二個常量表達式是指數組的列數;常量表達式的值只能是整數,不可以是變數,而且從1開始計數。

一維數組初始化時可以省略數組長度

二維數組初始化時可以省略行數,但不能省略列數

選項A,B,都省略了列數

選項D,不符合二維數組定義的一般形式,行、列常量表達式應該放在不同的[]中

A、int a[ ][ ]={1,2,3,4,5,6};

B、int a[2] []={1,2,3,4,5,6};

C、int a[ ] [3]={1,2,3,4,5,6};

D、int a[2,3]={1,2,3,4,5,6};

24.已知int a[3][4];則對數組元素引用正確的是__C___

A、a[2][4]

B、a[1,3]

C、a[2][0]

D、a(2)(1)

詳見教材P150,數組元素的引用

數組名[下標] [下標]

引用數組元素時,[ ]中的下標為邏輯地址下標,只能為整數,可以為變數,且從0開始計數

第一個[下標]表示行邏輯地址下標,第二個[下標]表示列邏輯地址下標。

本題圖示詳見P149圖6.7

因此a的行邏輯地址范圍0~2;a的列邏輯地址范圍0~3;

選項A,列邏輯地址下標超過范圍

選項B,D,的引用形式不正確。

25.C語言中函數返回值的類型是由 A 決定的.

A、函數定義時指定的類型

B、 return語句中的表達式類型

C、 調用該函數時的實參的數據類型

D、形參的數據類型

26. 在C語言中,函數的數據類型是指(A )

A、 函數返回值的數據類型

B、 函數形參的數據類型

C、 調用該函數時的實參的數據類型

D、任意指定的數據類型

27.在函數調用時,以下說法正確的是( B)

A、函數調用後必須帶回返回值

B、實際參數和形式參數可以同名

C、函數間的數據傳遞不可以使用全局變數

D、主調函數和被調函數總是在同一個文件里

28. 在C語言中,表示靜態存儲類別的關鍵字是: ( C )

A、 auto

B、 register

C、static

D、extern

29.未指定存儲類別的變數,其隱含的存儲類別為(A )。

A、auto

B、static

C、extern

D、register

30. 若有以下說明語句:

struct student

{ int num;

char name[ ];

float score;

}stu;

則下面的敘述不正確的是: (D )

A、 struct是結構體類型的關鍵字

B、 struct student 是用戶定義的結構體類型

C、 num, score都是結構體成員名

D、 stu是用戶定義的結構體類型名

31.若有以下說明語句:

struct date

{ int year;

int month;

int day;

}brithday;

則下面的敘述不正確的是__C___.

A、 struct是聲明結構體類型時用的關鍵字

B、 struct date 是用戶定義的結構體類型名

C、 brithday是用戶定義的結構體類型名

D、year,day 都是結構體成員名

32. 以下對結構變數stul中成員age的非法引用是 B

struct student

{ int age;

int num;

}stu1,*p;

p=&stu1;

A、 stu1.age

B、 student.age

C、 p->age

D、(*p).age

33.設有如下定義:

struck sk

{ int a;

float b;

}data;

int *p;

若要使P指向data中的a域,正確的賦值語句是 C

A、 p=&a;

B、 p=datA、a;

C、p=&datA、a;

D、*p=datA、a;

34.設有以下說明語句:

typedef struct stu

{ int a;

float b;

} stutype;

則下面敘述中錯誤的是( D )。

A、struct是結構類型的關鍵字

B、struct stu是用戶定義的結構類型

C、a和b都是結構成員名

D、stutype是用戶定義的結構體變數名

35.語句int *p;說明了 C 。

A、p是指向一維數組的指針

B、p是指向函數的指針,該函數返回一int型數據

C、p是指向int型數據的指針 // 指針的定義教材P223

D、p是函數名,該函數返回一指向int型數據的指針

36.下列不正確的定義是(A )。

A、int *p=&i,i;

B、int *p,i;

C.int i,*p=&i;

D、int i,*p;

選項A先定義一個整型指針變數p,然後將變數i的地址賦給p。然而此時還未定義變數i因此編譯器無法獲得變數i的地址。(A與C對比,選項C先定義變數i,則在內存中為i分配空間,因此i在內存空間的地址就可以確定了;然後再定義p,此時可以為p賦i的地址,C正確)

37. 若有說明:int n=2,*p=&n,*q=p,則以下非法的賦值語句是: (D )

A、p=q

B、*p=*q

C、n=*q

D、p=n

p,q同為整型指針變數,二者裡面僅能存放整型變數的地址。

選項A,q中為地址,因此可將此地址賦給p

選項B,*p表示p所指向對象n的內容,即一個整數;*q表示q所指向對象的內容,由於在定義q時為其初始化,將p中n的地址給q,因此p中存放n的地址,*q表示q所指向對象n的內容.因此*p=*q 相當於 n=n;

選項C,n=*q 等價於n=n;

選項D,p中只能存放地址,不能將n中的整數值賦給p

38.有語句:int a[10],;則 B 是對指針變數p的正確定義和初始化。

A、int p=*a;

B、int *p=a;

C、int p=&a;

D、int *p=&a;

選項A,a是數組名,不是指針變數名,因此不可用*標注數組名a

選項C,a是數組名,數組名就是地址,無需再用地址符號。而且在定義指針變數p時,應在變數名前加*,標明p是指針變數

選項D,a是數組名,數組名就是地址,無需再用地址符號。

39.若有說明語句“int a[5],*p=a;”,則對數組元素的正確引用是( C )。

A、a[p]

B、p[a]

C、*(p+2)

D、p+2

首先定義一個整型數組a,a的長度為5,然後定義一個指針變數p,並同時對p進行初始化,將數組a的地址賦給p。因此此時p中存放的數組a的首地址,即數組中第一個元素a[0]的地址。

對於數組元素下標的引用(詳見p144), 一般形式 數組名[下標] 其中下標為邏輯地址下標,從0開始計數,方括弧中的下標可以是變數,可以是表達式,但結果一定要是整數。

選項A,p中存放的是地址,不是整數,不能做數組元素的下標

選項B,a是數組名,數組名就是地址,不是整數,不能做數組元素的下標

選項C,(重點!!!詳見p231~234) p+2表示指向同一數組中的下兩個元素的地址,當前p指向a[0],則p+2表示a[2]的地址,因此*(p+2)表示a[2]的內容

40. 有如下程序

int a[10]={1,2,3,4,5,6,7,8,9,10},*P=a;

則數值為9的表達式是 B

A、 *P+9

B、 *(P+8)

C、 *P+=9

D、P+8

(重點!!!詳見p231~234)

首先定義一個整型數組a,a的長度為5,然後定義一個指針變數P,並同時對P進行初始化,將數組a的地址賦給P。因此此時P中存放的數組a的首地址,即數組中第一個元素a[0]的地址。

數組中9對應的是a[8], 選項B,P+8表示數組中後8個元素的地址,即a[8]的地址。*(P+8)則表示該地址內所存放的內容,即a[8]的值。

選項A,*P表示P所指向對象的內容,此時P指向a[0], *P即a[0]的值1. *P+9=1+9=10

選項C,*P表示P所指向對象的內容,此時P指向a[0], *P即a[0]的值。因此*P+=9 即*P =*P+9, 等價於a[0]=a[0]+9.

選項D,P+8表示數組中後8個元素的地址,即a[8]的地址,而非a[8]中的值。

41. 在C語言中,以 D 作為字元串結束標志

A、’ ’

B、’ ’

C、 ’0’

D、’’

42.下列數據中屬於“字元串常量”的是(A )。

A、“a”

B、{ABC}

C、‘abc’

D、‘a’

若干個字元構成字元串

在C語言中,用單引號標識字元;用雙引號標識字元串

選項B,C,分別用{}和’’標識字元串

選項D,標識字元。

43.已知char x[]="hello", y[]={'h','e','a','b','e'};, 則關於兩個數組長度的正確描述是 B .

A、相同

B、x大於y

C、x小於y

D、以上答案都不對

C語言中,字元串後面需要一個結束標志位'',通常系統會自動添加。

對一維數組初始化時可採用字元串的形式(例如本題數組x),也可採用字元集合的形式(例如本題數組y)。在以字元串形式初始化時,數組x不盡要存儲字元串中的字元,還要存儲字元串後的結束標志位,因此數組x的長度為6;在以字元集合形式初始化時,數組y,僅存儲集合中的元素,因此數組y長度為5

;

㈥ 北京工業大學計算機專業近幾年c語言期末考試題

北京工業大學實驗學院2012―2013學年第 一 學期
《計算機導論》(A)卷課程試卷
適用專業:計算機科學與技術 考試方式:機考 考試時間 :2012 年12 月
班級學號 12570219 姓名: 李志偉 成績
得分登記(由閱卷教師填寫)
題號 一 二 三 四
分數
考生須知:
提交考試結果:
編程題,將程序源代碼粘貼到試卷相應題目下端,以學號姓名命名文件。

選擇或填空題(每小題2分共20分)
1.完整的計算機系統應包括( B )。
A.主機和外部設備 B.硬體系統和軟體系統
C.操作系統和應用軟體系統 D.輸入設備和輸出設備
2.以下敘述正確的是 。
A.do-while語句構成的循環不能用其它語句構成的循環來代替。
B.do-while語句構成的循環只能用break語句退出。
C.用do-while語句構成的循環,在while後的表達式為非零時結束循環。
D.用do-while語句構成的循環,在while後的表達式為零時結束循環。
3. C語言中運算對象必須是整型的運算符是 。
A. %=
B. / C. =
D. *
4.將高級語言編寫的程序翻譯成機器語言程序,採用的兩種翻譯方式是
A. 編譯和解釋 B. 編譯和匯編
C. 編譯和鏈接 D. 解釋和匯編
5. 微型計算機系統的中央處理器是由 組成的
A. 內存儲器和控制器 B. 主存儲器和運算器
C. 控制器和運算器 D. 內存儲器.控制器和運算器
6.以下符號在C語言中 不能用作用戶標識符。
A. _256
B. 3char C.
abc D. ds3
7. 計算機能直接執行的程序設計語言是 。
A. C B. BASIC
C. 機器語言 D.匯編語言
8. 下列能正確表示a≥10或a≤0的關系表達式是_______。
A. a>=10or a<=0 B. a>=10 | a<=0
C. a>=10 || a<=0 D. a>=10 && a<=0

9.C語言中用 1 表示邏輯值「真」,用 0 表示邏輯值「假」。

10. 微機中1個位元組表示的二進制位數是 8 位數 。

二. 完成下列各題

1. 下面這個程序用於讀入5個整數,當程序讀入的數據n為正整數時,則顯示該數,請補充程序。(5分)
#include <stdio.h>
void main()
{ int i, n;
for (i=1; i<=5;i++)
{
printf("Pleaseenter n:");
scanf( 「%d」,&n );
if (n > 0)printf(「該整數為:%d」,n );
}
printf("Programis over!\n");
}

2. 改寫下段程序,實現從控制台輸入任意字元如果是大寫轉換成小寫,如果是小寫轉換成大寫,其它字元原樣輸出。(10分)

#include<stdio.h>
void main()
{ char c1,c2;
c1=』A』;
c2=c1+32;
printf("%c\n",c2);
}

答案代碼:
#include <stdio.h>
void main()
{ char c1,c2;
printf("請輸入一個字元:");
scanf("%c",&c1);
if (c1<='z' && c1>='a')
{c2=c1-32;
printf("大寫字母為:%c\n\n",c2);}
else if (c1<='Z' && c1>='A')
{c2=c1+32;
printf("小寫字母為:%c\n\n",c2);
}
else
printf("原字元為:%c\n\n",c1);
}

3. 下列程序有何錯誤?請改正。(10分)
#include<stdio.h>
void main()
{ short x,y,z;
x=200;
y=300;
z=x*y;
printf("%d\n",z);
}

答案代碼:
#include<stdio.h>
void main()
{ int x,y,z;
x=200;
y=300;
z=x*y;
printf("%d\n",z);
}

4. 閱讀程序,補充程序的功能。(10分)
從鍵盤任意輸入一個年號(year),判斷它是否是閏年。若是閏年,輸出「它是閏年」,否則輸出「它不是閏年」。已知符合下列條件之一者是閏年:能被4整除,但不能被100整除。能被400整除。
#include <stdio.h>
void main()
{ int year, flag;
printf("Enteryear:");
scanf("%d",&year );
if((year%4=0&&year%100!=0)||year%400=0)

{ flag =1;
}
else
{ flag = 0;
}
if ( flag=1 )
{
printf("它是閏年\n");
}
else
{
printf("它不是閏年\n");
}
}

三、編寫程序,並調試程序正確運行。
1. 編寫一個程序,從鍵盤輸入某計算機的價格,再輸出該價格打7折後的價格。(15分)

答案代碼:
#include <stdio.h>
#include <windows.h>
int main()
{
float a,b;
printf("輸入一台計算機的價格:");
scanf("%f",&a);
b=0.7*a;
printf("打7折後的價格為:%.1f\n\n",b);
system ("pause");
return 0;
}

2. 從鍵盤輸入一個三位數,求各位數字之和。例如:輸入的三位數是385,輸出結果為3+8+5=16;(15分)
答案代碼:
#include <stdio.h>
#include <windows.h>
#include <string.h>
int main()
{
char a[3];
intb,c,d,e;
printf("請輸入一個三位數:");
scanf("%s",a);
b=a[2]-'0';
c=a[1]-'0';
d=a[0]-'0';
e=b+c+d;
printf("各位數字之和為:%d\n\n",e);
system("pause");
return0;
}

3. 日本一位中學生發現一個奇妙的「定理」,請角古教授證明,而角古教授無能為力,於是產生角古猜想,猜想的內容是:任意自然數,若為偶數除以2,若為奇數則乘以3加1,得到一個新的自然數,按照上面的法則繼續演算,若干次後結果必然為1,請編程驗證。(15分)

答案代碼:
#include <stdio.h>
void main()
{ int a;
printf("輸入一個自然數:");
scanf("%d",&a);
if(a%2==1)
a=a*3+1;
while(a!=1)
{
a=a/2;
}
printf("所得結果為:%d\n",a);
}

我是實驗學院的,這是我們2012大一期末的,希望有幫助,裡面的答案是自己寫的,可忽略

㈦ 求浙江工商大學計算機學院c語言期末試題!!

C語言期末考試試題 二00吧年0四月一二日 星期六 00:二二 一 選擇題(二四分,每小題二分) 一.已知函數fread的調用形式為fread(buffer,size,count,fp),其中buffer代表的是()。 A 存放讀入數據項的存儲區 B 存放讀入數據的地址或指向此地址的指針 C 一個指向所讀文件的文件指針 D 一個整形變數,代表要讀入的數據項總數 二.以下程序的輸出結果為( )。 main( ) { int i=0一0,j=一0; printf("%d,%d\n",i++,j--); } A 一一,9 B 9,一0 C 吧,一0 D 9,9 三.設a為int型變數,執行下列賦值語句後,a的取值分別是( )。 a=一二5.5三四; a=二0.0/三; a=(int)一二5.5二一%四; a=5<<二; A 一二5,陸,三一,一 B 一二5,陸,一,二0 C 一二5,陸.陸陸陸陸陸陸,三一,二0 D 一二5.5三四,陸.陸陸陸陸陸陸,二,二0 四.設i和k都是int類型,則for循環語句( )。 for(i=0,k=-一;k=一;i++,k++) printf("****\n"); A 循環結束的條件不合法 B 循環體一次也不執行 C 循環體只執行一次 D 是無限循環 5.以下程序的輸出結果為( )。 main( ) { char c; int i; for(i=陸5;i<陸吧;i++) { c=i+三二; switch(c) { case 'a': case 'b': case 'c':printf("%c,",c);break; default:printf("end"); } } } A a,b,c,end B a,a,a,end C a,a,a, D a,b,c, 陸.函數調用語句:fseek(fp,-一0L,二);的含義是( )。 A 將文件位置指針從文件末尾處向文件頭的方向移動一0個位元組 B 將文件位置指針從當前位置向文件頭的方向移動一0個位元組 C 將文件位置指針從當前位置向文件末尾方向移動一0個位元組 D 將文件位置指針移到距離文件頭一0個位元組處 漆.以下程序的輸出結果為( )。 main( ) { int i=0,j=0; while(s一[i]!='\0') i++; while(s二[j]!='\0') s一[i++]=s二[j++]; s一[i]=0; printf("%s\n",s一); } A side B country C sidetry D countryside 吧.下列說法不正確的是( )。 A 主函數main中定義的變數在整個文件或程序中有效 B 不同函數中,可以使用相同名字的變數 C 形式參數是局部變數 D 在一個函數內部,可以在復合語句中定義變數,這些變數只在本復合語句中有效 9.在下列程序段中,枚舉變數 c一的值是( )。 enum color { red,yellow,blue=四,green,white}c一; c一=yellow; c一=white; A 一 B 三 C 5 D 陸 一0.設有說明 int (*ptr)();其中標識符ptr是( )。 A 是一個指向整形變數的指針 B 是一個指針,它指向一個函數值是int的函數 C 是一個函數名 D定義不合法 一一.定義由n個指向整形數據的指針組成的數組p,其正確的方式為( )。 A int p; B int (*p)[n]; C int *p[n]; D int (*p)( ); 一二.具有相同類型的指針類型變數p與數組a,不能進行的操作是( )。 A p=a; B *p=a[0]; C p=&a[0]; D p=&a; 二 判斷對錯,對的劃「√」,錯的劃「×」(二0分,每小題二分) 一.參加位運算的數據可以是任何類型的數據。 ( ) 二.若有定義和語句: int a; char c; float f; scanf("%d,%c,%f",&a,&c,&f); 若通過鍵盤輸入:一0 A 一二 5 則a=一0,c=『A』,f=一二.5。 ( ) 三.C語言把文件看作是一個字元(位元組)的序列。 ( ) 四.若有宏定義: #define S(a,b) t=a;a=b;b=t 由於變數t沒定義,所以此宏定義是錯誤的。 ( ) 5.在Turbo C中,下面的定義和語句是合法的: file *fp; fp=fopen("a.txt","r"); ( ) 陸.若有定義: char s[ ]="china"; 則Turbo C系統為數組s開辟陸個位元組的內存單元。 ( ) 漆.若有定義和語句: int a[三][三]={{三,5},{吧,9},{一二,三5}},i,sum=0; for(i=0;i<三;i++) sum+=a[i][二-i]; 則sum=二一。 ( ) 吧.若有定義和語句: struct student { int num; char name[一0]; float score; } s[5]={{一,"lili",9吧.5},{9,"xiaohua",陸陸}},*p=s;printf("%d",*p++); 輸出結果是一。 ( ) 9.在程序中定義了一個結構體類型後,可以多次用它來定義具有該類型的變數。 ( ) 一0.在Turbo C中,此定義和語句是合法的: enum aa{ a=5,b,c}bb; bb=(enum aa)5; ( ) 三 寫出下列程序的運行結果(三陸分,每小題陸分) 一. main( ) { int i=二9,j=陸,k=二,s; s=i+i/j%k-9; //s=i+(i/j)%k-9 printf(「s=%d\n」,s); } 二. main( ) { int x=三一,y=二,s=0; do { s-=x*y; x+=二;y-=三; } while(x%三==0); //先執行,後判斷 printf(「x=%d\ty=%d\ts=%d\n」,x,y,s); } 三. main( ) { int a[陸]={一0,二0,三0,四0,50,陸0},i; invert(a,0,5); for(i=0;i<陸;i++) printf(「%d,」,a[i]); printf(「\n」); } invert(int s[ ],int i,int j) //倒置 { int t; if(i<j) { invert(s,i+一,j-一); //函數自身的嵌套調用,形成循環 t=s[i]; s[i]=s[j]; s[j]=t; } } 四. #include main() { char str[ ]="The C program",c; int i; for(i=二;(c=str[i])!='\0';i++) { switch(c) { case 'g': ++i; break; //由於++i,跳過了g後面的一個字母 case 'o': continue; default: printf(「%c」,c); continue; } printf(「*」); } printf(「\n」); } 5. struct w //結構體 { char low; char high; }; union u //共用體 { struct w byte; short word; }uw; main( ) { int result; uw.word=0x一二三四; printf("word value:%0四x\n",uw.word); printf("high byte:%0二x\n",uw.byte.high); printf("low byte:%0二x\n",uw.byte.low); uw.byte.low=0x漆四; printf("word value:%0四x\n",uw.word); result=uw.word+0x二a三四; printf("the result:%0四x\n",result); } 陸. main() { char *s二="I love China!",**s一=&s二; char *s三,c,*s四="w"; s三=&c; *s三='H'; s二=s二+二; printf("%s\t%c\t%s\t%c\n",s二,*s三,s四,**s一); } 四 閱讀下列程序,在 處填入適當內容,使程序完整(二0分,每個空二分) 一.百馬百擔問題:有一00匹馬,馱一00擔貨,大馬馱三擔,中馬馱二擔,兩匹小馬馱一擔,問大、中、小馬各中國匹? main( ) { int hb,hm,hl,n=0; for(hb=0;hb<=一00;hb+=(一)) for(hm=0;hm<=一00-hb;hm+=(二)) { hl=一00-hb- (三) ; if(hb/三+hm/二+二*(三)==一00) { n++; printf("hb=%d,hm=%d,hl=%d\n",hb/三,hm/二,二*hl); } } printf("n=%d\n",n); } 二.用「起泡法」對輸入的一0個字元排序後按從小到大的次序輸出。 #define N 一0 char str[N]; void main() { int i,flag; for(flag=一;flag==一;) { scanf("%s",str); flag=0; printf("\n"); } sort(___(四)___); for(i=0;i<N;i++) { printf("%c",str[i]); } printf("\n"); } sort(char str[N]) //冒泡排序 { int i,j; char t; for(j=一;j<N;j++) for(i=0;istr[i+一]) { t=str[i]; ____(5)____; ____(陸)____; //交換位置 } } 三.以下程序是一個函數,功能是求二階矩陣(m行n列矩陣)的所有靠外側的各元素值之和。(本程序中二階矩陣用一維數組來表示。) 例如,矩陣為: 三 0 0 三 二 5 漆 三 一 0 四 二 則所有靠外側的各元素值之和為三+0+0+三+二+三+一+0+四+二=一吧。 add(int m,int n,int arr[]) { for(i=0;i<m;i=i+m-一) for(j=0;j<n;j++) sum=sum+____(漆)____; for(j=0;j<n;j=j+n-一) for(i=一;____(吧)____;i++) sum=sum+arr[i*n+j]; return(sum); } 四.用指針作函數參數,編程序求一維數組中的最大和最小的元素值。 #define N 一0 main() { void maxmin(int arr[],int *pt一,int *pt二,int n); int array[N]={一0,漆,一9,二9,四,0,漆,三5,-一陸,二一},*p一,*p二,a,b; p一=&a; p二=&b; maxmin(array,p一,p二,N); printf("max=%d,min=%d",a,b); } void maxmin(int arr[],int *pt一,int *pt二,int n) { int i; *pt一=*pt二=arr[0]; for(i=一;i*pt一) ____(9)____ ; if(arr[i]<*pt二) ____(一0)____ ; } } 答案 一 選擇題(二四分,每小題二分) 一.( B ) 二.( C ) 三.( B ) 四.( D ) 5.( D ) 陸.( A ) 漆.( D ) 吧.( A ) 9.( D ) 一0.( B ) 一一.( C ) 一二.( D ) 二 判斷對錯,對的劃「√」,錯的劃「×」(二0分,每小題二分) 一.( × ) 二.( √ ) 三.( √ ) 四.( × ) 5.( × ) 陸.( √ ) 漆.( √ ) 吧.( × ) 9.( √ ) 一0.( √ ) 三 寫出下列程序的運行結果(三陸分,每小題陸分) 一.s=二0 二.x=三5 y=-四 s=-二9 三.陸0,50,四0,三0,二0,一0, 四.e C pr*am 5.word value:一二三四 陸.love China! H w l high byte:一二 low byte:三四 word value:一二漆四 the result:三ca吧 四 閱讀下列程序,在 處填入適當內容,使程序完整(二0分,每個空二分) 一.(一) 三 (二) 二 (三)hm hl 二.(四) str (5) str[i]=str[i+一] (陸) str[i+一]=t 三.(漆) arr[i*n+j] (吧) i<m-一 四.(9) *ptr一=arr[i] (一0) *ptr二=arr[i

㈧ 大一期末考C語言試題求解答

第一題:#include<stdio.h>

voidmain()

{

inta[10],b[9],i=0;

for(;i<10;i++)

{

printf("請輸入第%d個數",i+1);

scanf("%d",&a[i]);

}

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

b[i-1]=a[i]-a[i-1];

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

{

if(i%3==0)printf(" ");

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

}

}

運行結果:

學習是要用心的,多動腦,多思考學到的東西才是自己的。喔,對了給分喲!!!!!

㈨ 急需數據結構C語言版(清華大學出版社)的期末考試試題及答案

《數據結構》期末考試試卷( A )

一、 選擇題(每小題2分,共24分)
1.計算機識別、存儲和加工處理的對象被統稱為( A )
A.數據 B.數據元素
C.數據結構 D.數據類型
2.棧和隊列都是( A )
A.限制存取位置的線性結構 B.順序存儲的線性結構
C.鏈式存儲的線性結構 D.限制存取位置的非線性結構
3.鏈棧與順序棧相比,比較明顯的優點是( D )
A.插入操作更加方便 B.刪除操作更加方便
C.不會出現下溢的情況 D.不會出現上溢的情況
4.採用兩類不同存儲結構的字元串可分別簡稱為( B )
A.主串和子串 B.順序串和鏈串
C.目標串和模式串 D.變數串和常量串
5. 一個向量第一個元素的存儲地址是100,每個元素的長度為2,則第5個元素的地址是:B
A. 110 B .108
C. 100 D. 120
6.串是一種特殊的線性表,其特殊性體現在:B
A.可以順序存儲 B .數據元素是一個字元
C. 可以鏈接存儲 D. 數據元素可以是多個字元
7.設高度為h的二叉樹上只有度為0和度為2的結點,則此類二叉樹中所包含的結點數至少為: C
A. 2h B .2h-1
C. 2h+1 D. h+1
軟體開發網
8.樹的基本遍歷策略可分為先根遍歷和後根遍歷;二叉樹的基本遍歷策略可分為先序遍歷、中序遍歷和後序遍歷。這里,我們把 由樹轉化得到的二叉樹叫做這棵樹對應的二叉樹。下列結論哪個正確? A
A. 樹的先根遍歷序列與其對應的二叉樹的先序遍歷序列相同
B .樹的後根遍歷序列與其對應的二叉樹的後序遍歷序列相同
C. 樹的先根遍歷序列與其對應的二叉樹的中序遍歷序列相同
D. 以上都不對
9.一個有n個頂點的無向圖最多有多少邊?C
A. n B .n(n-1)
C. n(n-1)/2 D. 2n
10.在一個圖中,所有頂點的度數之和等於所有邊數的多少倍?C
A. 1/2 B .1
C. 2 D. 4
11.當在二叉排序樹中插入一個新結點時,若樹中不存在與待插入結點的關鍵字相同的結點,且新結點的關鍵字小於根結點的關鍵字,則新結點將成為( A )
A.左子樹的葉子結點 B.左子樹的分支結點
C.右子樹的葉子結點 D.右子樹的分支結點
軟體開發網
12.對於哈希函數H(key)=key%13,被稱為同義詞的關鍵字是( D )
A.35和41 B.23和39
C.15和44 D.25和51
二、已知某棵二叉樹的前序遍歷結果為A,B,D,E,G,C,F,H,I,J,其中中序遍歷的結果為D,B,G,E,A,H,F,I,J,C。請畫出二叉的具體結構。(注意要寫出具體步驟)(10分)
原理見課本128頁

三、有圖如下,請寫出從頂點c0出發的深度優先及寬度優先遍歷的結果。(10分)
深度優先;C0-C1-C3-C4-C5-C2
寬度優先:C0-C1-C2-C3-C4-C5
四、有圖如下,按Kruskal演算法求出其最小生成樹。要求寫出完整的步驟。(10分)
原理見課本250頁

五、給定線性表(12,23,45,66,76,88,93,103,166),試寫出在其上進行二分查找關鍵字值12,93,166的過程。並寫出二分查找的演算法。(20分)
0 1 2 3 4 5 6 7 8
12 23 45 66 76 88 93 103 166
過程:
mid=(0+8)/2=4
high=3,low=0 mid=1
high=0,low=0 mid=0(找到12)
high=8,low=5,mid=6(找到93)
high=8,low=7,mid=7
high=8 low=8 mid=8
演算法:見課本84頁上

六、知單鏈表的結點結構為
Data next
下列演算法對帶頭結點的單鏈表L進行簡單選擇排序,使得L中的元素按值從小到大排列。
請在空缺處填入合適的內容,使其成為完整的演算法。 (可用文字說明該演算法的基本思想及執行的過程,10分)
void SelectSort(LinkedList L)
{
LinkedList p,q,min;
DataType rcd;
p= (1) ;
while(p!=NULL) {
min=p;
q=p->next;
while(q!=NULL){
if( (2) )min=q;
q=q->next;
}
if( (3) ){
rcd=p->data;
p->data=min->data;
min->data=rcd;
}
(4) ;
}
}
本題不會。嘿嘿。。。。
七、一個完整的演算法應該具有哪幾個基本性質?分別簡要說明每一性質的含意。(5分)
輸入:
四個基本性質:1.輸入:有零個或多個有外部提供的量作為演算法的輸入
2:輸出:演算法產生至少一個量作為輸出
3.:確定性:組成演算法的每條指令是清晰的,無歧異的。
4.:有限性:演算法中每條指令的執行次數是有限的,執行每條指令的時間也是有限的

八、何謂隊列的"假溢"現象?如何解決?(5分)
隊列的假溢現象是指數組實現的順序隊列中,隊尾指針已到達數組的下表上界產生上溢而隊頭指針之前還有若干 空間閑置的現象。解決的辦法之一是利用循環隊列技術使數組空間的首尾相連。

九、說明並比較文件的各種物理結構。(6分)