看板 Programming
作者 標題 Re:
本來要出給學弟當練習的題目
時間 2010年11月12日 Fri. PM 04:27:25
時間 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";
}
--
※ 來源: Disp BBS 看板: Programming 文章連結: http://disp.cc/b/33-KkK
※ 作者: Knuckles 時間: 2010-11-12 16:27:25 來自: 111-248-4-134.dynamic.hinet.net
※ 看板: Programming 文章推薦值: 3 目前人氣: 0 累積人氣: 1020
( ̄︶ ̄)b water5251 說讚!
4樓 時間: 2010-11-12 18:17:41 (台灣)
推
11-12 18:17 TW
其實我寫的時候有想到floor跟絕對值的問題 不過本來是要寫給大一看的 想說不要用這麼多東西 寫完才發現老師應該不會這樣考
6樓 時間: 2010-11-12 18:31:03 (台灣)
→
11-12 18:31 TW
這個題目比較偏向演算法而不是程式設計,重點是想出 if(max(abs(i-floor(N/2),abs(j-floor(N/2))%2) 這條試子
回列表(←)
分享