奧林匹亞資訊班
11/30
講師:吳崇維(wayne)
今日目標~
- 指標複習
- 陣列練習
- 泡沫排序法
- 浮點數 / 其他變數類別
指標 (pointer)
recall)以下程式的結果是?
重新理解陣列
當我們宣告 int arr[10];
這時候 arr 是一個指標,
指向arr[0]。
而arr[0], arr[1], ... arr[9]
都是一個整數
arr
recall)以下程式的結果是?
&(取出變數位址)
對於一個變數 (也可以是指標變數) 取出他的位址
其中指標變數可以記住位址
int *p = &x;
p的值就是x的位址
int **q = &p;
q的值就是p的位址
(指標也可以有位址)
*(找出位址主人)
對於一個"位址" , 找出其位址的地方的主人。
常常用在指標變數前面
int x = 1;
int *p = &x;
*p = 3;
這時x就會等於3 (隔空改值)
陣列最後練習~
可愛的潘潘有著一堆石頭,每顆石頭上面都有一個正整數編號。接著,她又利用複製機器把每顆石頭都複製了兩個,而編號當然跟原來那個一樣。
可是有一天,她不小心掉了一顆石頭,現在她想要找出她掉的那一顆石頭的編號。
題目:
輸入:先給你一個數字n 代表有幾顆石頭
接著給你n個數字,代表每一個石頭的編號
輸出:輸出他掉的那一顆石頭編號!
Ex:
8 2 2 1 2 2 2 2 1
Ex:
1
泡沫排序法
問題:排序一個陣列?
Ex: 1 5 3 4 2 -> 1 2 3 4 5
初次接觸演算法
思路:先把最大的放到後面
接著再放第二大的...排序完所有數字!
如何把實際想法換成程式呢?
本次作業:看影片,資料!
浮點數~a.k.a小數
浮點數
相較於整數(int) , 這種類別的數可以記下如: 123.123
有小數點的數字。
一般浮點數有兩種類別:
1) float : 佔4個位元組
2) double:佔8個位元組,較 為精準
Q:如果整數跟浮點數作四則運算呢?
A:採用升級的概念!
類別升級
當一個整數 int x 跟一個 double y 一起運算,x 會先被升級成double (等級較高)
這樣的處理方式可以避免整數自動去掉小數的機制
但是!
不能依賴升級
舉例:如右圖所示,會輸出多少呢?
不能依賴升級
舉例:如右圖所示,會輸出多少呢?
他會輸出1 !
因為 5 / 3 都是整數,因此並沒有升級過,因此啟動整數機制
砍成1之後,再指定給 d
調整小技巧 (1)
對於一個很多整數的運算
在最前面加入 * 1.0
這樣後面的運算就被升級成
double了 !
調整小技巧 (2)
在任何變數前面加上(類別)
就可以強制轉型囉!
調整小技巧 (2)
在任何變數前面加上(類別)
就可以強制轉型囉!
當然這個對變數x, y也行得通
調整小技巧 (3)
在任何變數前面加上(類別)
就可以強制轉型囉!
試試看double -> int
最後注意:
浮點數不能完全精確的表示數字!總會有一點誤差
再一個練習~
連續輸出
1/2, 1/4, 1/8, 1/16 ....
輸出20項!
Homework!
看影片,下次上課重點:)
FeedBack!
一起努力快樂寫程式吧!
class 11/30 陣列及浮點數
By Wayne Wu
class 11/30 陣列及浮點數
- 112