为了账号安全,请及时绑定邮箱和手机立即绑定

正在回答

2 回答

#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;
}

把我的思路分享给大家,可能有点啰嗦繁琐,大神勿喷,我也是小白,如果觉得有用请采纳,码字辛苦,请大家给我点鼓励,谢谢

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

        }


3 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
C语言入门
  • 参与学习       926306    人
  • 解答问题       20799    个

C语言入门视频教程,带你进入编程世界的必修课-C语言

进入课程
意见反馈 帮助中心 APP下载
官方微信