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("*"); //每行输出的*号
}
举报