3程敏计 第四章 C程序流程设计
第四章 C程序流程设计
第四章 C程序流程设计 §4.1C语句概述 ★C语句:以“:”作分隔符,编译后产生机器指令 ★C语句分类 》表达式语句:表达式加分号构成。 if()~else~ 如 total=total+limit; 分支 switch a=3; func(); for()~ printf(Hello,world!\n"); 循环 while() do~while() continue break 铺助控制 goto return
第四章 C程序流程设计 §4.1 C语句概述 «C语句:以“;”作分隔符,编译后产生机器指令. «C语句分类 v表达式语句:表达式加分号构成。 v空语句: ; v程序控制语句(9种): if( )~else~ switch for( )~ while( )~ do~while( ) continue break goto return 分支 循环 辅助控制 如 total=total+limit; a=3; func( ); printf(“Hello,world!\n”);
公复合语句:用{.}括起来的一组语句 ●一般形式:{[数据说明部分;] 执行语句部分; ●说明: ◆“”后不加分号 ◆语法上和单一语句相同 ◆复合语句可嵌套
v复合语句:用 {.}括起来的一组语句 l一般形式: { [数据说明部分;] 执行语句部分; } l说明: u“}”后不加分号 u语法上和单一语句相同 u复合语句可嵌套
$42程序的三种基本结构 ★结构化程序设计 基本思想:任何程序都可以用三种基本结构表示,限 制使用无条件转移语句(goto) 结构化程序:由三种基本结构反复嵌套构成的程序叫 公优点:结构清晰,易读, 提高程序设计质量和效率 ★三种基本结构 公顺序结构 A A B B 流程图 N-S图
§4.2 程序的三种基本结构 «结构化程序设计 v基本思想:任何程序都可以用三种基本结构表示,限 制使用无条件转移语句(goto) v结构化程序:由三种基本结构反复嵌套构成的程序叫 ~ v优点:结构清晰,易读,提高程序设计质量和效率 «三种基本结构 v顺序结构 A B A B 流程图 N-S图
$选择结构 假 P 真 假 ●二分支选择结构 B B k k=kn k=kl k-k2 k=ki ●多分支选择结构 Al A2 Ai An
P A B 真 假 P A B 真 假 v选择结构 k A1 A2 Ai An k=k2 k=k1 k=kn k=ki . . l二分支选择结构 l多分支选择结构
循环结构 假 当P为真 ●当型循环结构 A 真 A ●直到型循环结构 A A 假 直到P为真 真 注:A,B,A1.A可以是一个简单语句,也可以是一个基本结构
v循环结构 l当型循环结构 l直到型循环结构 P A 假 真 当P为真 A A P 真 假 A 直到P为真 注:A,B,A1.An可以是一个简单语句,也可以是一个基本结构
S4,3选择型程序设计 ★f语句(条件选择语句) =0 expr f语句的三种形式 非0 ●形式一: statement ◆格式:if(expression) statement ◆执行过程: 例:if(x>y) printf 非0 =0 expr statementl else statementl statement2 statement2 ◆执行过程: 例: if (x>y) max-x, else max-y;
§4.3 选择型程序设计 «if语句(条件选择语句) vif语句的三种形式 l形式一: u格式:if (expression) statement u执行过程: expr statement 非0 =0 例:if (x>y) printf(“%d” ,x); expr statement1 statement2 l形式二: 非0 =0 u格式:if (expression) statement1 else statement2 u执行过程:例:if (x>y) max=x; else max=y;
if expr1 statementl ●形式三: ◆格式: else if (expr2 statement2 else if (expr3 statement3 ◆执行过程: 。. [else statementn =0 例:if(salary>l000) index=0.4; else if(salary>800) index=0.3; else if (salary>600) index=0.2; else if(salary>400) index=0.1; else index=0; statemntl statemnt2 statemnt3 statemntn
l形式三: u格式: if ( expr1 ) statement1 else if (expr2 ) statement2 else if (expr3 ) statement3 . [ else statementn ] expr1 statemnt1 非0 =0 expr2 expr3 statemnt2 statemnt3 statemntn 非0 非0=0 =0 u执行过程: 例:if (salary>1000) index=0.4; else if (salary>800) index=0.3; else if (salary>600) index=0.2; else if (salary>400) index=0.1; else index=0;
●说明: ◆if后面的表达式类型任意 ◆语句可以是复合语句 :ifa==b&:&x=y) printf(“a=b,xy'); if3)printf(OK."); 例考虑下面程序的输出结果 #include main( int xy; scanf(d,%d",&x&y); if(x>y) {x-y;y=x;} Compile Error! else {x+;y+;} printf(%d,%dn”,x,y);
如:if(a==b&&x==y) printf(“a=b,x=y”); if(3) printf(“OK”); if(‘a’) printf(“%d” , ’a’); l说明: uif后面的表达式类型任意 u语句可以是复合语句 u if(x) if(x!=0) if(!x) if(x==0) 例 考虑下面程序的输出结果: #include main() { int x,y; scanf(“%d,%d” ,&x,&y); if(x>y) x=y; y=x; else x++; y++; printf(“%d,%d\n” ,x,y); } Compile Error!
例求一个数的绝对值 /*ch41.c*/ #include main( int x,y, printf("Enter an integer:") scanf("%d",&x); y-X; if(y0) y=-y; printf("\ninteger:%d->absolute value:%d n",x,y); 运行: Enter an integer:-12. integer:-12->absolute value 12
/*ch4_1.c*/ #include main() { int x,y; printf("Enter an integer:"); scanf("%d" ,&x); y=x; if(yabsolute value:%d\n" ,x,y); } 例 求一个数的绝对值 运行:Enter an integer:-12 integer:-12->absolute value :12