控制结构分为:循环,顺序,选择三种!此处着重讨论,循环,选择!
首先先看以一下,循环控制结构的语句:
1. goto (C 中设计到),用法:
形式:goto 语句标号!
2. while
形式:while ( 表达式 )语句
例如: i = 1 ;
sum =o;
while(i <= 100)
{
sum= sum + i ;
i++;
}
执行过程:当表达式为非0 值时候,执行while 语句中的内嵌语句。
(先判断表达式,后执行语句)
3. do ----while
do
循环体语句
while(表达式);
执行过程:
先执行一次指定的 循环体语句,
然后,判别表达式,当表达式的值为非零(真)时,返回重新执行循环体语句,
如此反复,直到表达式的值等于0为止,此时循环结束。
while 和 do while 的区别:
可以看到:
当输入:1 时,两者结果相同;
当输入:11时,两者结果不同;
原因在于:对于 while循环来说,当输入11时表达式 i <= 10时,条件为假,不进循环体。
对于do –while 循环来说,当输入 11 时,先执行循环体一次,然后判断表达式的真假!
1. for()
形式:
for ( 表达式 1 ;表达式 2 ;表达式 3 )语句
for ( 循环变量赋初值;循环条件;循环变量增值 )语句
eg:
for ( i = 1 ; i <= 100 ; i ++ )
sum = sum+ i ;
执行过程:
1. 先求解表达式1;
2. 求解表达式2,若其值为真(值为非0),则执行for 语句中指定的内嵌语句,然后执行下面第(3)步。若为假(值为0),则结束循环,转到第(5)步;
3. 求解表达式3;
4. 转回上面第(2)步骤继续执行;
5. 循环结束,执行for 语句下面的一个语句;
1,变量有自己的作用域。
对于for来讲:如果将用于控制循环的增量定义在for语句中。那么该变量只在for语句内有效。
for语句执行完毕。该变量在内存中被释放。// 变量的作用域
2,for和while可以进行互换。如果需要定义循环增量。用for更为合适。
x在内存中停留的时间不一样
总结:
什么时候使用循环结构?
当要对某些语句执行很多次时,就使用循环结构。
至此,所有的循环已经讨论完毕,下面我们看看:break 和 continue 语句吧:
在while ,do –while , for ,循环中,可以用 break 语句跳出循环,
break
break 语句不能用于 循环语句 和 switch 语句之外的任何 其他语句中。
continue
continue作用为 结束本次循环 ,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定;
区别:
continue 只结束本次循环,不终止整个循环的执行。
break 结束整个循环过程,不再判断执行循环的条件是否成立。
至此,循环结构以讨论完毕,下面我们看看:选择结构。
if语句 :
三种形式:
1. if(表达式)语句
2. if(表达式)
语句1 ;
else
语句2;
3.
if(表达式)语句1
else if(表达式2)语句2
--
else if(表达式m)语句m
else 语句n
说明:
1. 3种形式的if 语句中在if后面都有表达式,一般为 逻辑表达式 或 关系表达式。在执行if语句时,先对表达式求解,若表达式的值为 0 ,按 假 处理,若表达式值为 非 0 , 按 真 处理,执行指定的语句。
表达式类型不限于逻辑表达式,可以是任意的数值类型(包括整型,实型,字符型,指针类型)
2. 最后一个else 部分用于处理“上述条件均不成立”的情况 或默认情况,也就是当上面各条件都不满足时的情形。有时候不需要针对默认情况执行显示操作,这种情况下,可以把该结构末尾的else 省略掉。(用于检查错误,以捕获“不可能”的条件!)
条件运算符:
形式:
表达式1 ?表达式 2 :表达式 3 ;
执行过程:
先求解表达式 1 ,若为非0 (真)则求解表达式2 ,此时表达式2的值作为整个条件表达式的值。否则,表达式3的值为整个 条件表达式的值。
说明:
1. 优先级:条件运算符 优先于 赋值运算符
低于 关系 和 算术 运算符。
2. 条件运算符结合方向: 自右至左。
3. 表达式2 和 表达式3 不仅 可以是 数值表达式,还可以是赋值表达式或 函数表达式。
if else 结构 简写格式:
变量 = (条件表达式)?表达式1:表达式2;
三元运算符:
好处:可以简化if else代码。
弊端:因为是一个运算符,所以运算完必须要有一个结果。
swith 语句:
形式;
swith (表达式)
{
case常量表达式1:语句1
case常量表达式2:语句2
case常量表达式3:语句3
case常量表达式n: 语句n
default: 语句 n + 1
}
说明:
(1),swith 后面括号中的“表达式”,ANSI标准允许它为任何类型。
(这点和Java不同,swith 只允许它为byte, short ,int ,char)
(2) 最后一个分支(dafault)可以不加break 语句
if和switch语句很像。
具体什么场景下,应用哪个语句呢?
如果判断的具体数值不多,而是符合byte(Java特有,C语言中没有) shortint char这四种类型。
虽然两个语句都可以使用,建议使用swtich语句。因为效率稍高。
其他情况:对区间判断,对结果为boolean(Java中有,C语言没有,但C语言用“1”和“0”来判断)类型判断,使用if,if的使用范围更广。
至此,所有的控制结构已经讨论完毕,在这个过程中设计到表达式,我们有必要看看:
表达式:关系表达式,逻辑表达式
关系表达式 有涉及到 关系运算符:
关系表达式的值是一个逻辑值,即“真”或“假”,以“1”代表“真”,以“0”代表“假”
逻辑表达式:
逻辑表达式的值为一个逻辑量,“真”或“假” ,以“1”代表“真”,以“0”代表“假”,但是,在判断一个量是否为“真”时,以“0”代表“假”,以非0代表“真”。、
逻辑运算符两侧的运算对象不但可以是0和1,或者是 0 和非0 的整数,也可以是字符型,实型或指针型。