View
248
Download
5
Category
Preview:
Citation preview
5 5 重複迴圈 重複迴圈 5.15.1 增減運算符號 增減運算符號 5-25-2 5.1.15.1.1 增量運算符號 增量運算符號 ++ 5-2++ 5-2 5.1.25.1.2 減量運算符號 減量運算符號 -- 5-4-- 5-4 5.1.35.1.3 ++/--++/-- 與算術運算 與算術運算 5-65-6 5.1.45.1.4 ++/--++/-- 與關係運算 與關係運算 5-75-7 5.25.2 迴圈敘述 迴圈敘述 5-85-8 5.2.15.2.1 前測試迴圈前測試迴圈 while 5-while 5-
99 5.2.25.2.2 計數器計數器 countercounter
5-125-12 5.2.35.2.3 後測試迴圈後測試迴圈 do-while do-while
5-16 5-16 5.2.45.2.4 計數型迴圈計數型迴圈 for 5-23for 5-23
5.35.3 巢狀迴圈巢狀迴圈 5-285-28 5.3.15.3.1 whilewhile 巢狀迴圈 巢狀迴圈 5-295-29 5.3.25.3.2 do-whiledo-while 巢狀迴圈 巢狀迴圈 5-35-3
00 5.3.35.3.3 forfor 巢狀迴圈巢狀迴圈 5-315-31 5.45.4 無窮迴圈無窮迴圈 5-335-33 5.4.15.4.1 無窮無窮 whilewhile 5-335-33 5.4.25.4.2 無窮無窮 do-whiledo-while 5-35-3
33 5.4.35.4.3 無窮無窮 forfor 5-345-34 5.55.5 中斷與繼續中斷與繼續 5-355-35 5.5.15.5.1 breakbreak 敘述敘述 5-355-35 5.5.25.5.2 continuecontinue 敘述敘述 5-35-3
99
5.1 5.1 增減運算符號增減運算符號 雖然雖然 C++ C++ 語言已經提供了算術運算符號的語言已經提供了算術運算符號的
加法(加法( ++ )與減法()與減法( -- )與混合指定運算符)與混合指定運算符號的加法指定(號的加法指定( +=+= )與減法指定()與減法指定( -=-= ))等符號,但為了提供使用者更多的選擇,等符號,但為了提供使用者更多的選擇, CC++ ++ 語言還提供增量(語言還提供增量( ++++ )與減量()與減量( ---- ))運算符號。 運算符號。
5.1.1 5.1.1 增量運算符號 增量運算符號 ++++ 增量(增量( incrementincrement ))運算就是運算元加運算就是運算元加 11 。 。
範例一範例一 num = num + 1;num = num + 1; //num//num 的值加的值加 11 num += 1;num += 1; //num//num 的值加的值加 11
範例二範例二 num++;num++; //// 功能與功能與 num=num+1num=num+1
相同相同
5.1.1 5.1.1 增量運算符號 增量運算符號 ++ (++ ( 續續 )) ++++ 變數變數 //// 前置型增量前置型增量 變數變數 ++++ //// 後置型增量後置型增量
前置型增量前置型增量int num = 1;int num = 1;cout << ++num;cout << ++num; //// 先執行先執行 ++num=2,++num=2, 再輸出再輸出 nunumm
後置型增量後置型增量int num = 1;int num = 1;cout << num++;cout << num++; //// 先輸出先輸出 num=1num=1 再執行再執行 numnum++++
5.1.2 5.1.2 減量運算符號 減量運算符號 ---- 減量(減量( decrementdecrement ))運算就是運算元減運算就是運算元減 11 。 。
範例一範例一num = num - 1;num = num - 1; //num//num 的值減的值減 11num -= 1;num -= 1; //num//num 的值減的值減 11
範例二範例二num--;num--; //// 功能與功能與 num=num-1num=num-1 相同相同
5.1.2 5.1.2 減量運算符號 – 減量運算符號 – (( 續續 )) ---- 變數變數 //// 前置型減量前置型減量 變數變數 ---- //// 後置型減量後置型減量
前置型減量前置型減量int num = 1;int num = 1;cout << --num;cout << --num; //// 先執行先執行 --num=2,--num=2, 再輸出再輸出 nunumm
後置型減量後置型減量int num = 1;int num = 1;cout << num--;cout << num--; //// 先輸出先輸出 num=1num=1 再執行再執行 nunum--m--
5.1.3 ++/--5.1.3 ++/-- 與算術運算式與算術運算式 後置增量與運算式後置增量與運算式
a = 5;a = 5;b = 2;b = 2;x = a * b++;x = a * b++; //// 先先 x=a*b=10,x=a*b=10, 後後 b=b+1=3b=b+1=3
前置增量與運算式前置增量與運算式a = 5;a = 5;b = 2;b = 2;x = a * ++b;x = a * ++b; //// 先先 b=b+1=3,b=b+1=3, 後後 x=a*b=15x=a*b=15
5.1.3 ++/--5.1.3 ++/-- 與算術運算式 與算術運算式 (( 續續 )) 錯誤的前置增量與運算式錯誤的前置增量與運算式
a = 5;a = 5;b = 2;b = 2;x = ++(a * b);x = ++(a * b); //// 錯誤錯誤 , , 需要需要 LvalueLvalue
錯誤的後置增量與運算式錯誤的後置增量與運算式a = 5;a = 5;b = 2;b = 2;x = (a * b)++;x = (a * b)++; //// 錯誤錯誤 , , 需要需要 Lvalue Lvalue
5.1.4 ++/--5.1.4 ++/-- 與關係運算式與關係運算式 後置減量與運算式後置減量與運算式
n = 0;n = 0;if(n-- <= 0)if(n-- <= 0) //// 先判斷先判斷 n<0,n<0, 後後 n=n-1=-1n=n-1=-1
cout << n << " cout << n << " 是負數是負數 ";";
前置減量與運算式前置減量與運算式n = 0;n = 0;if(--n < 0)if(--n < 0) //// 先先 n=n-1=-1,n=n-1=-1, 後判斷後判斷 nn<0<0
cout << n << " cout << n << " 是負數是負數 ";";
5.2 5.2 迴圈敘述 迴圈敘述 非迴圈敘述非迴圈敘述
int i = 1;int i = 1; //i=1//i=1cout << i << endl;cout << i << endl;i = i + 1;i = i + 1; //i=1+1=2//i=1+1=2cout << i << endl;cout << i << endl;i = i + 1; i = i + 1; //i=2+1=3//i=2+1=3cout << i << endl;cout << i << endl;i = i + 1; i = i + 1; //i=3+1=4//i=3+1=4cout << i << endl;cout << i << endl;i = i + 1; i = i + 1; //i=4+1=5//i=4+1=5cout << i << endl;cout << i << endl;
迴圈敘述迴圈敘述for(int i=1; i<=5; i++)for(int i=1; i<=5; i++)
cout << i << endl;cout << i << endl;
5.2.1 5.2.1 前測試迴圈前測試迴圈 whilewhile 單行型單行型 whilewhile 敘述敘述 while (while ( 條件運算式條件運算式 ))
單一敘述單一敘述 ;;
區塊型區塊型 whilewhile 敘述敘述 while (while ( 條件運算式條件運算式 ))
{{多敘述區多敘述區 ;;
}}
5.2.1 5.2.1 前測試迴圈前測試迴圈 while (while ( 續續 ))
while 條件while 條件
其他敘述其他敘述
1 (true)
0 (false)
{C++ 敘述區
}
{C++ 敘述區
}
結束 while
5.2.1 5.2.1 前測試迴圈前測試迴圈 while (while ( 續續 )) 範例範例
cin >> year;cin >> year; //// 輸入輸入 yearyearwhile (year != 0)while (year != 0) //// 若若 year!=0year!=0 則迴圈則迴圈成立成立{{
cin >> year;cin >> year; //// 輸入輸入 yearyear}}
5.2.2 5.2.2 計數器計數器 countercounter
判斷計數值判斷計數值
其他敘述其他敘述
1 (true)
0 (false)
{C++ 敘述區
{C++ 敘述區
結束 while
計數器初值計數器初值
計數器增減}
計數器增減}
5.2.2 5.2.2 計數器計數器 counter (counter ( 續續 )) 範例一範例一
int count = 1;int count = 1; //// 計數值計數值 count = 1count = 1while (count <= 9)while (count <= 9) //// 設定設定 whilewhile 條件運算式條件運算式{ {
cout << count;cout << count; //// 輸出輸出 countcount 值值count++;count++; //// 計數值計數值 countcount 加加 11
} } 範例二範例二
int count = 1;int count = 1; //// 計數值計數值 count = 1count = 1while (count <= 9)while (count <= 9) //// 設定設定 whilewhile 條件運算式條件運算式{ {
count++;count++; //// 計數值計數值 countcount 加加 11cout << count;cout << count; //// 輸出輸出 countcount 值值
} }
5.2.2 5.2.2 計數器計數器 counter (counter ( 續續 )) 範例三範例三
int count = 0;int count = 0; //// 計數值計數值 count = 0count = 0while (count < 9)while (count < 9) //// 設定設定 whilewhile 條件運算式條件運算式{ {
count++;count++; //// 計數值計數值 countcount 加加 11cout << count;cout << count; //// 輸出輸出 countcount 值值
}} 範例四範例四
int count = 0;int count = 0; //// 計數值計數值 count = 0count = 0while (count++ < 9)while (count++ < 9) //// 設定設定 whilewhile 條件運算式條件運算式
cout << count;cout << count; //// 輸出輸出 countcount 值值
5.2.2 5.2.2 計數器計數器 counter (counter ( 續續 )) 範例五範例五
int count = 10;int count = 10; //// 計數值計數值 count = 10count = 10while (--count >= 1)while (--count >= 1) //// 設定設定 whilewhile 條件運算式條件運算式
cout << count;cout << count; //// 輸出輸出 countcount 值值
Ex 8Ex 8
寫一個寫一個 C++C++ 程式,計算 程式,計算 1+2+3+…+100 1+2+3+…+100 的的總和。總和。
5.2.3 5.2.3 後測試迴圈後測試迴圈 do-whiledo-while 單行型單行型 do-whiledo-while 迴圈敘述迴圈敘述 dodo
單一敘述單一敘述 ;;while (while ( 條件運算式條件運算式 ););
區塊型區塊型 do-whiledo-while 迴圈敘述迴圈敘述 dodo
{{多敘述區多敘述區 ;;
} while (} while ( 條件運算式條件運算式 ););
5.2.3 5.2.3 後測試迴圈後測試迴圈 do-while do-while (( 續續 ))
while 條件while 條件
其他敘述其他敘述
1 (true)
0 (false)
{ C++ 敘述
}
{ C++ 敘述
}
dodo
5.2.3 5.2.3 後測試迴圈後測試迴圈 do-while do-while (( 續續 ))
範例一範例一dodo{{
cin >> year;cin >> year; //// 輸入輸入 yearyear} while (year != 0);} while (year != 0); //// 若若 year!=0year!=0 則迴圈繼續則迴圈繼續
5.2.3 5.2.3 後測試迴圈後測試迴圈 do-while do-while (( 續續 ))
範例二 範例二 (( 計數型計數型 do-while)do-while)int count = 1;int count = 1; //// 計數值計數值 count = 1count = 1dodo{ {
cout << count;cout << count; //// 輸出輸出 countcount 值值count++;count++; //// 計數值計數值 countcount 加加 11
} while (count <= 9);} while (count <= 9); //// 設定設定 whilewhile 條件運算式條件運算式
範例三 範例三 (( 計數型計數型 do-while)do-while)int count = 1;int count = 1; //// 計數值計數值 count = 1count = 1dodo{ {
cout << count;cout << count; //// 輸出輸出 countcount 值值} while (++count <= 9);} while (++count <= 9); //// 設定設定 whilewhile 條件運算式條件運算式
5.2.3 5.2.3 後測試迴圈後測試迴圈 do-while do-while (( 續續 ))
} while 條件} while 條件
其他敘述其他敘述
1 (true)
0 (false)
do {敘述區
do {敘述區
計數器初值計數器初值
.增減運算式.增減運算式
5.2.3 5.2.3 後測試迴圈後測試迴圈 do-while do-while (( 續續 ))
範例四 範例四 (( 遞減型計數遞減型計數 ))int count = 9;int count = 9; //// 計數值計數值 count = 9count = 9dodo
cout << count;cout << count; //// 輸出輸出 countcount 值值while (--count > 0);while (--count > 0); //// 設定設定 whilewhile 條條件運算式件運算式
5.2.4 5.2.4 計數型迴圈計數型迴圈 forfor 單行型單行型 forfor 迴圈敘述迴圈敘述 for ( for ( 起始運算式起始運算式 ; ; 條件運算式條件運算式 ;;
更新運算式 更新運算式 ))單一敘述單一敘述 ;;
區塊型區塊型 forfor 迴圈敘述迴圈敘述 for ( for ( 起始運算式起始運算式 ; ; 條件運算式條件運算式 ;;
更新運算式 更新運算式 )){{
多敘述區多敘述區 ;;}}
範例範例for(int i=1; i<=9; i++)for(int i=1; i<=9; i++)
cout << i << ' ';cout << i << ' ';
判斷計數值判斷計數值
其他敘述其他敘述
1 (true)
0 (false)
{C++ 敘述區
{C++ 敘述區
結束 while
計數器初值計數器初值
計數器增減}
計數器增減}
While 迴圈及計數器
int count = 1;int count = 1;while (count <= 9)while (count <= 9){ {
cout << count;cout << count;count++;count++;
} }
5.2.4 5.2.4 計數型迴圈計數型迴圈 for (for ( 續續 )) 範例二範例二
for (int i=0; i<10; i++)for (int i=0; i<10; i++) //// 宣告並使用宣告並使用 ii 變數變數cout << 2*i << endl;cout << 2*i << endl;
for (int i=0; i<10; i++)for (int i=0; i<10; i++) //// 重複宣告並使用重複宣告並使用 ii 變數變數cout << i*i << endl;cout << i*i << endl;
範例三範例三int i = 0;int i = 0; //// 宣告並起始變數宣告並起始變數 iifor (i=0; i<10; i++)for (i=0; i<10; i++) //// 使用使用 ii 變數變數
cout << 2*i << endl;cout << 2*i << endl;for (i=0; i<10; i++)for (i=0; i<10; i++) //// 重複使用重複使用 ii 變數變數
cout << i*i << endl;cout << i*i << endl;
5.2.4 5.2.4 計數型迴圈計數型迴圈 for (for ( 續續 ))
=控制變數 條件值=控制變數 條件值
設定計數值設定計數值
其他敘述其他敘述
1 (true)
0 (false)
{C++ 敘述區
{C++ 敘述區
結束 for
控制變數+=增減值}
控制變數+=增減值}
重複 for
5.2.4 5.2.4 計數型迴圈計數型迴圈 for (for ( 續續 )) 基本型基本型 forfor 迴圈敘述迴圈敘述
int sum = 0;int sum = 0; //// 宣告並起始宣告並起始 sumsumfor (int count = 1; count <= MAX; count++)for (int count = 1; count <= MAX; count++) //for//for 敘述敘述{{ //start of for//start of for
sum += count;sum += count; //// 迴圈敘述迴圈敘述}} //end of for//end of for
簡化型簡化型 forfor 迴圈敘述迴圈敘述int sum = 0;int sum = 0; //// 宣告並起始宣告並起始 sumsumfor (int count = 1; count <= MAX; count++)for (int count = 1; count <= MAX; count++) // for// for 敘述敘述
sum += count;sum += count; //// 迴圈敘述迴圈敘述
5.2.4 5.2.4 計數型迴圈計數型迴圈 for (for ( 續續 )) 省略型省略型 forfor 迴圈敘述迴圈敘述
int count = 1, sum = 0;int count = 1, sum = 0; //// 宣告與起始宣告與起始 count,scount,sumumfor ( ; count <= MAX; count++)for ( ; count <= MAX; count++) //// 省略起始運算式省略起始運算式
sum += count;sum += count; //// 迴圈敘述迴圈敘述
省略型省略型 forfor 迴圈敘述迴圈敘述int count = 1, sum = 0;int count = 1, sum = 0; //// 宣告與起始宣告與起始 count,scount,sumumfor ( ; count <= MAX; )for ( ; count <= MAX; ) //// 省略起始與更新運算省略起始與更新運算式式
sum += count++;sum += count++; //// 迴圈敘述迴圈敘述
5.2.4 5.2.4 計數型迴圈計數型迴圈 for (for ( 續續 )) 單行型單行型 forfor 迴圈敘述迴圈敘述
int count, sum;int count, sum; //// 宣告宣告 coucount, sumnt, sumfor (count = 1, sum = 0; count <= MAX; sum += count, count++);for (count = 1, sum = 0; count <= MAX; sum += count, count++);
5.3 5.3 巢狀迴圈巢狀迴圈 巢狀迴圈(巢狀迴圈( nested loopsnested loops ))就是在迴圈中就是在迴圈中
包含另一個迴圈,也就是大迴圈包小迴圈。包含另一個迴圈,也就是大迴圈包小迴圈。而且可以在而且可以在 forfor 迴圈中包含迴圈中包含 whilewhile 迴圈或迴圈或 ddoo 迴圈,反之亦然。迴圈,反之亦然。
5.3.1 while5.3.1 while 巢狀迴圈巢狀迴圈 範例範例
int count1 = 1;int count1 = 1; //// 宣告外層迴圈計數值宣告外層迴圈計數值while (count1 <= 2)while (count1 <= 2) //// 定義外層定義外層 whilewhile 迴圈迴圈{{ //// 外層外層 whilewhile 迴圈起點迴圈起點
int count2 = 1;int count2 = 1; //// 宣告內層迴圈計數值宣告內層迴圈計數值while (count2 <= 3) while (count2 <= 3) //// 定義內層定義內層 whilewhile 迴圈迴圈{{ //// 內層內層 whilewhile 迴圈起點迴圈起點
cout << count1 * count2;cout << count1 * count2; //// 輸出運算值輸出運算值count2++;count2++; //// 內層計數值加內層計數值加 11
}} //// 內層內層 whilewhile 迴圈結束點迴圈結束點count1++;count1++; //// 外層計數值加外層計數值加 11cout << endl;cout << endl; //// 跳行跳行
}} //// 外層外層 whilewhile 迴圈結束點迴圈結束點
5.3.2 do-while5.3.2 do-while 巢狀迴圈巢狀迴圈 範例範例
int count1 = 1;int count1 = 1; //// 宣告外層宣告外層 dodo 迴圈計數初值迴圈計數初值dodo //// 定義外層定義外層 dodo 迴圈迴圈{{ //// 外層外層 dodo 迴圈起點迴圈起點int count2 = 1;int count2 = 1; //// 宣告內層宣告內層 dodo 迴圈計數初值迴圈計數初值dodo //// 定義內層定義內層 dodo 迴圈迴圈cout << count1 * count2;cout << count1 * count2; //// 輸出運算值輸出運算值while (++count2 <= 3);while (++count2 <= 3); //// 內層內層 whilewhile 條件與返回點條件與返回點cout << endl;cout << endl; //// 跳行跳行} while (++count1 <= 2); } while (++count1 <= 2); //// 外層外層 whilewhile 條件與返回點條件與返回點
5.3.3 for5.3.3 for 巢狀迴圈巢狀迴圈 範例範例
for (count1 = 1; count1 <= 2; count1 ++)for (count1 = 1; count1 <= 2; count1 ++) ////外層迴圈外層迴圈{{
for (count2 = 1; count1 <= 3; count2 ++)for (count2 = 1; count1 <= 3; count2 ++) ////內層迴圈內層迴圈
cout << count1 * count2;cout << count1 * count2;}}
5.4 5.4 無窮迴圈無窮迴圈 無窮迴圈無窮迴圈就是迴圈將永遠的循環下去,方就是迴圈將永遠的循環下去,方
法是另法是另 forfor 或或 whilewhile 敘述的條件永遠成立敘述的條件永遠成立則形成則形成 forfor 或或 whilewhile 的無窮迴圈。的無窮迴圈。
若要中斷無窮迴圈,則可以在迴圈中加若要中斷無窮迴圈,則可以在迴圈中加 ifif敘述,再配合敘述,再配合 5.5.15.5.1 節的節的 breakbreak 敘述中斷敘述中斷迴圈。 迴圈。
5.4.1 5.4.1 無窮無窮 whilewhile 範例範例
while (true)while (true) //// 條件永遠成立條件永遠成立 (true)(true){{
cout << "forever";cout << "forever";}}
5.4.2 5.4.2 無窮無窮 do-whiledo-while 範例範例
dodo{{
cout << "forever";cout << "forever";} while (true); } while (true); //// 條件永遠成立條件永遠成立(true)(true)
5.4.3 5.4.3 無窮無窮 forfor 範例範例
for ( ; ; )for ( ; ; ) //// 無起始也無終止無起始也無終止{{
cout << "forever";cout << "forever";}}
5.5 5.5 中斷與繼續中斷與繼續 中斷(中斷( breakbreak ))敘述用來提前結束迴圈的敘述用來提前結束迴圈的
執行。 執行。 繼續(繼續( continuecontinue ))敘述則用來跳過某些敘述則用來跳過某些
敘述而繼續下一個計數。 敘述而繼續下一個計數。
5.5.1 break5.5.1 break 敘述敘述 break;break;
範例範例for (count = 0; count <= stringlength; countfor (count = 0; count <= stringlength; count++)++){{
if (string[count] == letter)if (string[count] == letter) //// 若條件成若條件成立立
break;break; //// 中斷中斷 forfor 迴圈迴圈}}
5.5.2 continue5.5.2 continue 敘述敘述 continue;continue;
範例範例for (count = 1; count <= maxnum; count++)for (count = 1; count <= maxnum; count++){{
if (count % 3 != 0)if (count % 3 != 0) //// 若不是若不是 33 的倍數的倍數continue;continue; //// 返回迴圈起點返回迴圈起點
cout << count;cout << count; //// 若非若非 33 的倍數則不顯示的倍數則不顯示}}
Ex 9Ex 9
寫一寫一 C++C++ 程式,利用巢狀程式,利用巢狀 forfor 迴圈計算列出九九迴圈計算列出九九乘法表。如下所示:乘法表。如下所示:
2*1= 22*2= 42*3= 62*4= 82*5=102*6=12 . . .9*8=729*9=81
Ex 9Ex 9
寫一寫一 C++C++ 程式,利用巢狀程式,利用巢狀 forfor 迴圈計算列出九九迴圈計算列出九九乘法表。如下所示:乘法表。如下所示:
Homework 4Homework 4
課本第課本第 5-425-42 頁第頁第 1919 題題 寫一寫一 C++C++ 程式,以亂數擲程式,以亂數擲 1000010000 次骰子然次骰子然
後計算並列出出現後計算並列出出現 11 、、 2 2 、 、 3 3 、 、 4 4 、 、 5 5 、、 66 點的次數。點的次數。
Recommended