(這樣應該看得懂我的問題吧)
其中的程式有一段為:(N為常數10)
int a[N],p=0,q=1;
randomize();
do
{ int t = random(100);
if (t % 2==0) //偶數
{ [1;33m if (p>N) continue; [m
a[p]=t;
p += 2; //0,2,4,6..
}
else
{ [1;33m if (q>N) continue; [m
a[q]=t;
q += 2; //1,3,5,7...
}
} while (p<N || q<N);
我想問的是黃色的那兩列代表什麼意義呢?
N設為10表示陣列有10個元素,要是p或q大於10不就超過了,
為何要加上continue啊?
且最後一列為何是p<N或 q<N就結束迴圈呢?
麻煩教我一下,謝謝囉
--
※ Origin: 楓橋驛站<bbs.cs.nthu.edu.tw> ◆ From: xray8.phys.nthu.edu.tw
加上黃色那兩列是為了要避免當連續產生五個
偶數或是奇數的情況,設想,如果連續產生五個
五個偶數的話,p是不是會等於12,但是由於奇數
的部分還沒產生,所以不可離開loop,而最後一
行是說當p<N或q<N時繼續loop!!!
: 我想問的是黃色的那兩列代表什麼意義呢?
: N設為10表示陣列有10個元素,要是p或q大於10不就超過了,
: 為何要加上continue啊?
: 且最後一列為何是p<N或 q<N就結束迴圈呢?
: 麻煩教我一下,謝謝囉
--
眺望天空找她的影子
落了一地的星星和她那句話
在黑夜的深處掀起大霧
是誰啊!這樣考驗著我 不管我有多無助
� 我的心跟著她的心 迷了路
--
◎ [1;31m龍 [32m貓 [33m資 [34m訊 [35m天 [36m地 [0m( [1mbbs.mgt.ncu.edu.tw [0m)
◎[ [1;33;46mrhythm [0m]From: 226070.D17-226.ncu.edu.tw
引
言
太
多
continue 會讓程式回到迴圈的第一行
do{} while(A) 當A邏輯運算成立時會回到迴圈第一行
所以當p<N 或 q<N 表示偶數或奇數尚未取完亂數,還需要繼續...
閒著沒事改成下面這樣...@.@
for(i=0;i<N;i++)
a[i] = random(50)*2 + i%2;
^_^
--
[1;32m※ Origin: [33m摩卡小築 [37m<moca.csie.chu.edu.tw> [m
[1;31m◆ From: [36m61-222-71-44.HINET-IP.hinet.net [m