一个for循环打印九九乘法表

无论是学习哪一门编程语言,九九乘法表都是逃不开的循环示例,那如果只用一个for循环怎么实现呢?
先来看常规的双重循环代码:

void multable()
{
    //使用双重循环,实现99乘法表
    int i, j;//定义i,j两个变量
     // 口诀:外层循环控制行,内层循环控制列
    for (i = 1; i <= 9; i++)//外层循环,给i赋初始值,并且确定99乘法表,有9行
    {
        for (j = 1; j <= i; j++)//内层循环,给j赋初值,每一行有多少列由行确定,第一行有一列,第二行有两列,由此推出j<=i
        {
            printf("%ld*%ld=%2d\t", j, i, i*j);
        }
        printf("\n");
    }
}

运行:

int main() {
    multable();//双重循环
}

运行效果:
这里写图片描述
要想用一个for实现九九乘法表,我们先来看一下for循环的工作顺序

for(表达式1;表达式2;表达式3)
循环体语句

执行过程:
1.求解”表达式1”的值
2.求解”表达式2”的值,并判断,若满足则转至步骤3,否则转步骤5
3.执行一次循环体语句
4.求解表达式3,转至步骤2,构成循环
5.结束循环,执行for循环之后的语句.
注意:
1.两个分号不能少;
2.表达式是任选项,可以省略

思路:
1.把内层循环中的列与外层循环写到一起,改成一个for循环
1.1内层循环中的表达式1与外层循环的表达式1写到一起(即同时给i,j赋初值);
1.2内层的循环次数j由外层循环次数i决定,因此,内层的循环条件判断放到外层的循环体内
1.3由于只有一个for循环,所以内层循环变量j和外层循环i变量需要写到循环体中

void multable2() {
    int i, j;//定义i,j
    for (i = 1, j = 1; i <= 9; ) {//i控制行,j控制列,省略表达式3;
        printf("%d*%d=%d\t",j,i,j*i);//先打印
        j++;
        if (j>i) {//当j>i的时候,说明改换行了,i++,并且j也应该重置
            printf("\n");
            i++;
            j = 1;
        }
    }
}

运行:

int main() {
    multable();
    multable2();    //一个for循环
}

运行结果:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/weixin_36027342/article/details/80375606
今日推荐