搭配green judge解題系統
Special thanks to 台中女中sagit老師 <(_ _)>
上一章:雜項:其他資料型態、函式庫、格式化輸出
下一章:陣列
回目錄:國立科學園區實驗中學C++程式語言自學講義
回顧我們目前寫過的程式
都只能做一次性的運算
例如算加法的程式
每次輸入完2個數字,看到電腦算出的相加結果後,程式就結束了
如果想要再算另一組加法,就要重新執行程式
如果有很多組數字想要相加,那就要重新執行好幾次程式
為了要解決這個問題
我們可以使用「迴圈」來讓程式重複執行
以下提供幾種常見的方法
一開始就先告訴你總共有幾組輸入
【例題】
輸入一個n,代表有n組「A和B」
接下來會輸入n次的「A、B」,請每次都將AB相加後輸出
題目說會先給一個n來表示要做幾次運算
所以先讀入一個n
int n;
cin >> n;
接下來要創造一個會被重複n次的迴圈
迴圈裡面讀入A和B,並將相加後的結果輸出
要讓迴圈固定跑n次
有兩種做法
一種用while
while(n--)
{
}
另一種則是用for
int i;
for(i=0;i<n;i++){
}
只要把讀入A和B的程式放在迴圈裡就可以了
這邊提供其中一種範例
int n;
int A, B;
cin >> n;
while(n--)
{
cin >> A >> B;
cout << A+B << endl;
}
【學生練習題】
一開始並不知道總共有幾組輸入
而是用輸入某個特定的值來表示「結束了」
【例題】
輸入資料有多組,每一組有兩個正整數 A、B
當A和B皆為0時,代表輸入結束,不需要對這組做處理
一樣可以用while迴圈來解決
這邊提供兩種範例
1.在迴圈的最後面讀入下一次的A和B
int n;
int A, B;
cin >> A >> B;
while(A!=0 || B!=0){
cout << A+B << endl;
cin >> A >> B;
}
2.利用break (break的效果為直接離開迴圈)
int n;
int A, B;
while(1){ //1代表的是「一定符合」,所以寫while(1)。其實把1換成任何數字都可以,只有0是代表「一定不符合」
cin >> A >> B;
if(A==0&&B==0) break; //如果A和B皆為0,直接離開迴圈
cout << A+B << endl;
}
【學生練習題】
一開始並不知道總共有幾組輸入
而是用EOF鍵表示「結束了」
EOF鍵就是鍵盤上的control+Z
這樣的程式有點奇葩
直接上範例
int n;
int A, B;
while(cin>>A>>B)
{
cout<<A+B<<endl;
}
如果你有輸入A和B,那麼cin>>A>>B
這段程式就會被當成「是」
如果你是按下鍵盤的control+Z,這段程式就會被當成「否」
所以直接將這段程式當成條件判斷的用途
放在while迴圈的檢查處即可
【學生練習題】
一開始會先有一個數字n代表接下來有幾組輸入
對於每一組輸出
都要輸出那是第幾筆資料
【例題】
輸入一個數字n,代表接下來有幾組輸入
接下來有n行,每一行都是A和B
對於每一行的A和B,輸出
Case #i:#(A+B)
其中#i代表的是那是第幾行
#(A+B)則是A和B相加後的結果
例如輸入
3
1 2
3 4
5 6
則輸出
Case 1:3
Case 2:7
Case 3:11
這題因為需要輸出現在是第幾組
因此需要計數器來記錄現在到第幾組了
所以用for迴圈較為合適
以下為本題範例
int n;
int A, B;
int i;
cin >> n;
for(i=1;i<=n;i++){
cin >> A >> B;
cout << "Case " << i << ": ";
cout << A+B << endl;
}
【學生練習題】
上一章:雜項:其他資料型態、函式庫、格式化輸出
下一章:陣列
回目錄:國立科學園區實驗中學C++程式語言自學講義