6.5 用for 语句实现循环
牢记:
1、for 语句的一般形式:
- for(表达式1,表达式2,表达式3)语句
- for(循环变量赋初始值;循环条件;循环变量增值)语句
-
for(i = 1; i <= 100; i++) sum=sum+i;
注:
① 上部分是语句形式,下部分是每一表达式对应的内容含义
② 括号以及括号中的分号要用英文半角
③ 3个表达式按从左往右顺序执行,如果表达式 2 判断是假(值为 0),则不执行表达式 3,程序结束循环,执行 for 后面的语句。
④ 表达式 1 仅求解一次
附上for循环语句流程图:
又注:
从流程图中可直观地看出,表达式2求值只有两种结果:①非0(真)② 0 (假)
若表达式2为假,直接跳出循环。
例题:for循环求和
#include <stdio.h>
void main()
{
int i = 1, sum=0;
for(i = 1;i<=100; i++)sum=sum+i; //语句只有一句,不需要用花括号括起来
printf("%d\n",sum);
}
上述程序的变式:
掌握核心问题:表达式1,2,3均可省略,但分号必须保留
仍然以为例:
- 省略表达式 1 后的解决方法,在程序开头先定义好变量。
#include <stdio.h>
void main()
{
int i = 1,sum=0;
for(;i<=100;i++)sum=sum+i;
printf("%d\n",sum);
}
- 如果表达式 2 空缺,程序会判定为真,一直循环下去。
#include <stdio.h>
void main()
{
int i , sum=0;
for( i = 1;;i++)sum =sum+i; //表达式2永远为真,程序一直循环
printf("%d\n",sum);
}
- 表达式3空缺,可以在循环体中添加循环结束的条件。
#include <stdio.h>
void main()
{
int i , sum = 0;
for( i = 1;i<=100;)
{
sum=sum+i;
i++;
}
printf("%d\n",sum);
}
总结:
- 无论哪种形式,i , sum 这些变量都要定义好,设好初始值。
- 牢记表达式2是判断条件,1,3表达式的位置还可以加入与循环无关的表达式,不影响循环的正常进行。
- 表达式可以是关系表达式(i<=100),也可以是逻辑表达式(a<b&&x<y),再次强调:只要表达式 2 的值非0,循环体就会执行。
(附注:&& 表示 与 ,即同时满足非0/真,表达式的值才为真)
另外,还有for 循环的一些特殊应用:
(备注:这个题目理解还不够透彻,以后可以回头看)