看板 Programming作者 Knuckles (阿德)標題 Re: 本來要出給學弟當練習的題目
時間 2010年11月12日 Fri. PM 04:27:25
※ 引述《abc1231qa》之銘言:
> 讓使用者輸入一個奇數
> 然後用*畫成正方形 一圈一圈的畫出
> 如下
N=9
改一下座標,(x,y)為(i,j)位移 -(N-1)/2 = -4
0 1 2 3 4 5 6 7 8 →i
-4-3-2-1 0 1 2 3 4 →x
-4*********
-3* *
-2* ***** *
-1* * * *
0* * * * *
1* * * *
2* ***** *
3* *
4*********
↓
y
中間的*: (0,0)
第一圈*: |x|,|y|都小於等於2 且 |x|=2或|y|=2時 → |x|與|y|的最大值為2時
任一點(x,y): 設 r = max(|x|,|y|),若 r 為偶數,則該點為*
程式隨便寫寫
[code=cpp]
for(i=0;i<N;i++){
for(j=0;j<N;j++){
x = i - (N-1)/2;
y = j - (N-1)/2;
r = max(abs(x),abs(y));
if(r%2==0) cout << "*";
else cout << " ";
}
cout << "\n";
}
其中 max(a,b) 為取a,b的最大值,abs(x)為取x的絕對值
--
--
※ 來源: Disp BBS 看板: Programming 文章連結: http://disp.cc/b/33-KkK
※ 作者: Knuckles 時間: 2010-11-12 16:27:25 來自: 111-248-4-134.dynamic.hinet.net
※ 同主題文章:
Re: [CODE] 本來要出給學弟當練習的題目
11-12 16:27 Knuckles