循环
for
1.格式
for(1;2;3)
{
语句A;
语句B;
}
2. 执行流程(以一个例子来说明,序号代表一个语句)
#include<stdio.h>
int main(void)
{
int i,sum;
sum=0;
for(①i=1;②i<=3;③++i)
{
④sum=sum+i;
}
⑤ printf("%d",sum);
return 0;
}
在for循环中的执行顺序:
⑴先执行①,再执行②。如果②成立,执行④,最后执行③。一次循环结束。
⑵先执行②(第二次循环不执行①),再执行②。如果②成立,执行④,最后执行③。第二次循环结束。
……直到②不成立,则循环结束。继续执行⑤。
3.有穷性
循环必须具有有穷性,不能无限循环
4.范围问题
for默认只能控制一个语句,控制多个需用大括号括起来(和if一样)
5.强制数据类型转换
①格式: (数据类型)(表达式\也可以是某个量)
②举例:
//将表达式的值(浮点数型)强制转换为整型
float i;
(int) (i*0.9);
//将整型变量强制转换成浮点型
int i ;
(float) (i);
③功能
将表达式的值强制转换为前面的数据类型
6.试数技巧
①不要去想程序的目的,把自己当做计算机,一步步去试
②不要省略步骤
③要写整齐,有逻辑性
7.浮点型的存错所带来的问题
①原因
float和fouble都不能保证准确地存储一个值(并非所有值都不能准确存储,只是不能保证每一个都准确存储)
②举例
有一个浮点数x,如何判断x的值是否等于零
if (x–0.000001的绝对值<=0.000001)
等于零
else
不等于零
②注意
循环中更新(自加或自减)的变量不能定义为浮点型,因为浮点型是一个非准确存储
7.for和if嵌套的习题
①注意在定义变量时,一般用sum表示和,用cnt表示个数
8.多个for嵌套的流程【重难点】
(为方便表示,在此数字代表表达式,称1,2,3所在循环为大循环,称4,5,6所在循环为小循环)
for(1;2;3)
for(4;5;6)
语句A;
语句B;
执行顺序:
①先执行1,再执行2,如果成立,则执行4(小循环开始)
②执行完4后,执行5,若成立则执行语句A,然后执行6……直到2不成立,退出
②退出小循环后执行3,接着执行2,若成立则继续进入第二个循环(步骤同上,再次退出小循环后继续执行3)……直到2不成立,退出大循环,所以循环结束,执行语句B
while
1.格式
while(表达式)
语句;
2.执行顺序
先判断表达式,若为真,执行语句。然后继续判断表达式…直到表达式不成立,退出循环
3.for和while的比较
for和while可以相互转换,但for的逻辑性更强
for(1;2;3)
{
A;
}
等价于
1;
while(2)
{
A;
3;
}
do......while
1.格式
do
{
语句;
} while(表达式);
2.流程
①执行语句
②判断表达式,若成立则继续执行语句,不成立则退出循环(无论表达式是否成立,语句都至少要执行一次)
3.与while和for的比较
do......while......不等价于while或for。因为若表达式不成立,while和for都不执行语句,而do......while要执行一次