做一个三角形
*
**
***
****
*****
******
*******
********
*********
**********
***********
************
int rows = 12, i = 1, j = 1;
while(i <= rows)
{
while(j <= i)
{
printf("*");
j++;
}
printf("\n");
i++;
j=1;
我尝试制作一个像
的三角形********
*******
******
*****
****
***
**
*
但是我错了。
答案 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
的每个迭代的实例数*。这是因为i
和j
从1开始并增加,直到迭代次数等于rows
。
int rows = 12, i = 1, j = 1;
while (i <= rows)
{
while (j <= (rows - i +1))
{}
}
您想要的是从12开始,每次递减直到您击中0。因此,您可以松开变量rows
,并将i
和j
设置为相等到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;
}
}
如果这是用于学校作业(我在一年级的课程中有过类似的经历),建议您尝试理解为什么您的代码与所提供的解决方案不同。