close

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
/*
enter odd number
ex:5

    *
  ***
*****
  ***
    *
*/

int main()
{
    int odd;
    printf("input one odd:\n");
    scanf("%d",&odd);

    int i,j;
    int middle;
    int iplusj; // i + j

    middle=odd/2;

    for(i=0;i<odd;i++)
    {
        for(j=0;j<odd;j++)
        {
            iplusj=fabs(i-middle)+fabs(j-middle);


            if(iplusj<=middle)
            {
                printf("*");
            }

                else
               {
                   printf(" ");
               }
        }
            printf("\n");
    }

    return 0;

}

 

想法大概是:

以奇數5為例

     j  0  1  2  3  4

i

0          *
1         ***
2       *****
3         ***
4           *
5

 

可以發現middle是2
所有行列數值扣掉middle取絕對值後

    行21012

2    43234
1    32123
0    21012
1    32123
2    43234

可以發現<middle的部分就是星星的位置囉!!

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 布拉怡 的頭像
    布拉怡

    nini的部落格

    布拉怡 發表在 痞客邦 留言(0) 人氣()