看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《vm6jp6rmp4 (Jun)》之銘言: : 今天看書看到了一個題目,畫三角形,想了一個多小時想不出來怎麼畫,圖形如下, : * : *** : ***** : 可不可以問一下,我的高是三,如果我要我的高度可以輸入,有什麼比較好的寫法嗎? : 如果光用指標可以畫嗎?還是一定要用陣列~~~這種畫圖的難度算高嗎? 數學課時想到的白爛做法 //有用到陣列喲 XD 把每一行的星星想成數字的二進位信號 那麼下一行就是前一行的 左移 與 右移 的 OR 運算結果 不過第二行例外 不過這個方法到 層數 >= 32 時就會爆炸 //連 long long 也放不下 #include <stdio.h> int main (void) { int n, m, i, j; printf("請輸入層數: (0 < n < 30) :"); scanf("%d", &n); m = 2*n -1; //最後一排有幾個'*' long long bit[n]; //懶的作 malloc 就直接用 c99 的 vla for (i = 0; i < n; i++) { bit[i] = 0; } bit[0] = 1<<(m/2); //中間的那顆 for (i = 1; i < n; i++) { bit[i] = (bit[i-1]<<1) | (bit[i-1]>>1) | bit[i-1]; } for (i = 0; i < n; i++) { for (j = m-1; j >= 0; j--) { //檢查每一位元若為真就印出星星 putchar( ( (bit[i]>>j) &1 ) ? '*':' '); } puts(""); //換行 } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.60.107.233