📑前言
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端(移动端)目录请看导航栏处
📚文章目录
📑前言
🎯关于 for 语句的代码规范化问题
🧩第一种
🧩第二种
🧩第三种
🧩第一种
#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语言——习题、知识点案例,持续更新🔥
🎯点赞收藏,防止迷路🔥
如果觉得《C语言for循环案例——实现九九乘法表的三种方法》对你有帮助,请点赞、收藏,并留下你的观点哦!