关于算法的输出图形问题
for(i=1; i<5; i++)
{
for(j=1;j<5;j++ )
{
printf(" ");
}
for(k=0;k<2*i-1;k++)
{
printf("*"); /
}
printf("\n");
划线部分求解析,越详细越好
for(i=1; i<5; i++)
{
for(j=1;j<5;j++ )
{
printf(" ");
}
for(k=0;k<2*i-1;k++)
{
printf("*"); /
}
printf("\n");
划线部分求解析,越详细越好
2015-08-06
兄弟,我好心帮你,你要认真全部看完
你这是要输出直角三角形吗?如果是,请往下看;如果不是,请看下一段。
直角三角形
先在最后面加一个"}"
for(i=1;i<5;i++)
这个for语句是控制行数的,表示一共要输出几行。
i=1表示从第一行开始
i<5表示没输完四行时
执行循环体
i++表示循环完一遍后i+1
for(j=1;j<5;j++ )
这个for语句是控制空格数的,表示要输出几个空格。
j=1表示将要输出第1个空格
当j<5时
(<5表示一共要输出4个空格,则j<5表示当没输完四个空格时执行循环体)
输出一个空格
j++表示循环完一遍后j+1
至于for(k=0;k<2*i-1;k++)
就是用来控制输出几个*号
k=1表示将要输出的是第1个*
因为k是从0开始,所以<2*i-1表示一共要输出2*i-1个*
k<2*i-1表示当要输出的*没输完时
输出*
k++表示k+1
我再讲一遍流程:
从第一行开始,
输出四个空格,
输出一个*;
到第二行,
输出四个空格,
输出三个*;
······
以此类推,最后就会输出一个直角三角形。(当然,每一行多出了四个空格)
等腰三角形
先把for(j=1;j<5;j++)改成for(j=1;j<5-i;j++)
再在最后面加一个“}”
for(i=1;i<5;i++)
这个for语句是控制行数的,表示一共要输出几行。
i=1表示从第一行开始
i<5表示没输完四行时
执行循环体
i++表示循环完一遍后i+1
for(j=1;j<5;j++ )
这个for语句是控制空格数的,表示要输出几个空格。
j=1表示将要输出第1个空格
当j<5-i时
(<5-i表示这一行共要输出的空格数,则j<5表示当没输完5-i个空格时执行循环体)
输出一个空格
j++表示循环完一遍后j+1
至于for(k=0;k<2*i-1;k++)
就是用来控制输出几个*号
k=1表示将要输出的是第1个*
因为k是从0开始,所以<2*i-1表示一共要输出2*i-1个*
k<2*i-1表示当要输出的*没输完时
输出*
k++表示k+1
我再讲一遍流程:
从第一行开始,
输出三个空格,
输出一个*;
到第二行,
输出两个空格,
输出三个*;
······
以此类推,最后就会输出一个等腰三角形。
好了,这是我一个小时的心血,如果你觉得好,就支持一下,鼓励一下,采纳一下吧。
——————一个志同道合者
举报