接上篇 7. if的常见问题解析
空语句问题:
-----------------------------------------------------------------------------------------------------------------------------
循环:
定义:某些代码会被重复执行
分类:一、for
1. 格式:
for(1;2;3)
语句A;
2.执行的流程【重点】:1-2-语句A-3 一次循环结束-2-语句A-3 两次循环结束.....
3. 范围问题
4. 举例
循环的好处:通过改一个地方改变功能
循环举例1:
循环举例2:for和if的嵌套使用
注意:
for(i = 0; i < 4; ++i) //循环4次
printf("aaaa\n");
for(i = 5; i < 90; ++i) //循环90-5=85次
printf("aaaa\n");
练习:
求1-100之间的奇数之和
求1-100之间的奇数的个数
求1-100之间的奇数的平均值
求1-100之间的奇数之和和偶数之和
举例:1 + 1/2 + 1/3 + ...+ 1/100
这个程序语法没问题,但是得到结果不对
因为int是整型,得到的结果一定是整型
注意:float必须用%f输出
若i仍想定义为int型,可在用时强制类型转换
强制类型转换
格式:(数据类型)(表达式)
功能:把表达式的值强制转化为前面所执行的数据类型
例子:(int)(4.5+2.2)——最终值为6
(float)(5)——最终值为5.00000
问题:为什么循环更新的变量不能定义成浮点型?
因为浮点型是非准确存储
5. 多个for循环的嵌套使用【非常重要】
for(1;2;3)
for(4;5;6)
A;
B;
先执行1——执行2成立——执行4——执行5成立——执行A——执行6——执行5成立....——执行5不成立——执行3——执行2——执行内部for——执行3——执行2不成立——执行B——退出循环
补充:自增自减、三目运算符、逗号表达式
①自增自减:最终都使i值加1,但是
i++ :后自增,整体表达式的值是i加1之前的值;也就是先运算在加1
++i :前自增,整体表达式的值是i加1之后的值;也就是先加1再运算
例如:i = j = 3;k = i++;m = ++j——最终i=4,j = 4, k = 3, m = 4
为什么会出现自增自减这种运算符?——代码更精炼;自增速度更快;
学习自增要注意以下几个问题:
1.i++和++i单独成为一个语句,不要把它作为一个完整符合语句的一部分来使用
2.编程时应尽量避免掉前自增与后自增的差别
②三目运算符: (A) ?(B) : (C)
等价于:
if(A)
B;
else
C;
③逗号表达式
格式:(A , B , C , D)
功能:从左到右执行,最终表达式的值是最后一项的值,即D的值。
例如: int i;int j = 2;i = (j++ , ++j , j + 2 , j - 3);——最后i的值:1
复习:多个for循环嵌套时执行顺序【重点】
下节课讲:while、do...while break和continue