void draw_diamond(int n)
{
int mid_pos = ceil((double)n / 2);
int left_spaces = mid_pos-1;
int line_stars = 1;
putchar(10);
//printing from top through the middle of the diamond
for(line_stars, left_spaces ; line_stars <= n; line_stars+=2, left_spaces--);
{
//printing the left_spaces
for(int i=1; i<=left_spaces; i++)
putchar(32);
//printing the line_stars
for(int i=1; i<=line_stars; i++)
putchar('*');
putchar(10);
}
...
我在这里遇到问题,当我第一次step into
for loop
时,第二次for loop step is applied
没有任何反应,例如:如果我pass 1 to n
那么:< / p>
mid_pos = 1; left_spaces = 0; line_stars = 1;
它进入循环内部: left_spaces = -1; line_stars = 3;
for loop
打印3颗星,它应该只打印1个。
我很困惑,如果有人能提供帮助,我会很感激。
答案 0 :(得分:5)
for(line_stars, left_spaces ; line_stars <= n; line_stars+=2, left_spaces--);
^
|
这结束了您的for
声明。循环将一直运行,直到line_stars
大于n
。到最后,line_stars
现在将等于3(因为它增加了2)。 left_spaces
将为-1。
现在,大括号括起来的其余代码将会执行。第一个for
循环根本不会运行,但第二个循环将从1开始运行到line_stars
,而且,正如我们所知,line_stars
是3,所以我们打印出3颗星