1. 程式人生 > >C語言學習 18-11-6

C語言學習 18-11-6

1.列舉型別

1.) 關鍵字 enum
2.) 宣告一個列舉型別

enum AA {ONE, TWO, THREE};
enum BB {FOUR, FIVE=100, SIX};
typedef enum CC {SEVEN, EIGHT, NINE} C;

其中的ONE表示為0,TWO表示為1,THREE表示為2,以下類同。
注意:FIVE表示為100,SIX表示為101。
3.) 宣告一個物件

enum AA a = ONE;
C c = SEVEN;

2.聯合體

1.) 關鍵字 union
2.) 宣告一個聯合體

union AA				typedef union
BB { { int a; int a; char b; char b; short c; short c; }; }B;

3.) 聯合體的大小
聯合體內的所有元素共享同一個空間,該空間為聯合體中所佔空間最大的型別所佔的空間。
例: AA aa; aa.a = 1; printf("%d\n", aa.b);
結果為:1
AA aa; aa.b = 1; printf("%d\n", aa.a);
結果為:亂碼 原因是隻有小端的位元組儲存 0000 0001,其他位元組為空,因此會輸出亂碼。

3.遞迴函式

1.) 遞迴函式是指自己呼叫自己的函式
2.) 使用遞迴函式完成某數的階乘

int Factorial(int num)
{
	if(1 == num)
		return 1;

	return num * Factorial(num-1);
}

3.) 斐波那契數列
斐波那契數列是指這樣的數列:
1 2 3 4 5 6 7 8 9
1 1 2 3 5 8 13 21 34
使用遞迴函式完成斐波那契數列:

int FBNQF(int num)
{
	if(2 >= num)
		return 1;

	return FBNQF(num-2) + FBNQF(num-1);
}

使用迴圈的方法完成斐波那契數列:

int FBNQX(int
num) { int first = 1; int second = 1; int sum = 0; int i; for(i=3; i<=num; i++) { sum = first + second; first = second; second = sum; } return sum; }