4.12求解
4.12求解
#include <stdio.h>
int main()
{
int i, j, k;
//这里是第一层循环,控制这个图形的行数
for(i=1; i<5; i++)
{
//第二层循环控制每一行的列,每一行一列输出一个空格
//使j=i,那么第二层循环将循环5-i次,例如:
//当i = 1时,第二层循环将循环5-i=4次,输出4个空格,此时第二层循环结束,接下来到第三层循环
//当i = 2时,第二层循环将循环5-i=3次,输出3个空格,此时第二层循环结束,接下来到第三层循环
//如此类推
//如果空格看不到具体效果,可以换成别的符号看
for(j=i;j<5;j++)
{
printf(" "); //输出空格
}
//第三层循环也是控制每一行的列,这里每一行的每一列输出一个*号
//接着第二层循环,通过观察我们了解到,第一层有一列*号,第二层只有三列*号,第三层有五列*号,第四层有七列*号
//规律就是k = i + (i - 1),k指的是*号的个数
//那么只要每一行的*号个数等于i + (i - 1)后,我们就可以结束第三层循环,接着输出下一行,也就是回到第一层循环
//例如(为了方便查看在这里的第二层空格用#号表示):
//当i=1时(第一行),第二层循环将输出4个#号,第三层k=1+1-1=1;输出####*,结束第三层循环,回到第一层循环
//当i=2时(第二行),第二层循环将输出3个#号,第三层k=2+2-1=3;输出###***,结束第三层循环,回到第一层循环
//当i=3时(第三行),第二层循环将输出2个#号,第三层k=3+3-1=5;输出##*****,结束第三层循环,回到第一层循环
//当i=4时(第四行),第二层循环将输出1个#号,第三层k=4+4-1=7;输出#*******,结束第三层循环,回到第一层循环
for(k=1;k <=i + (i - 1);k++)
{
printf("*"); //每行输出的*号
}
printf("\n"); //每次循环换行
}
return 0;
}把我的思路分享给大家,可能有点啰嗦繁琐,大神勿喷,我也是小白,如果觉得有用请采纳,码字辛苦,请大家给我点鼓励,谢谢
for(j=i;j<5;j++ ) //这里是根据屏幕上空格的规律写的,i=1,j=1,所以j=1,2,3,4会输出4个空格,i=2的时候j=2,j=2,3,4会输出三个空格,输出开始的位置不会因为循环开始的数值不一样而改变,然后就是最后一行前面其实也是有1个空格的。
{
printf(" "); //输出空格
}//这里是根据屏幕上空格的规律写的,
for(k=0;k<i*2-1;k++ ) //这里是接在上面输出完空格后再输出的,所以开始位置是由输出完的空格位置决定的。输出完要输出的星号之后直接换行不用在输出了,星号的个数跟行数i之间的关系k<i*2-1;
{
printf("*"); //每行输出的*号
}
举报