Conditions
if - else / switch - case
by 洪翠憶
簡介
如果⋯
發下段考成績單時:
如果退步了⋯
->藏成績單
否則
->乖乖讓家長簽名
當爸媽叫你跑腿時:
「幫忙買2瓶可樂,如果有雪碧的話,買1瓶」
如果架上有雪碧
->買1瓶可樂
否則
->買2瓶可樂
expression(表示式)
- 簡介
- 範例
- and vs or
- 運算子
簡介
- 如果的條件
- true / false //小寫
- 句尾沒分號
舉例
- a == 11 //a是否等於11
- score >= 60
- age >= 20 || bool_married //是否滿20歲或者是否結婚
&&(and) vs ||(or)
- &&須所有條件成立
true && true && true -> true
true && true && true && false -> false
- ||只要有條件成立就可
false && true && true -> true
false && true && false && false -> true
運算子
邏輯運算子:
==(等於), !=(不等於), >(大於), <(小於),
>=(大於等於), <=(小於等於), &&(且), ||(或)
運算子優先級
3
16
圖表來源:https://zh.wikipedia.org/wiki/C%E5%92%8CC%2B%2B%E9%81%8B%E7%AE%97%E5%AD%90
if - else
- 語法
- 舉例
- 練習
語法
if(條件式){
陳述句1;
陳述句2;
}else if(條件式){
陳述句1;
陳述句2;
}else{
陳述句1;
陳述句2;
}
if 條件式:
陳述句1
陳述句2
elif 條件式:
陳述句1
陳述句2
else:
陳述句1
陳述句2
C++
Python
語法補充
if(條件式)
陳述句;
else if(條件式)
陳述句;
else
陳述句;
只有單行時
例子
#include<iostream>
int main(){
int NumberOfMates;
std::cout << "請問目前交往中的對象有幾個?";
std::cin >> NumberOfMates;
if(NumberOfMates > 1){
std::cout << "好渣......";
}else if(NumberOfMates == 1){
std::cout << "好好喔有伴侶";
}else{
std::cout << "早日脫單~";
}
return 0;
}
檢測專情程度
練習(基礎)
題目:請寫出能輸出三個整數中最小數的程式。
輸入:共三個整數。
輸出:三個數字中最小的數。
範例輸入:
5 60 -8
範例輸出:
-8
練習(進階)
題目:老師請三位同學吃午餐,想知道各品項的價格,但同學們只有跟老師說自己吃的品項數量和總額。已知三人都各點一杯可樂,請你幫助老師算出各品項價格。(提示:解方程式)
輸入:共三行正整數,每行有三個值。
第一個值為所吃的米漢堡份數,
第二個為所吃的雞塊份數,
第三個為單人晚餐花費。
輸出:有三種可能。
第一種是只有一組解,請輸出 "RiceBurger: [米漢堡單價], Cola: [可樂單價], ChickenNugget: [雞塊單價]"。
第二種是無限多組解,請輸出 "Too many !!"。
第三種是無解,請輸出 "Are you kidding me ??"。
範例輸入:
0 0 35
1 0 135
0 1 80
範例輸出:
RiceBurger: 100, Cola: 35, ChickenNugget: 45
原題目來源:https://zerojudge.tw/ShowProblem?problemid=b888
基礎題參考答案
#include<iostream>
int main(){
int a, b, c;
std::cin >> a >> b >> c;
if(a < b && a < c){
std::cout << a;
}else if(b < a && b < c){
std::cout << b;
}else{
std::cout << c;
}
return 0;
}
補充解法
#include<iostream>
#include<algorithm>
int main(){
int arr[3];
for(int i=0;i<3;i++){
std::cin >> arr[i];
}
std::sort(arr, arr+3);
std::cout << arr[0];
return 0;
}
進階題參考答案
#include<iostream>
int main(){
int a0, a1, a2, b0, b1, b2, c0, c1, c2;
std::cin >> a0 >> a1 >> a2 >> b0 >> b1 >> b2 >> c0 >> c1 >> c2;
int RiceBurger, Cola, ChickenNugget;
bool val = 1;
if(a0 == 0 && a1 == 0){
Cola = a2;
b2 -= Cola;
c2 -= Cola;
if(b0 == 0){
ChickenNugget = b2;
RiceBurger = (c2 - c1*ChickenNugget) / c0;
}else if(b1 == 0){
RiceBurger = b2;
ChickenNugget = (c2 - c0*RiceBurger) / c1;
}else if(c0 == 0){
ChickenNugget = c2;
RiceBurger = (b2 - b1*ChickenNugget) / b0;
}else if(c1 == 0){
RiceBurger = c2;
ChickenNugget = (b2 - b0*RiceBurger) / b1;
}else{
RiceBurger = (c2/c1 - b2/b1) / (c0/c1 - b0/b1);
ChickenNugget = (b2 - b0*RiceBurger) / b1;
}
}else if(b0 == 0 && b1 == 0){
Cola = b2;
a2 -= Cola;
c2 -= Cola;
if(a0 == 0){
ChickenNugget = a2;
RiceBurger = (c2 - c1*ChickenNugget) / c0;
}else if(a1 == 0){
RiceBurger = a2;
ChickenNugget = (c2 - c0*RiceBurger) / c1;
}else if(c0 == 0){
ChickenNugget = c2;
RiceBurger = (a2 - a1*ChickenNugget) / a0;
}else if(c1 == 0){
RiceBurger = c2;
ChickenNugget = (a2 - a0*RiceBurger) / a1;
}else{
RiceBurger = (c2/c1 - a2/a1) / (c0/c1 - a0/a1);
ChickenNugget = (a2 - a0*RiceBurger) / a1;
}
}else if(c0 == 0 && c1 == 0){
Cola = c2;
b2 -= Cola;
a2 -= Cola;
if(b0 == 0){
ChickenNugget = b2;
RiceBurger = (a2 - a1*ChickenNugget) / a0;
}else if(b1 == 0){
RiceBurger = b2;
ChickenNugget = (a2 - a0*RiceBurger) / a1;
}else if(a0 == 0){
ChickenNugget = a2;
RiceBurger = (b2 - b1*ChickenNugget) / b0;
}else if(a1 == 0){
RiceBurger = a2;
ChickenNugget = (b2 - b0*RiceBurger) / b1;
}else{
RiceBurger = (a2/a1 - b2/b1) / (a0/a1 - b0/b1);
ChickenNugget = (b2 - b0*RiceBurger) / b1;
}
}else{
std::cout << "Too many !!";
val = 0;
}
if(val && (Cola < 0 || RiceBurger < 0 || ChickenNugget < 0)){
std::cout << "Are you kidding me ??";
}else if(val){
std::cout << "RiceBurger: " << RiceBurger << ", Cola: " << Cola << ", ChickenNugget: " << ChickenNugget;
}
return 0;
}
比較整齊的寫法
#include<iostream>
int RiceBurger, Cola, ChickenNugget;
void res(int a, int b[3], int c[3]){
Cola = a;
b[2] -= Cola;
c[2] -= Cola;
if(b[0] == 0){
ChickenNugget = b[2];
RiceBurger = (c[2] - c[1]*ChickenNugget) / c[0];
}else if(b[1] == 0){
RiceBurger = b[2];
ChickenNugget = (c[2] - c[0]*RiceBurger) / c[1];
}else if(c[0] == 0){
ChickenNugget = c[2];
RiceBurger = (b[2] - b[1]*ChickenNugget) / b[0];
}else if(c[1] == 0){
RiceBurger = c[2];
ChickenNugget = (b[2] - b[0]*RiceBurger) / b[1];
}else{
RiceBurger = (c[2]/c[1] - b[2]/b[1]) / (c[0]/c[1] - b[0]/b[1]);
ChickenNugget = (b[2] - b[0]*RiceBurger) / b[1];
}
}
int main(){
int **arr;
arr = new int*[3];
for(int i=0;i<3;i++){
arr[i] = new int[3];
}
for(int i=0;i<3;i++){
for(int j=0;j<3;j++){
std::cin >> arr[i][j];
}
}
bool val = 1;
if(arr[0][0] == 0 && arr[0][1] == 0){
res(arr[0][2], arr[1], arr[2]);
}else if(arr[1][0] == 0 && arr[1][1] == 0){
res(arr[1][2], arr[0], arr[2]);
}else if(arr[2][0] == 0 && arr[2][1] == 0){
res(arr[2][2], arr[1], arr[0]);
}else{
std::cout << "Too many !!";
val = 0;
}
if(val && (Cola < 0 || RiceBurger < 0 || ChickenNugget < 0)){
std::cout << "Are you kidding me ??";
}else if(val){
std::cout << "RiceBurger: " << RiceBurger << ", Cola: " << Cola << ", ChickenNugget: " << ChickenNugget;
}
for(int i=0;i<3;i++){
delete [] arr[i];
}
delete [] arr;
return 0;
}
switch - case
- 語法
- 舉例
語法
switch(變數){
case 值:
陳述句;
break;
case 值:
陳述句;
break;
default:
陳述句;
break;
}
3
9
3
case
case
default
9
8
例子
#include<iostream>
int main(){
int num;
std::cout << "現在要發給誰?";
std::cin >> num;
switch(num){
case 13:
std::cout << "喔耶是我朋友,給他10顆!";
break;
case 17:
std::cout << "哼,討厭的傢伙,給他1顆就好";
break;
default:
std::cout << "給5顆~";
break;
}
return 0;
}
發糖果
ternary operator(三元運算子)
- 語法
- 舉例
語法
條件式 ? true的回傳值 : false的回傳值
例子
#include<iostream>
#include<string>
int main(){
std::string whether;
std::cout << "是否認同「哪裡跌到,就在哪裡躺下」這句話?(y/n)";
std::cin >> whether;
std::cout << (whether=="y" ? "看來我們有同樣的想法" : "好吧,你跟我不一樣");
return 0;
}
遇到困難時
kahoot!
試教
By justhentai
試教
就是試教的簡報啦加油
- 300