Mic*_*_19 0 c loops for-loop nested
当用户为钻石输入5时,我希望能够打印出这样的钻石.但也适用于任何奇数且大于0的值.

我有一个代码,用于为用户输入5制作钻石,但不适用于所有奇数输入..
half = (size/2)+1;
for (a=1; a <= half ; a++) /*top to mid row of diamond*/
{
for (b=a; b<half;b++)
{
printf(" ");
}
for (c= size -2* a; c <= half; c++)
{
printf("*");
}
printf("\n");
}
for (a = 1; a < half;a++)
{
for (b = a; b>0;b--)
{
printf(" ");
}
for (c = size-2*a; c >0 ;c--)
{
printf("*");
}
printf("\n");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.谢谢.
麦克风
小智 5
这里有两件事:
缩进更改(-1到"mid","+1"后面)
星数变化(+2到"中",-2"后")
现在,这可以通过两个循环完成(一个用于顶部到"mid"和一个"after"),但是值也可以用一点数学来确定.让我们探讨一下 :-)
这是数字:
s(spaces) x(stars) n(line number) __X 2 1 0 _XXX 1 3 1 XXXXXX 0 5 2 _XXX 1 3 3 __X 2 1 4
首先要注意的s是关于"mid"的对称性:
然后这x与s(如上面的增量中所述的2)相关:
希望能给出一些见解!