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

一定是哪里出了问题

代码如下,for和while循环都能成功,同样的思路不知道为什么do-while做不出来,只能打印9*1=9就没了。。。。

#include <stdio.h>

int main() 

    // 定义相乘数字i,j以及结果result

    int i, j, result;

    /*

     * 使用for循环解决本题相对简单哦~

     * 小编偷偷的将源码放在任务“不会了怎么办”中了哦~

     * 小编希望童鞋们独立完成哦~

     */

    /*for(i=9; i>=1; i--)

    {

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

        {

            result = i*j;

            printf("%d*%d=%d    ",i,j,result);

        }

        printf("\n");

    }

    */

    

    /*

    //while循环

    i=9;

    while(i>=1)

    {

        j=1;

        while(j<=i)

        {

            result = i*j;

            printf("%d*%d=%d    ",i,j,result);

            j++;

        }

        i--;

        printf("\n");

    }

    */

    

    //do-while

    do

    {

        i=9;

        do

        {

            j=1;

            result = i*j;

            printf("%d*%d=%d    ",i,j,result);

            j++;

        }while(j>i);

        i--;

    }while(i<1);

    

    

    return 0;

}


正在回答

5 回答

我找到问题出在哪里了哈哈,首先是while里条件理解错了

do-while循环语句的语义是:它先执行循环中的执行代码块,然后再判断while中表达式是否为真,如果为真则继续循环;如果为假,则终止循环

改过以后发现还是不行,原因是j =1赋值位置错了,如果放在do里面,每做完一个运算下一次循环又将j 赋值为1,导致 9*1=9 进入死循环;同理 i =9 也不能放在do里,也会进入9*1=9 的死循环。

终于舒服了


https://img1.sycdn.imooc.com//5cd3098200015ec311970814.jpg

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

while 确实可以用啊

https://img1.sycdn.imooc.com//5cd2fa5e00012fda11900888.jpg

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

你确定while能运行


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

Majesty_x 提问者

确定啊,看我发的图
2019-05-08 回复 有任何疑惑可以回复我~

while里面的不对

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

Majesty_x 提问者

是退出循环不对吗?
2019-05-08 回复 有任何疑惑可以回复我~

老哥逻辑思维强大啊

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

Majesty_x 提问者

大啥啊。。。重点是为啥do-while 做不出来???
2019-05-07 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

一定是哪里出了问题

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