請高手給講講迴圈的區別,好嗎?尤其是 b/c的區別,實在不明白
A
for($i = 1;$i <= 10; $i++ ){
for($j = 1;$j <= 10;$j++){
$m = $i * $i + $j * $j;
echo "$m\n
";
if($m < 90 || $m > 190) {
break 2;
}
}
}
?>// 2
B
for($i = 1;$i <= 10; $i++ ){
for($j = 1;$j <= 10;$j++){
$m = $i * $i + $j * $j;
echo "$m\n
";
if($m < 90 || $m > 190) {
break ;
}
}
}/ /2 5 10 17 26 37 50 65 82 101
104 109 116 125 136 149 164 181 200
C
for($i = 1;$i <= 10; $i++ ){
for($j = 1;$j <= 10;$j++){
$m = $i * $i + $j * $j;
echo "$m\n
";
}
// 2 5 10 17 26 37 50 65 82 101
5 8 13 20 29 40 53 68 85 104
10 13 18 25 34 45 58 73 90 109
17 20 25 32 41 52 65 80 97 116
26 29 34 41 50 61 74 89 106 125
37 40 45 52 61 72 85 100 117 136
50 53 58 65 74 85 98 113 130 149
65 68 73 80 89 100 113 128 145 164
82 85 90 97 106 117 130 145 162 181
101 104 109 116 125 136 149 164 181 200
回複討論(解決方案)
你的 C 應為
for($i = 1;$i <= 10; $i++ ){ for($j = 1;$j <= 10;$j++){ $m = $i * $i + $j * $j; echo "$m "; } echo '
';}
2 5 10 17 26 37 50 65 82 101 5 8 13 20 29 40 53 68 85 104 10 13 18 25 34 45 58 73 90 109 17 20 25 32 41 52 65 80 97 116 26 29 34 41 50 61 74 89 106 125 37 40 45 52 61 72 85 100 117 136 50 53 58 65 74 85 98 113 130 149 65 68 73 80 89 100 113 128 145 164 82 85 90 97 106 117 130 145 162 181 101 104 109 116 125 136 149 164 181 200
B 應為
for($i = 1;$i <= 10; $i++ ){ for($j = 1;$j <= 10;$j++){ $m = $i * $i + $j * $j; echo "$m "; if($m < 90 || $m > 190) { break ; } } echo '
';}
2 5 10 17 26 37 50 65 82 101 104 109 116 125 136 149 164 181 200
即小於 90 的只列印第一列,break 跳出當前迴圈也就是跳出一重迴圈
A 應為
for($i = 1;$i <= 10; $i++ ){ for($j = 1;$j <= 10;$j++){ $m = $i * $i + $j * $j; echo "$m "; if($m < 90 || $m > 190) { break 2; } } echo '
';}只列印一個 2
因為 break 2 是跳出 2 重迴圈
雙重迴圈細解,從網上摘抄來,送給有同樣疑惑的朋友
public static void main(String[] args)
{
for(int i=0①;i<=5②;i++③)
{
④for(⑤int j=0;⑥j<=5;⑦j++)
{
⑧if(j System.out.print(" ");
⑨if(j>=i)
System.out.print("*");
}
⑩System.out.println();
}
}
首先程式會執行①,給i初始化賦值0;然後判斷i是不是小於等於5,如果小於等於5就執行④這個for迴圈。在這個for迴圈中,先會給變數j初始化賦值0,然後判斷j是不是小於等於5,就執行⑧,因為i=j;所以會列印*,然後再執行⑦,把j++,這時j=1,然後執行⑥,判斷j是不是小於或等於5,如果小於或等於5就執行⑨,因為j=1,i=0,j>i,所以會列印*,然後一直這樣判斷,當j=5時,因為它等於5,所以執行⑨,列印*,然後j++,這時j=6,j大於5了就跳出④這個for迴圈,執行它後面的那句列印換行的代碼⑩,然後執行第一個for迴圈的③,i++,這時i=1,再執行②判斷i是不是小於或等於5,如果小於或等於就執行第二個for迴圈④,然後就執行和上面一樣的過程,直到i++=6,判斷i大於5,這是程式結束。這裡的要點就是①和⑤這樣的賦值只會執行一次,其它的按判斷結果執行。
在上面跳出2重迴圈的例子中:
for($i = 1;$i <= 10; $i++ ){
for($j = 1;$j <= 10;$j++){
$m = $i * $i + $j * $j;
echo "$m ";
if($m < 90 || $m > 190) {
break 2;
}
}
echo '
';//
列印多少次呢?
}
換成下面的代碼:
for($i = 1;$i <= 10; $i++ ){
for($j = 1;$j <= 10;$j++){
$m = $i * $i + $j * $j;
echo "$m ";
if($m < 90 || $m > 190) {
break 2;
}
}
echo 'print times';//結果仍是 2
}
--所謂跳出 2 重迴圈,是跳出 第 2 重迴圈,還是跳出 總計 2 次迴圈, 跳出所有的迴圈呢?
請教高手
跳出第 2 重迴圈了,可第 1 重迴圈的 echo 'print times'; 是否還應該再繼續執行呢?