C语言for循环案例——实现九九乘法表的三种方法
for语句的格式如下:for (表达式1; 表达式2; 表达式3)语句表达式1是初始化步骤,只执行一次,表达式2是控制表达式,控制循环的终止,表达式3在每次循环的最后被执行。
📑前言
- C语言中的for循环也用于遍历语句或程序的一部分多次,它与while和do-while循环一样。但是,在检查for循环中的条件时,我们可以初始化和递增或递减变量。与while循环不同,for循环中的条件或表达式在语句之前给出,因此可以执行语句0次或多次。
for语句的格式如下:
- 表达式1是初始化步骤,只执行一次,表达式2是控制表达式,控制循环的终止,表达式3在每次循环的最后被执行。
- for语句的执行步骤是:首先执行表达式1进行初始化,然后判断表达式2的值是否为真,若为真,则执行循环体,然后执行表达式3.随后再次对表达式2的值进行判断,若为真,则再次执行循环体和表达式3,依次循环直到表达式2的值为0为止。
- for语句的3个表达式都可以省略,若省略表达式1,则在执行循环前没有初始化的操作;若省略第三个表达式,则执行完循环体后,没有再需要执行的语句,循环体确保循环能够在有限时间内终止;若省略第二个表达式,则每次判断都默认为真,除非在循环体内使用break,goto和程序终止函数外,循环不会停止。
🎯关于 for 语句的代码规范化问题
1️⃣if、else、for、while、do 都只能控制到其后的一条语句,如果要控制多条语句必须加大括号{}。但基于代码规范化,if、else、for、while、do 后面的执行语句不论有多少行,就算只有一行也要加{}。
2️⃣像 if、for、while 等关键字之后应留一个空格再跟左括号(,以突出关键字。
此外上面的程序还有一个知识点要跟大家说一下:从功能上讲,for(i=1; i<=100;++i)完全可以写成for(i=1; i<101; ++i),而且建议大家尽量使用这种写法。也就是说,循环语句的循环条件尽量写成半开半闭的,不管是 for 循环还是 while 循环。
for(i=1; i<101; ++i)实际上是 1≤i<101,是半开半闭的;而for(i=1; i<=100; ++i)实际上是 1≤i≤100,是全闭的。那么为什么建议使用半开半闭的呢?因为如果写成 i<=100 的话,那么每次判断的时候都要判断两次,即 i<100 和 i==100,而写成 i<101 的话每次只需要判断一次。
也许有人说:程序在执行 i<=100 的时候不是将它转换成 i<100||i==100 吗?这样由“短路或”的知识可知,如果前面的为真那么后面的不就不会执行了吗?这样不也是判断一次吗?不是这样的,系统是不会将 i<=100 转换成 i<100||i==100 的,每次判断的时候 i<100 和 i==100 都要判断。
但是写成半开半闭也有一个问题,就是会影响对代码的理解。有时候写成全闭的区间理解起来才顺畅,而写成半开半闭反而不易理解,比如<=右边是变量或表达式的时候。这时候要以可读性为第一要素,即哪种好理解就使用哪种。现在 CPU 速度那么快,也不在乎那点效率。所以前面说“尽量”,没有要求一定要那样写。
❗注意:PC端目录请看文章左手边(默认),app端(移动端)目录请看导航栏处
📚文章目录
🧩第一种
#include <stdio.h>
int main(int argc, char **argv)
{
int i = 0;
int j = 0;
for (i = 1; i <= 9; ++i)
{
for (j = 1; j <= 9; ++j)
printf("%d*%d=%2d\t", i, j, i * j);
printf("\n");
}
return 0;
}
🧩第二种
#include <stdio.h>
int main(int argc, char **argv)
{
int i = 0;
int j = 0;
i = 1;
for (;;)
{
if (i > 9)
break;
j = 1;
for (;;)
{
if (j > 9)
break;
printf("%d*%d=%2d\t", i, j, i * j);
++j;
}
printf("\n");
++i;
}
return 0;
}
🧩第三种
#include <stdio.h>
int main(int argc, char **argv)
{
int i = 0;
int j = 0;
int row = 0;
int col = 0;
for (i = 0; i < 81; ++i)
{
row = i / 9 + 1;
col = i % 9 + 1;
printf("%d*%d=%2d\t", row, col, row * col);
if ((i + 1) % 9 == 0)
printf("\n");
}
return 0;
}
📚C语言——习题、知识点案例,持续更新🔥
🎯点赞收藏,防止迷路🔥
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)