这期内容当中的小编将会给大家带来有关C语言中for循环语句的用法,以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
for循环是编程语言中一种开界的循环语句,而循环语句 由循环体及循环的终止条件两部分组成,for循环其在各种编程语言中的实现与表达有所出入,但基本为以C语言和pascal语言代表的两种形式。
for 循环语句的一般形式为:
for (表达式1; 表达式2; 表达式3) { 语句; }
首先要强调两点:
1) 表达式1、表达式2和表达式3之间是用分号;隔开的,千万不要写成逗号。
2) for(表达式1;表达式2;表达式3)的后面千万不要加分号,很多新手都会犯这种错误——会情不自禁地在后面加分号。
因为 for 循环只能控制到其后的一条语句,而在C语言中分号也是一个语句——空语句。所以如果在后面加个分号,那么 for 循环就只能控制到这个分号,下面大括号里面的语句就不属于for循环了。
下面来看看它的执行过程:
求解表达式1。
求解表达式2。若其值为真,则执行for语句中指定的内嵌语句,然后执行第3步;若表达式2值为假,则结束循环,转到第5步。
求解表达式3。
转回上面第2步继续执行。
循环结束,执行 for 语句下面的语句。
从这个执行过程中可以看出,“表达式1”只执行一次,循环是在“表达式2”“表达式3”和“内嵌语句”之间进行的。
for语句最简单的形式是:
for (循环变量赋初值; 循环条件; 循环变量增值) { 语句; }
C语言的四种运行模型(箭头表示循环方向):
(1)三角基本模型:
例子:
(2)中间循环体被省略得只剩下";"空语句时的左右往返模型:
条件表达式↹末尾循环体
例子:
(3)末尾循环体被省略后的上下往返模型:
条件表达式
↓↑
中间循环体
(4)条件表达式被省略得只剩下";"空语句时,中间循环体或末尾循环体带有跳出语句时的模型
看完上面四个模型后,你会发现其实它的完成的都是同一个问题,但可以写成这么多种模型,当然了,这只是省略其中一个语句的模型,你也可以仿照着侵略得只剩下一个语句都可以,前提是不要搞成死循环!
下面给大家写一个程序,求 1+2+3+4+…+100 的总和。
# include <stdio.h> int main(void) { int i; int sum = 0; //sum的英文意思是“总和” for (i=1; i<=100; ++i) //++是自加的意思, ++i相当于i = i + 1 { sum = sum + i; /*等价于sum += i;但是不建议这么写, 因为sum = sum + i看起来更清楚、更舒服*/ } printf("sum = %d\n", sum); return 0; }
输出结果是:
sum = 5050
这个程序的功能是实现求 1+2+3+4+…+100 的和,如果不用循环,加一次就要一条语句,加 100 次就要 100 条语句。这里是从 1 加到 100,要是从 1 加到 10000 那就要 10000 条语句。但有了循环就很方便了,你想加到多少就加到多少,只要改一个参数就可以了。所以循环很重要。
下面按照执行过程看看上面这个程序是怎样执行的。
1、首先定义一个循环变量 i。定义的时候可以不给它赋初值,在 for 循环里面再给它赋初值也行。但前面说过,最好在定义变量的时候就对它进行初始化,如果值不确定就初始化为 0。所以程序中也可以在定义 i 的时候就给它赋初值,那么 for 循环里的“表达式1”就可以省略了,但分号不可以省略。
这样的话,执行的时候就跳过第1步,直接进入第2步,其他的不变。所以程序也可以像下面这样写:
# include <stdio.h> int main(void) { int i = 1; int sum = 0; for (; i<=100; ++i) { sum = sum + i; } printf("sum = %d\n", sum); return 0; }
当然表达式1加上也行,大不了再重新赋一次值。
2、然后定义一个用来存放“和”的变量 sum,并给它赋初值 0,然后进入 for 循环:
首先求解表达式1,即给变量i赋初值,i=1;表达式1只执行这一次,下面都不会再执行了。
然后求解表达式2,若 1<=100 成立,则执行 for 循环中的内嵌语句,即 sum=0+1。
然后执行第3步,变量 i 自加 1,即变量 i 由 1 变为 2。
然后再求解表达式2,2<=100 成立,则执行 for 循环中的内嵌语句,sum=0+1+2。
然后再执行第3步,变量 i 自加 1,即变量 i 由 2 变为 3。
然后再求解表达式2,即 3<=100 成立,则执行 for 循环中的内嵌语句,sum=0+1+2+3。
……
就这样一直循环下去,直到 ++i 等于 100 的时候,求解表达式2,即 100<=100 成立,则执行 for 循环中的内嵌语句,sum=0+1+2+3+…+100。
然后再执行第3步,变量 i 自加 1,即变量 i 由 100 变为 101。然后再求解表达式2,即 101<=100 不成立,则结束循环,执行 for 循环下面的语句即 printf。
以上就是这个程序的执行过程。关于 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 的话每次只需要判断一次。
下面再给大家写一个程序,求 1 到 100 之间所有奇数的和。
# include <stdio.h> int main(void) { int i; int sum = 0 ; for (i=1; i<100; i+=2) //i+=2;等价于i = i + 2; { sum = sum + i; } printf("sum = %d\n", sum); return 0; }
输出结果是:
sum = 2500
上述就是小编为大家分享的C语言中for循环语句的用法了,如果您也有类似的疑惑,不妨碍参照上述分析进行理解。如果想了解更多相关内容,请关注亿速云行业资讯。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。