# 第二堂社課 --- ## zerojudge ![image](https://hackmd.io/_uploads/SybleFHhex.png) ---- ## zerojudge簡介 zerojudge全稱高中生程式解題系統,是目前台灣已知最廣泛使用的系統,擁有最多中文題目的題庫。 ---- ## 使用說明 ![image](https://hackmd.io/_uploads/H1PExtr2lg.png) ---- ![image](https://hackmd.io/_uploads/r1sLxtHhgg.png) 如果想填學校去找"國"開頭的那排 ---- ![image](https://hackmd.io/_uploads/rJD-WKHhgg.png) ---- ![image](https://hackmd.io/_uploads/rkH7WKHheg.png) 課程代碼 : +cYejX (等等傳到你們桌面) ---- ![image](https://hackmd.io/_uploads/H1aCWFH2gg.png) ---- ![image](https://hackmd.io/_uploads/BkIzzFHhgl.png) ---- ![image](https://hackmd.io/_uploads/Skr4GYB3gl.png) ---- ![image](https://hackmd.io/_uploads/BJH5ftBnxl.png) ---- ![image](https://hackmd.io/_uploads/Bk96GKH3gl.png) ---- ## 其他題目 ![image](https://hackmd.io/_uploads/ryd7XFr2lg.png) ---- ![image](https://hackmd.io/_uploads/Bk8rmYBnee.png) 建議從基礎題目開始寫 但如果你很電的話可以直接去刷APCS的題目 --- ## 關係運算子&邏輯運算子 ---- ## 關係運算子 用來比較兩值的關係(誰大誰小) 比較過後會輸出布林值(對or錯) ---- | 符號 | 意義 | 例子 | | :--------: | :--------: | :--------: | | > | 大於 | 2>1(true) | | < | 小於 | 2<1(false) | | >= | 大於等於 | 2>=1(true) | | <= | 小於等於 | 2<=1(false) | | == | 等於 | 2==1(false) | | != | 不等於 | 2!=1(true) | ---- ## 邏輯運算子 用來在固有條件上做變化(且、或、相反) 比較過後會輸出布林值 ---- | 符號 | 意義 | 例子 | | :--------: | :--------: | :--------: | | && | 且 | 2>1&&2<1(false) | | || | 或 | 2>1||2<1(true) | | ! | 相反 | !(2<1)(true)| ---- ## 判斷看看以下條件式的對與錯 1. ! (2 > 1 && 1 > 1) 2. 2 <= 1 || 1 == 2 3. 1 >= 2 == 0 4. 0 == 0 == 0 ---- ## 解答 1. ! (2 > 1 && 1 > 1) (true) 2. 2 <= 1 || 1 == 2 (false) 3. 1 >= 2 == 0 (true) 4. 0 == 0 == 0 (false) --- ## if...else...判斷式 ---- ## 基本語法 ```cpp= if(條件1){ //陳述 } else if(條件2){ //陳述 } else{ //陳述 } ``` 解答上節課有人好奇的, "//" 和 "/* 註解 */" 是C++裡面的註解方式,不會被執行 ---- ## 範例 ```cpp= #include<iostream> using namespace std; int main(){ int A,B; cin>>A>>B; if(A>B){ cout<<"A>B"<<endl; } else if(A<B){ cout<<"A<B"<<endl; } else{ cout<<"A=B"<<endl; } } ``` ---- ## 範例(更簡潔) ```cpp= #include<iostream> using namespace std; int main(){ int A,B; cin>>A>>B; if(A>B)cout<<"A>B"<<endl; else if(A<B)cout<<"A<B"<<endl; else cout<<"A=B"<<endl; } ``` **請注意:只有陳述句為一行時,大括號{}才可以省略** ---- ## 範例(再濃縮) ```cpp= #include<iostream> using namespace std; int main(){ int A,B; cin>>A>>B; if(A>B)cout<<"A>B"; else if(A<B)cout<<"A<B"; else cout<<"A=B"; cout<<endl;//把endl拉出來統一輸出 } ``` --- ## Q1.比大小 #### 小誠意(ChengYi)、凱凱(KaiKai)跟卷王(Roller)放學後相約打牌,但因為凱凱太菜了,所以決定玩比大小。牌號由小到大依序是1到13,而小誠毅、凱凱和卷王會依序出牌,如果三人出的牌號碼大小相同則平局(No one)。 請判斷這局是誰贏了,並輸出"某某某 is the Champion!!。 輸入範例1: ``` 8 4 13 ``` 輸出範例1: ``` Roller is the Champion!!``` 輸入範例2: ``` 13 13 13 ``` 輸出範例2: ``` No one is the Champion!! ``` ---- ## 解答 ```cpp= #include<iostream> using namespace std; int main(){ int ChengYi,KaiKai,Roller; cin>>ChengYi>>KaiKai>>Roller; if(ChengYi>KaiKai&&ChengYi>Roller){ cout<<"ChengYi is the Champion!!"<<endl; } else if(KaiKai>Chengyi&&KaiKai>Roller){ cout<<"KaiKai is the Champion!!"<<endl; } else if(Roller>Chengyi&&Roller>KaiKai){ cout<<"Roller is the Champion!!"<<endl; } else{ cout<<"No one is the Champion!!"<<endl; } } ``` ---- ## 解答(簡潔+濃縮) ```cpp= #include<iostream> using namespace std; int main(){ int ChengYi,KaiKai,Roller; cin>>ChengYi>>KaiKai>>Roller; if(ChengYi>KaiKai&&ChengYi>Roller)cout<<"ChengYi"; else if(KaiKai>ChengYi&&KaiKai>Roller)cout<<"KaiKai"; else if(Roller>ChengYi&&Roller>KaiKai)cout<<"Roller"; else cout<<"No one"; cout<<" is the Champion!!"<<endl; } ``` --- ## switch...case...判斷式 ---- ## 基本語法 ```cpp= switch (變數/運算式) { case 值1: //陳述 break; case 值2: //陳述 break; default: //陳述 break;//可省略 } ``` ---- ## 範例 ```cpp= #include<iostream> using namespace std; int main(){ int A,B; cin>>A>>B; switch(A+B){ case 1: cout<<"one"; break; case 2: cout<<"two"; break; default: cout<<"IDK"; } cout<<endl; } ``` ---- ## 範例(if...else...版) ```cpp= #include<iostream> using namespace std; int main(){ int A,B; cin>>A>>B; if(A+B==1)cout<<"one"; else if(A+B==2)cout<<"two"; else cout<<"IDK"; cout<<endl; } ``` --- ## Q2.簡易計算機 #### 卷王的資訊老師今天出了一個任務,要求他用switch...case...的語法做出一個可以加減乘除簡易計算機。但因為卷王都在卷數物化生,沒有時間寫,所以就將這個任務交給了你! 說明:輸入三個資料,依序是一個整數、一個符號字元、一個整數,輸出其整數運算結果(無條件捨棄)。如果輸入的符號並非```'+'```、```'-'```、```'*'```、```'/'```,則輸出```"ERROR"``` 輸入範例1:```1+2``` 輸出範例1:```3``` 輸入範例2:```1%2``` 輸出範例2:```ERROR``` ---- ## 解答 ```cpp= #include<iostream> using namespace std; int main(){ int A,B; char C; cin>>A>>C>>B; switch(C){ case '+': cout<<A+B; break; case '-': cout<<A-B; break; case '*': cout<<A*B; break; case '/': cout<<A/B; break; default: cout<<"ERROR"; } cout<<'\n'; } ```