更新时间:2022-08-25 18:21
结构控制(structure control)就是一种程序运行的逻辑。
结构控制就是一种程序运行的逻辑。C语言一共有三种控制结构:顺序结构,选择结构,循环结构。
1.从执行方式上看,从第一条语句到最后一条语句完全按顺序执行,是简单的顺序结构;
2.若在程序执行过程当中,根据用户的输入或中间结果去执行若干不同的任务则为选择结构;
3.如果在程序的某处,需要根据某项条件重复地执行某项任务若干次或直到满足或不满足某条件为止,这就构成循环结构。
大多数情况下,程序都不会是简单的顺序结构,而是顺序、选择、循环三种结构的复杂组合。
C语言中,有一组相关的控制语句,用以实现选择结构与循环结构:
1.选择控制语句:if; switch、case
2.循环控制语句:for、while、do...while
3.转移控制语句:break、continue、goto
代码 从上到下,自左而右的执行
不对代码进行任何的干预,那么他就是顺序结构
Eg: test.php
分支结构:是指代码可以有多个选择的执行
分支结构分为单分支和多分支
单分支: 程序执行的流程不超过2个结构 (双分支)
多分支: 程序执行的流程超过了2个以上的结构
分支结构:( if 和 switch )
if语句:
条件?操作1:操作2
原理:如果条件成功(true)就执行操作1,否则执行操作2
条件:能够判断正确或错误的表达式
注意:
1、if语句可以没有else
2、如果需要在分支结构中,循环结构中运行2行和2行以上的代码,要将这多行代码改写成代码块{语句1;语句2;....},不写在代码块中则会报错!
eg: if(条件){ 代码块1;(>1句的代码) }else{ 代码块2; } Eg: if.php
switch:多分支结构
原理:如果变量等于值1那么就执行代码1,然后break跳出结构,否则判断如果变量值等于值2,那么执行代码2,然后break跳出 如果case值没有符合条件的,那么就执行代码n;
注意:
1、如果case后面没有break,那么程序会会继续向下执行直到碰到break跳出或者直到程序结束
Eg: switch.php
(1)顺序结构:按书写顺序执行每一条语句。
(2)选择结构:对给定的条件进行判断,根据判断结果决定执行哪一段代码。
(3)循环结构:在给定条件成立的情况下,反复执行某一段代码。
1)第一种结构:
a)如果条件为真,就执行后面的语句,否则不执行。
2)第二种结构:
a)如果条件成立就执行语句1,否则执行语句2。
3)第三种结构:
a)先判断条件1,若成立则执行语句1,其它不执行;若条件1不成立,则检查条件2···,【注意】如果条件3成立,则说明前面的都不成立。所有的语句块只有一个会被执行。
4)第四种结构:
a)在这种情况下,当条件成立,只执行语句1,语句2不属于次条件结构,但不推荐此种写法。
①.比较大小时,可以把常量值放在左边,变量值放在右边以避免错误。因为if(a==0)也容易被写成if(a=0),而这种情况,编译器并不会报错,推荐使用if(0==a)这种写法。
②.注意赋值运算符,不要把=写成是==。
③.If(条件)后面不要加分号,这代表是一个空语句,后面的代码块将成为一个独立的代码块。如if(条件);{.....}//需要多加注意
④.注意作用域的问题,如果要在if后面定义新的变量,则一定要使用大括号。
⑤.If(0){...}随便挑一个数值也可以做条件
解说:该结构把数值与数值1进行比较,若相等,则执行后面的所有语句,直到遇见break语句跳出整个循环,若前面的条件都不满足,则最终会执行default后面的语句。如果不写break语句,则后面的语句会接连执行,直到遇到break语句或者是全部语句执行完毕,只要前面的条件成立,则后面的判断就直接被忽略。
注意:如果要在case后面的语句中定义变量,则必须使用大括号包住。
1.If语句能够完成的功能,switch有时并不能够完成,如判断if(a>100)
2.在有些情况下,if语句和switch语句可以互换
3.Switch语句能完成的功能,if语句都可以完成
4.switch 的csae 一般只用于判断确切的数值
5.所有的switch都可以改写成if 但是并非所有的if都能改写成switch
6.if运行效率比switch稍微低一点,一般在条件是确切的值的时候使用switch
解说:先判断条件是否成立,成立则执行,执行完代码后再次判断条件是否成立(判断条件-》执行代码块-》判断条件-》执行代码块···)
提示:在while循环体内使用if...break(跳出整个循环)或if...continue语句(跳出本次循环,继续下一次循环判断)。
While结构的运行原理:
①.如果一开始条件不成立,则永远不会执行循环体。
②.如果条件成立,则执行一次循环体,执行完毕后再次判断条件是否成立。
③.Break:直接退出整个循环。
④.Continue:结束当前循环体,进行下一轮循环判断。
1)While(1){.....}是一个死循环
2)While(a<10);{...}在条件后面加逗号表示循环体是一个空语句,而非{}部分
3)While条件语句后推荐使用{},否则只有第一条语句时循环体
4)最简单的死循环while(1);//永远执行空语句,让程序崩溃
特点:dowhile循环至少会执行一次循环体
语句1:一般为初始化语句
语句2:一般为增量语句(执行完循环体后再执行的语句)
For循环原理:
1)For循环一开始就会执行语句1(整个for循环只会执行一次)
2)判断条件是否成立,若成立,则执行一次循环体,然后执行语句2,再次判断条件是否成立,若条件不成立则结束循环
3)顺序为:(语句1-》判断条件-》循环体—》语句2-》判断条件-》循环体···)
在性能上,for循环稍胜一筹,因为while循环只能使用外部的变量,而for循环可以对变量进行及时回收。
①.不要随便在for语句后面写上分号,如for();{....}
②.定义变量的作用域不明确错误
for(inti=0;i<5;i++)
Inta=10; //编译器报错,变量作用域不明确
③.For语句中最简单的死循环for(;;);
④.需要注意变量定义的作用域
用以输出特定格式的内容,如QQ好友列表等,提升可扩展性。