#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的部分就是星星的位置囉!!