求大神指点 为什么输出来的不完整

来源:4-13 使用for循环打印9×9乘法表

南笙依言

2016-09-06 11:49

#include <stdio.h>

int main() 

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

    int i, j, result;

    /*

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

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

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

     */

    for(i=9,j=1;j<=i;i--)

    {

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

        {

            result=i*j;

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

        } 

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

    }

 

    return 0;

}


写回答 关注

3回答

  • imooc_粉丝
    2016-09-11 14:27:59

    你的代码看上去逻辑十分的混乱,i代表*号前边的数字,j代表*号后边的数字,result代表他们相乘的结果,一行一行的看,先分析第一行,你可以看到第一行i=9不变,第二行i=8,i的最后一行等于1,每一行的j逐渐增大,j的步值为1,且j的值最大不超过i,所以j<=i;这样可以使用一个外部循环描述i的变化,for(i=9;i>=0;i--),再嵌套一个走循环,实现J的逻辑for(j=1;j<=i;j++),外部循环执行一次,子循环需要全部执行完才能跳出循环再执行第二次的外部循环,依次类推,即可实现这个效果的逻辑,代码如下:

    #include <stdio.h>
    int main() 
    { 
        // 定义相乘数字i,j以及结果result
        int i, j, result;
        /*
         * 使用for循环解决本题相对简单哦~
         * 小编偷偷的将源码放在任务“不会了怎么办”中了哦~
         * 小编希望童鞋们独立完成哦~
         */
        for(i=9;i>=0;i--)
        {
            for(j=1;j<=i;j++)
            {
                result=i*j;
                printf("%d*%d=%d\t",i,j,result);
            }
            printf("\n");
        }
        
        return 0;
    }

    如果帮到你,请采纳,谢谢!!!

  • JustWannaHugU
    2016-09-06 14:31:49

    你代码中的for循环i和j弄错了

    JustWa... 回复南笙依言

    i代表的是行数,j表示列数 printf(" ");输出的是空格,哪不明白继续问,满意就采纳下吧~^_^

    2016-09-07 12:44:44

    共 2 条回复 >

  • lanlanlan1
    2016-09-06 14:17:50

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

         {

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

             {

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

                 printf("  ");

             }

         }


    南笙依言

    printf(" "); 这是什么?空格?

    2016-09-07 08:59:21

    共 1 条回复 >

C语言入门

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

926021 学习 · 20793 问题

查看课程

相似问题