第四章 流程控制
1.流程图(当初学的时候觉得很麻烦,现在觉得对整理编程思路帮助还是很大)
2.顺序结构
3.分支结构
1)形式 ( else 总是与其前面最近的 if 配对 )
A . if(表达式)
语句;
B. if(表达式)
语句1;
else
语句2;
C.if(表达式1)
语句1;
esle if(表达式2)
语句2;
...........
esle if(表达式m)
表达式m;
esle n;
注:
I.在 if 语句中表达式通常是逻辑表达式(x&&y),关系表达式(a > b),也可以是赋值表达式(x = y) ,甚至可以是一个变量(x)!
if( x=y ) // 赋值表达式 只要非零就成立
II. if后面不要加 “ ;”
III. if后面养成加括号的习惯
if ( 表达式 )
{
}
else
{
}
IV,建议使用if( 0 == x)这种形式(因为很容易错写成 if ( x =0 ),你本来是想判断x是否等于零,但语句x = 0程序会编译通过,而if ( 0 = x)的话不会通过)
V,在多重分支结构中,建议将简单的部分放在if部分、复杂的放在else或者esle if部分,依次类推(1.提高运行效率 2.方便后面复杂的部分再进行细分)
2)switch
swith(表达式)
{
case 常量表达式1: 语句1;
case常量表达式2: 语句2;
.....
case 常量表达式n : 语句n;
default : 语句 n + 1;
}
A . 用在程序中需要对一个变量进行多种条件的判断时
B. 在case后的各常量表达式的值不能相同
C. 在case后可以有多个语句,可以不用"{ }",
case 常量表达式:
a = 0 ;
b = 1;
c = 2;
D.多个case可以共享一组执行语句( 飞机中的斜45飞行)
case 10:
case 9 : grade = ' A '; break;
4.循环结构
核心思想:
I 必须要初始化一个计算器
II.计算器和有限的值进行比较
III.每次执行循环、计算器的值都要有更新
1) while
注: A.while语句中的表达式一般是关系表达式或逻辑表达式,在语法上任何表达式都可以作为循环条件,只要表达式的值为真即可以继续执行循环
int x = 10;
while( y = x -- )
{
}
2) do ...while(不管循环的条件怎样,都要保证至少进行一次循环)
适用于:不确定循环
while( (c ! =getchar() ) != ‘ \n ’)
putchat( c );
3)for( ; ; )
{
}
注:以下形式也是可以的(步长,和变化的速率可以自己设定);
A.for( i = 1; i < 100; i += 5 )
{
}
B.for( i =10 ; i < 100; i *=1.5 )
{
}
C:for( sum = 0, i =1; i = 1; i <= 100; i++ ) //表达式1和表达式3可以是逗号表达式
{
}
D.for(i = 0; (c = getchar( ) != '\n'); i += c)
E.for( i = 1; i < 100 ; i = i + step )//step是一个变量 ,当不能
可以调节step的大小,但如果step被设为10,循环将无法终止,形成死循环
4)循环的选择:
A:如果是不确定循环,最后用while,如果是计数循环, 那最好用for( ) ( 内层循环变量的不同 )
5.跳转结构:
1)break;
A:break语句不仅能用于switch,还可以用在while , do ...while , for( )(通常都是遇到特殊情况才跳出, 所以break语句通常和if语句连在一起 )
B.break语句不能用于switch和循环语句之外的语句,在多层循环中,break只能向外跳一层
2)continue
作用是终止本次循环,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判断
注意:continue不能用于循环语句之外的语句
3)goto语句(会破坏程序结构,很少使用)