为什么代码给我错误的三角形?

时间:2019-02-06 16:43:00

标签: c

做一个三角形

*
**
***
****
*****
******
*******
********
*********
**********
***********
************

int rows = 12, i = 1, j = 1;

    while(i <= rows)
    {
        while(j <= i)
        {
            printf("*");
            j++;

        }
        printf("\n");
        i++;
        j=1;

我尝试制作一个像

的三角形
********
*******
******
*****
****
***
**
*

但是我错了。

2 个答案:

答案 0 :(得分:0)

您有问题

while(j <= i) 

循环。这是我的解决方案:

int rows = 12, i = 1, j = 1;

while (i <= rows)
{
    while (j <= (rows - i +1))
    {
        printf("*");
        j++;

    }
    printf("\n");
    i++;
    j = 1;
}

答案 1 :(得分:0)

基本上,您必须扭转循环。因此,对于代码中的每个循环,您要增加i的每个迭代的实例数*。这是因为ij从1开始并增加,直到迭代次数等于rows

int rows = 12, i = 1, j = 1;

while (i <= rows)
{
    while (j <= (rows - i +1))
    {}
}

您想要的是从12开始,每次递减直到您击中0。因此,您可以松开变量rows,并将ij设置为相等到12。在外部while()循环中,每次内部循环关闭时,您要递减i并重置j = i。内循环应打印*并减j。以下是我的解决方案,但是Loc Tran's答案也一样。

int main(void){
int i = 12, j = 12;

while(i >=0)
{
    while(j >= 0)
    {
        printf("*");
        j--;

    }
    printf("\n");
    i--;
    j=i;
}

}

如果这是用于学校作业(我在一年级的课程中有过类似的经历),建议您尝试理解为什么您的代码与所提供的解决方案不同。