上一章:變數與輸入
下一章:if條件判斷
回目錄:國立科學園區實驗中學C++程式語言自學講義
在上一章,我們學會宣告變數,以及將使用者輸入的資訊存進變數裡
在這一章,我們將學會對變數做各種運算
在輸出的章節,我們學過直接輸出數學運算式
像是cout << 1+2+3
會直接印出6
而這運算式,其實不是只能用固定的數字,而是可以用變數去做運算
例如cout << 3+n
,會依照n
目前所代表的數字,來決定相加後的值為何
至於n
代表的數字為何,則是看程式目前跑到那行時 n 變成什麼值了而定
可能是從使用者輸入的數字,也可能是一開始就設定好的數字
【例題】
小明有n個10元硬幣,請問小明總共有幾元?
以下程式示範將使用者輸入的數乘以10後輸出
int n ;
cin >> n;
cout << n*10 << endl;
不管使用者輸入了什麼數字,這支程式都會將他乘以10以後印出來
當然,如果你要使用不只一個變數也是可以的
【例題】
小明有a元,小華有b元,請問兩人加起來共有幾元?
以下程式示範將輸入的兩個數字加起來
int a, b;
cin >> a;
cin >> b;
cout << a+b << endl;
不管使用者輸入了什麼數字,這支程式都會將它們相加後印出來
由於宣告時的a
和b
都是宣告成整數型態
因此使用者只能夠輸入整數
如果你希望你的加法程式也能夠處理小數的加法
就要將a
和b
宣告成float
的型態
寫題目時,可以依照題意決定要將變數宣告成什麼型態
例如上述範例,因為錢一定是整數,所以可以宣告成int
型態就好
【學生練習題】
+
:和數學的加號相同-
:和數學的減號相同*
:和數學的乘號相同/
:如果是整數除法,就只留下商;如果是小數除法,則是保留一些位數的小數,例如
5 / 2
結果會是2
5.0 / 2.0
結果會是2.5
%
:除法取餘數,例如
5 % 2
結果會是1
10 % 5
結果會是0
7 % 4
結果會是3
()
:和數學的括號相同,括號內的部分優先算。
((1+2)*(3+4))*5
【例題】
小明有m個10元硬幣和n個1元硬幣,請問小明總共有多少錢?
以下程式將示範此運算
int m, n ;
cin >> m ;
cin >> n ;
cout << m*10+n << endl ;
【例題】
小明有n個1元硬幣,請問可以換成幾個10元硬幣? 剩下幾個1元硬幣?
以下程式將示範此運算
int n ;
cin >> n ;
cout << n/10 << " " << n%10 << endl ;
【例題】
小明到美國玩,發現溫度計顯示的是華氏溫度。請問華氏的x度是攝氏的幾度?
以下程式將示範此運算
float f;
cin >> f;
cout << (f-32)*5/9 << endl;
由於答案可能出現小數,所以要宣告成float
的型態來處理
【例題】
以下程式將示範如何將一個4位數拆成個位、十位、百位、千位
int n;
cin >> n;
cout << n%10 ;
cout << (n/10)%10 ;
cout << (n/100)%10 ;
cout << (n/1000)%10 ;
有時候,要處理的問題可能會非常複雜
光是用一個式子表示答案,會讓程式看起來非常亂,且容易寫錯
【例題】
甲有n支鉛筆,乙的鉛筆是甲的2倍再多3支,丙的鉛筆是乙的3倍再少1支,丁的鉛筆比丙還要少5支,請問甲乙丙丁總共有幾支?
以下程式示範非常繁雜的寫法
int ja ;
cin >> ja;
cout << ja+(ja*2+3)+((ja*2+3)*3-1)+(((ja*2+3)*3-1)-5) << endl;
哇咧,真的是太雜了
就算要化簡還要自己用筆算
萬一跑出來的結果不如預期,也很難檢查出自己哪邊寫錯
如果能夠宣告好幾個變數
分別存甲、乙、丙、丁的數量
看起來就會清楚明瞭很多
像是:
(注意 這程式還不完整喔 直接拿去執行的話會跑出怪東西!!)
int ja ;
int yee ;
int bing ;
int ding ;
cin >> ja;
cout << ja + yee + bing + ding ;
問題是,要怎麼讓電腦知道乙是甲的兩倍多三支、丙是乙的三倍少一支,丁比丙少五支呢?
乙丙丁的數量是藉由甲的數量運算而來,又不是讓使用者輸入的
到底該怎麼讓yee
、bing
、ding
這三個變數存入正確的值呢?
現在要來介紹一個新的符號:=
雖然形狀長得像數學的「等號」,但它和數學的等號沒有關係
它所代表的意思是「變成」、「代入」、「存入」的意思
例如
int a ;
a = 3 ;
cout << a << endl;
如此一來,不需要cin>>a
,也不需要叫使用者輸入3
就直接讓a
這個變數變成3
這個數字了
可以利用cout
印出來看看,是否真的會印出3
當然,也可以利用運算式存入變數,例如
a = 2*3 ;
這麼一來a
這個變數就會是6
這個數字
也可以將另一個變數的值拿來使用,例如
a = 3 ;
b = a+1 ;
a = 999 ;
這麼一來b
這個變數就會是4
這個數字
就算後來a
變成999
了,也不會影響到b
也可以拿自己原本的值來使用,例如
a = 3 ;
a = a+1 ;
如此一來a
就會變成4
【例題】
甲有n支鉛筆,乙的鉛筆是甲的2倍再多3支,丙的鉛筆是乙的3倍再少1支,丁的鉛筆比丙還要少5支,請問甲乙丙丁總共有幾支?
以下程式示範清楚簡單的寫法
int ja ;
int yee ;
int bing ;
int ding ;
cin >> ja;
yee = ja*2+3 ;
bing = yee*3-1 ;
ding = bing-5 ;
cout << ja + yee + bing + ding << endl ;
如果一個變數一開始就有值的話
可以在宣告的時候就直接指定
例如
int a ;
a = 5 ;
可以寫成
int a = 5 ;
當變數運算會用到自己原本的舊值時,有較快速的寫法,例如
a = a+1 ;
b = b-5 ;
c = c*3 ;
d = d/(a+b) ;
可以寫成
a += 1 ;
b -= 5 ;
c *= 3 ;
d /= (a+b) ;
請注意運算符號跟等於之間不能有空格
另外,如果變數後面接的運算元是1的話
還可以這樣寫
例如
a = a+1 ;
b = b-1 ;
可以寫成
a++ ;
b-- ;
請注意兩個加號或兩個減號之間不能有空格
上一章:變數與輸入
下一章:if條件判斷
回目錄:國立科學園區實驗中學C++程式語言自學講義