大家帮我看看这个程序哦
# include<stdio.h>main( )
{int i,j;
for(i=4;i>=1;i--)
{
printf("*");
for(j=1;j<=4-i;j++)
printf("*");
printf("\n");
}
}
我不明白这里的*与j是什么关系啊
----------------解决方案--------------------------------------------------------
j 是控制输出 * 的数目. i 是行数
----------------解决方案--------------------------------------------------------
我给你分析一下过程你就知道了
当i=4时,打印一个*,然后循环
当i=3时,再打印一个*,然后执行 for (j=1,j<4-i;j++) (此时j的范围是j<=1),所以再打印一个*
当i=2时,打印一个*,然后执行 for (j=1,j<4-i;j++) (此时j的范围是j<=2),所以要打印两个*
当i=1时,打印一个*,然后执行 for (j=1,j<4-i;j++) (此时j的范围是j<=3),所以要打印三个*
当i=0时,退出~
所以结果就是:
*
**
***
****
----------------解决方案--------------------------------------------------------
for循环与while循环的区别
即使条件不成立,
for循环也要执行一次。
----------------解决方案--------------------------------------------------------
i 和 j 的关系控制着打印多少*,
随着i 的减小,j 控制的内循环的循环次数也更见多了。
[[italic] 本帖最后由 cosdos 于 2007-11-26 15:01 编辑 [/italic]]
----------------解决方案--------------------------------------------------------
/* 一个修改版本,很容易理解的 */
#include <stdio.h>
int main(void)
{
int i, j;
for(i = 1; i <= 4; i++)
{
for(j = 1; j <= i; j++)
printf("*");
printf("\n");
}
getchar();
return 0;
}
/* 此版本根据 i 的大小,控制打印 * 的个数 */
----------------解决方案--------------------------------------------------------
J 是行
*是个数
----------------解决方案--------------------------------------------------------
谢谢大家的回答啊
----------------解决方案--------------------------------------------------------
我把程序改了一下
#include<stdio.h>
int main( )
{
int i,j;
for( i=1; i<5; ++i )
{
for( j=i; j>0; --j )
printf("*");
printf("\n");
}
return 0 ;
}
----------------解决方案--------------------------------------------------------