站長資訊網(wǎng)
        最全最豐富的資訊網(wǎng)站

        用循環(huán)打印菱形_C語言算法

         

          菱形打印

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

          *

          ***

          *****

          ***

          *

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

         

          #include

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

          void print(int size) // size是這個(gè)菱形的半徑,直徑會(huì)是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各自的絕對(duì)值的和,即 |x| + |y| <= size

          putchar(‘*’);

          else putchar(‘ ‘);

          }

          putchar(‘n’);

          }

          }

          int main()

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

          }

         

          如果我需要得到空心菱形呢?非常非常簡單,因?yàn)榱庑芜吔缟系狞c(diǎn),滿足的是|x| + |y| == c 所以,我們只要把那個(gè)if里的小于等于號(hào),改成雙等于號(hào) == 就可以了。

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

         

          即:

          A

          ABA

          ABCBA

          ABA

          A

         

          那么,我們只要在putchar那里做一個(gè)字符計(jì)算:

         

          void print(int size) // size是這個(gè)菱形的半徑,直徑會(huì)是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各自的絕對(duì)值的和,即 |x| + |y| <= size

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

          else putchar(‘ ‘);

          } putchar(‘n’);

          }

          }

         

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

          * *

          * *

          *

          * *

          * *

         

          同樣可以利用這個(gè)思路完成。

        贊(0)
        分享到: 更多 (0)
        網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)
        主站蜘蛛池模板: 精品亚洲国产成AV人片传媒| 国产伦精品一区二区免费| 日本人精品video黑人| 亚洲精品乱码久久久久久蜜桃| 97久久国产亚洲精品超碰热| 中文字幕日韩精品有码视频| 国产原创精品 正在播放| 国产一区二区精品久久| 久久久一本精品99久久精品88| 久久人搡人人玩人妻精品首页 | 国产成人精品综合在线观看| 国产精品va无码一区二区| 亚洲爆乳精品无码一区二区三区 | 精品国产精品国产偷麻豆| 中文字幕精品一区二区精品| 日韩精品免费一线在线观看| 国语自产精品视频| 精品第一国产综合精品蜜芽| 国产91精品黄网在线观看| 亚洲精品成人av在线| 久久这里只有精品首页| 国产亚洲综合成人91精品| 97久久国产亚洲精品超碰热| …久久精品99久久香蕉国产| 国产精品亚洲а∨无码播放| 精品人妻中文av一区二区三区| 无码人妻精品一区二区三区久久| 影院无码人妻精品一区二区| 亚洲国产主播精品极品网红| 欧美国产成人精品一区二区三区 | 男人的天堂精品国产一区| 蜜臀久久99精品久久久久久| 欧美精品福利在线视频| 亚洲AV永久无码精品一区二区国产| 欧美精品三区| 中文字幕乱码中文乱码51精品 | 久久久精品午夜免费不卡| 四虎精品免费永久在线| 6080亚洲精品午夜福利| 国产精品国产AV片国产| 精品久久人人妻人人做精品 |