一个for循环打印九九乘法表
程序员文章站
2022-06-24 15:43:08
...
无论是学习哪一门编程语言,九九乘法表都是逃不开的循环示例,那如果只用一个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循环
}
运行结果: