迴 圈

LOOP

同樣的動作重複執行:罰寫

for 迴 圈

在......

for( 宣告初始變數 ; 須符合條件 ; 更新 ){
  執行;
}
for( int i=1 ; i<10 ; i++ ){
  cout<<"跑起來!!"<<'\n';
}

有一等差數列:

首項為4

公差為-2

末項為-50

求總和為多少

int sum=0;
for(int i=4 ; i>=-50 ; i-=2){
  sum+=i;
 }

4+2+...+(-48)+(-50)=?

#include <iostream>

using namespace std;

int main()
{
    int n;
    cin>>n;
    for(int i=0 ; i<n ; i++){
    cout<<"I don't say swear words!"<<'\n';
    }
    return 0;
}

練習!

while 迴 圈

當......

while(須符合的條件){
  執行;
}
int time;
cin>>time;
while(time>21){
  cout<<"報告趕不完準備熬夜了>x<"<<'\n';
}
int time;
cin>>time;
while(time<21){
  cin>>time;
}
  cout<<"報告趕不完準備熬夜了>x<"<<'\n';

反覆報時到不符條件,跳出迴圈輸出

int time;
cin>>time;
while(time>=0){
  if(time<21 && time>12){
    cout<<"要開始趕報告了啊啊啊!!!"<<'\n';
  }
  else if(time>=21){
    cout<<"報告趕不完準備熬夜了>x<"<<'\n';
  }
  cin>>time;
}
  

配合if-else

練習!

  有一個成績輸入的系統(輸入皆為≤100的整數):

當成績<60,會顯示 不及格 ;

當成績≥60且≤100,會顯示 及格 ;

當輸入為負,即結束輸入。

#include <iostream>

using namespace std;

int main()
{
  int score;
  cin>>score;
  while(score>0){
    if(score<60){
      cout<<"不及格"<<'\n';
    }
    else if(score>=60 && score<=100){
      cout<<"及格"<<'\n';
    }
    cin>>score;
}
  return 0;
}

do-while

#include <iostream>

using namespace std;

int main()
{
  int score;
  cin>>score;
  while(score>0){
    if(score<60){
      cout<<"不及格"<<'\n';
    }
    else if(score>=60 && score<=100){
      cout<<"及格"<<'\n';
    }
    cin>>score;
}
  return 0;
}
#include <iostream>

using namespace std;

int main()
{
  int score;
  do{
    cin>>score;
    if(score<60 && score>0){
      cout<<"不及格"<<'\n';
    }
    else if(score>=60 && score<=100){
      cout<<"及格"<<'\n';
    }
    
}while(score>0);
  return 0;
}

continue & break

繼續/破壞

for(int i=0;i<10;i++){
   if(i==5){
     break;
   }
   cout<<i<<" ";
}
for(int i=0;i<10;i++){
   if(i==5){
     continue;
   }
   cout<<i<<" ";
}

continue

break

0 1 2 3 4

0 1 2 3 4 6 7 8 9

迴圈應用

+巢狀迴圈

for跟while是可以交換的!

試著用while迴圈解 4+2+...+(-48)+(-50)=?

int i=4,sum=0;
while(i>=-50){
  sum+=i;
  i-=2;
}
int k=1,g=1;
for(int i=1 ; i<=5 ; i++ ){
  for(int j=1 ; j<=5 ; j++ ){
    k+=i*j;
   }
   g+=k;
}
1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9 
2*1=2 2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18 
3*1=3 3*2=6 3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27 
4*1=4 4*2=8 4*3=12 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36 
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45 
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 6*7=42 6*8=48 6*9=54 
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 7*8=56 7*9=63 
8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7=56 8*8=64 8*9=72 
9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81 

試著輸出這種99乘法表?

i++/++i

試試看差在哪裡?

int i=1;
cout<<i++<<' ';
cout<<i<<'\n';
int i=1;
cout<<++i<<' ';
cout<<i<<'\n';
1 2
2 2

練習!

現有很多位同學,請找出最高分的是第幾位同學?

那麼最低分是第幾位同學?

輸入
(直到輸入為END才停止,至少有1位同學):
87
59
66
76
48
89
55
48
66
74
END
輸出:
89

練習!

#include <iostream>

using namespace std;

 
int main(){
  int t,a0,a1,a2,a3,a4;
  while (cin >> t){
    while (t>=1){
      cin >> a0 >> a1 >> a2 >> a3;  
      if ((a1-a0) == (a2-a1)){
        a4=a3+a3-a2;
      }
      else {
        a4=a3*(a3/a2);
      }
      cout << a0 <<" "<< a1 <<" "<< a2 <<" "<< a3 <<" "<< a4 <<endl;
      t-=1;
    }

  }

}

t--

Made with Slides.com