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

关于4-12的

#include <stdio.h>
int main()
{
    int i, j, k;
    for(i=1; i<5; i++)
    {
        /* 观察每行的空格数量,补全循环条件 */
        for(j=i ;j<5;j++  ) 
        {
            printf(" ");    //输出空格
        }
        /* 观察每行*号的数量,补全循环条件 */
        for( k=0;k<2*i-1; k++   )
        {
            printf("*");   //每行输出的*号
        }
        printf("\n");     //每次循环换行
    }
    return 0;
}

请问那个子循环和孙循环的表达式分别是什么意思,看了半天没看懂为什么要这样写,那个大神讲解一下,谢谢

正在回答

3 回答

这题是要打印二维星号的问题吧,第一第二子循环是基于题目的规律判断,看这条代码指的是每行空格数量与行数(i)存在恒久不变的规律,当执行到第i行,则空格量为5-i;*号的量也是这种思路(*号的数量和所处i行的关系)(啰嗦一点。。。第一行就是2*1-1(1)个,第二行就是2*2-1(3)个,第三行就是2*3-1(5)个,第四行。。。明白了吧·,好好努力,加油。



1 回复 有任何疑惑可以回复我~
#1

慕斯卡1730669 提问者

谢谢,懂了。我纠正一点:空格数量表示的是j<5,因为是小于那就不包括5,所以空格数量是4-i
2016-12-18 回复 有任何疑惑可以回复我~
#2

任仕雨 回复 慕斯卡1730669 提问者

并不是这样,j小于5是题目限定,不过你仔细推算下,第一步,j的初值是1,当j不小于5的时候终结此循环,1.2.3.4,一共4次循环输出空格,也就是5-i(初值为1)个。我当初学这个的时候做过类似的题目并遇到了挫折,所以印象深刻
2016-12-23 回复 有任何疑惑可以回复我~
#3

任仕雨 回复 慕斯卡1730669 提问者

并不是这样,j小于5是题目限定,不过你仔细推算下,第一步,j的初值是1,当j不小于5的时候终结此循环,1.2.3.4,一共4次循环输出空格,也就是5-i(初值为1)个。我当初学这个的时候做过类似的题目并遇到了挫折,所以印象深刻
2016-12-23 回复 有任何疑惑可以回复我~

i=1,i<5是总共输出5行,子循环是判断每行有多少个空格,这个循环的条件我不是很理解,第一行3个,第2行2个,为什么会是那样,不是很懂,孙循环是判断*号个数,第一行1个,第2行3个,第3行5个,按数学方法来看,第i行就有2i-1个

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

从程序看有3个循环结构一个大循环包含两个小循环,大的为i两个小的分别为j和k i为行数, j在第i所表示的行中输出空格,输出空格结束后用k来补*号,第一行4空格,1*
第二行3空格,2*
第三行2空格,3*依次类推。

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

举报

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

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

进入课程

关于4-12的

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信