站長資訊網
        最全最豐富的資訊網站

        用循環打印菱形_C語言算法

         

          菱形打印

          打印菱形在控制臺的思路是,把菱形上下拆分,分兩段很接近的代碼來打印, 其實這樣代碼很不好看,并且不好閱讀 我們知道,要打印的圖案是這種:

          *

          ***

          *****

          ***

          *

          滿足上下對稱,左右對稱,那么,你能不能也弄一個二重循環,同樣是對稱的? 很簡單,首先我們要拋開習慣性思維,for循環不一定要在0開始或者0結束 我們可以讓循環從 -c 到 c ,這樣不就輕松產生一個對稱的嗎?(只要取個絕對值) 我們把菱形的中心看成是坐標0,0,那么,會輸出星號的坐標,是 |x| + |y| <= c 的點。

         

          #include

          #define IABS(x) ( (x) >= 0 ? (x) : -(x) ) //定義一個計算絕對值的宏

          void print(int size) // size是這個菱形的半徑,直徑會是size * 2 + 1

          {

          int x, y;

          for (y = -size; y <= size; y++)

          { for (x = -size; x <= size; x++)

          { if ( IABS(x) + IABS(y) <= size ) //x和y各自的絕對值的和,即 |x| + |y| <= size

          putchar(‘*’);

          else putchar(‘ ‘);

          }

          putchar(‘n’);

          }

          }

          int main()

          { print(5); //輸出一個半徑為5的菱形 return 0;

          }

         

          如果我需要得到空心菱形呢?非常非常簡單,因為菱形邊界上的點,滿足的是|x| + |y| == c 所以,我們只要把那個if里的小于等于號,改成雙等于號 == 就可以了。

          再類似地,如果我不要*號,我要最外層是字母A,然后里一層是B這樣呢?

         

          即:

          A

          ABA

          ABCBA

          ABA

          A

         

          那么,我們只要在putchar那里做一個字符計算:

         

          void print(int size) // size是這個菱形的半徑,直徑會是size * 2 + 1

          { int x, y;

          for (y = -size; y <= size; y++)

          { for (x = -size; x <= size; x++)

          { if ( IABS(x) + IABS(y) <= size ) //x和y各自的絕對值的和,即 |x| + |y| <= size

          putchar( ‘A’ + (size – IABS(x) – IABS(y)) ); //留意這里的計算方法

          else putchar(‘ ‘);

          } putchar(‘n’);

          }

          }

         

          類似地,如果我們要打印的是X形:

          * *

          * *

          *

          * *

          * *

         

          同樣可以利用這個思路完成。

        贊(0)
        分享到: 更多 (0)
        網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
        主站蜘蛛池模板: 黑巨人与欧美精品一区 | 国产精品久久永久免费| 99久久精品国产毛片| 精品一区二区三区色花堂| 亚洲色图国产精品| 国产精品看高国产精品不卡| 亚洲情侣偷拍精品| 99久久久精品| 九九精品成人免费国产片| 久久久亚洲精品蜜桃臀| 国产精品天天影视久久综合网| 亚洲AV永久无码精品一区二区| 精品水蜜桃久久久久久久| 国产最新进精品视频| 精品国产_亚洲人成在线高清| 欧美精品人爱a欧美精品| 国产在线精品网址你懂的| 日韩精品中文字幕第2页| 国产精品理论片在线观看| 亚洲国产精品无码中文字| 国产精品青草视频免费播放| 国产成人精品天堂| 无码精品一区二区三区在线 | 精品国产不卡一区二区三区| 99精品久久精品一区二区| 最新国产精品拍自在线播放| 久久发布国产伦子伦精品| 精品人妻va出轨中文字幕| 久久无码人妻精品一区二区三区| 久久精品国产亚洲欧美| 精品无码一区在线观看| 麻豆精品| 国产精品一级毛片无码视频| 亚洲国产精品13p| 国产精品国产三级国产潘金莲 | 国产精品99精品无码视亚| 最新国产精品亚洲| 国产精品无码一区二区三区电影| 日韩精品无码人妻一区二区三区| 国产成人精品日本亚洲专区 | 久久99精品国产一区二区三区|