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

有人能帮我解释一下这段代码吗?代码没错,但输出的不是题目要求的那样,为什么会这样?

#include <stdio.h>

int main()

{

    int i, j, k;

    for(i=1; i<5; i++)

    {

        /* 观察每行的空格数量,补全循环条件 */

        for(    j=3 ; j>=0 ;  j--  )  

        {

            printf(" ");    //输出空格

        }

        /* 观察每行*号的数量,补全循环条件 */

        for( k=-1 ; k<=7 ;  k=k+2     ) 

        {

            printf("*");   //每行输出的*号

        }

        printf("\n");     //每次循环换行

    }

    return 0;

}


正在回答

3 回答

ijk之间没有一点逻辑联系,每行的打印输出肯定相同啊,你在纠结什么

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

时光丶痕迹 提问者

恩,发现了,是逻辑错了,忘记了子循环要循环尽才会开始下一轮的父循环
2016-09-26 回复 有任何疑惑可以回复我~

代码语法没错,但逻辑完全错误

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

你第三个for循环的“k=-1”错了,for循环是会先执行一次初始化语句即“k=-1”,所以此时不会打出“*”。对吧

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

时光丶痕迹 提问者

不是的,输出结果是每一行的空格和*的数目是相同的
2016-09-26 回复 有任何疑惑可以回复我~
#2

keepgo 回复 时光丶痕迹 提问者

哦,之前没看仔细。的确是语法没错,逻辑错了。
2016-09-26 回复 有任何疑惑可以回复我~
#3

时光丶痕迹 提问者 回复 keepgo

恩,懂了,谢谢
2016-09-26 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

有人能帮我解释一下这段代码吗?代码没错,但输出的不是题目要求的那样,为什么会这样?

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