分支结构

xiaoxiao2021-02-28  98

一、分支语句if分析

if语句用于根据条件选择执行语句;

else不能独立存在且总是与它最近的if相匹配;

else语句后可以连接其他if语句。

 

if(condition) { //statement1 } else { //statement2 }

if语句中零值比较的注意点:

 

(1)bool型变量应该直接出现于条件中,不要进行比较;

(2)普通变量和0值比较时,0值应该出现在比较符号左边;

(3)float型 变量不能直接进行0比较,需要定义精度。

 

情况1: bool b = true; if( b ) { //statement1 } else { //statement2 }

情况2:

 

 

int i = 0; if( 0 == i ) { //statement1 } else { //statement2 }

情况三:

 

 

#define EPSINON 0.00000001 float f = 0.0; if( (-EPSINON <= f) && (f <= EPSINON) ) { //statement1 } else { //statement2 }

二、分支语句switch分析 switch语句对应单个条件多个分支的情形; 每个case语句分支必须要有break,否则会导致分支重叠;

 

default语句有必要加上,以处理特殊情况。

 

switch(表达式) { case 常量: 代码块; case 常量: 代码块; default: 代码块; }

case语句中的值只能是整形或是字符型;

 

case语句排列顺序分析 按字母或数字顺序排列各条语句 正常放前面 异常放后面

default语句只用于处理真正的默认情况。

if 和switch对比分析 四点结论

 

#include <stdio.h> void func1(int i) { if(i < 6) { printf("failed\n"); } else if((6 <= i) && ( i <= 8)) { printf("GOOD\n"); } else { printf("perfect\n"); } } void func2(char n) { switch(n) { case 'A': printf("perfect\n"); break; case 'B': printf("good\n"); break; case 'C': printf("pass\n"); break; case 'D': printf("failed\n"); break; default: break; } } int main() { func1(1); func2('A'); return 0; }

三、循环语句分析

 

通过条件表达式判定是否执行循环体 条件表达式遵循if语句表达式的原则

do语句至少执行循环体一次 while >= 0 次 for先判断 再执行 更简洁

例子分析:

 

#include <stdio.h> int func1(int n) { int i = 0; int ret = 0; for(i = 0; i < n; i++) { ret += i; } return ret; } int func2(int n) { int ret = 0; while ((n > 0) && (ret += n--)); return ret; } int func3(int n) { int ret = 0; if(n > 0) { do { ret += n--; }while(n); } return ret; } int main() { printf("%d\n", func1(101)); printf("%d\n", func2(100)); printf("%d\n", func3(100)); return 0; }

do while存在的意义?下面例子:

 

 

int fun(int n) { int i = 0; int ret = 0; int *p = (int*)malloc(n*sizeof(int)); do { if( NULL == p) break; if(n < 0) break; for(i = 0; i < n; i++) { p[i] = i; printf("%d", p[i]); } ret = 1; }while(0); free(p); return ret; }

避免可能造成内存泄漏的情况。

 

break:终止循环的执行 跳出一个“块””包括 switch 和 循环

continue:终止本次循环 进入下一次循环 

 

 

 

转载请注明原文地址: https://www.6miu.com/read-53965.html

最新回复(0)