One 许增宝

化繁为简打印99乘法表
最近看 win32api 方面的东西,对 C 功底的要求很高,感觉有必要把 C 认认真真的再学一边,以前学的太仓促...
扫描右侧二维码阅读全文
06
2019/03

化繁为简打印99乘法表

最近看 win32api 方面的东西,对 C 功底的要求很高,感觉有必要把 C 认认真真的再学一边,以前学的太仓促了!

简化程序,打印方阵

 99乘法表有9行9列,我们先简化一下,来一步步实现这个问题,比如我们先不要考虑打印99乘法表,我们先考虑如何打印一个9行9列的乘号*方阵,对于这样有行又有列的问题,肯定要使用到嵌套for循环,外层循环用于行,内层循环用于列,先来定义外层循环for (i = 1; i < 10; i++),这样就定义了一个有9行内容的循环,接着再定义内层循环,有9列内容for (j = 1; j < 10; j++),具体代码和输出结果如下:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int i, j;
    for (i = 1; i < 10; i++)
    {
        for (j = 1; j < 10; j++)
        {
            printf("*");
        }
        printf("\n");
    }
    system("pause");
    return 0;
}
/*
输出结果:
*********
*********
*********
*********
*********
*********
*********
*********
*********
*/

进阶程序,打印三角形

 这个*方阵打印好了,这是99乘法表的雏形,接着我们想一想如何打印出三角形,我们外层循环先不变,因为变外层循环的话,根本无解,所以考虑在内层循环上面动手脚,使第一行有1个*,第二行有两个**,一次递增,所以内层循环的次数是要改变的,因为每循环一次,*就多打印一次,又因为每次进入内层循环后,循环的次数都是不一样的,所以这是动态的,纵观程序,动态的变量只有ij,试着考虑在和两个变量上面动手脚,最终得出for ( j = 1; j <= i ; j++),具体代码和输出结果如下:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int i, j;
    for (i = 1; i < 10; i++)
    {
        for (j = 1; j <= i; j++)
        {
            printf("*");
        }
        printf("\n");
    }
    system("pause");
    return 0;
}
/*
输出结果:
*
**
***
****
*****
******
*******
********
*********
*/

最终程序,99乘法表

 上面的由*组成的三角形是否有点熟悉?不正是99乘法表里面的乘法符号吗?最后一步我们就差把数字打印上去了,这是最简单的一步,我们知道,乘法表中每一行和每一列均有一个数字是不变的,在这里就是ij,所以具体代码如下:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int i, j;
    for (i = 1; i < 10; i++)
    {
        for (j = 1; j <= i; j++)
        {
                        // \t 为制表符
            printf("\t%d*%d=%d   ", j, i, i*j);
        }
        printf("\n");
    }
    system("pause");
    return 0;
}
/*
输出结果:
1*1=1
1*2=2           2*2=4
1*3=3           2*3=6           3*3=9
1*4=4           2*4=8           3*4=12          4*4=16
1*5=5           2*5=10          3*5=15          4*5=20          5*5=25
1*6=6           2*6=12          3*6=18          4*6=24          5*6=30          6*6=36
1*7=7           2*7=14          3*7=21          4*7=28          5*7=35          6*7=42          7*7=49
1*8=8           2*8=16          3*8=24          4*8=32          5*8=40          6*8=48          7*8=56          8*8=64
1*9=9           2*9=18          3*9=27          4*9=36          5*9=45          6*9=54          7*9=63          8*9=72          9*9=81
*/

各位读者如果有什么疑问或者文章有任何错误和建议可以戳下方来评论!

最后修改:2019 年 04 月 14 日 02 : 41 AM

发表评论