第四章C程序流程设计 §4.1C语旬概述 ★C语句以“作分隔符编译后产生机器指令 ★C语句分类 心表达式语句:表达式加分号构成。 如 total- total+imit; 支「if()-else~ 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) ◆结构化程序:由三种基本结构反复嵌套构成的程序叫 ◆优点:结构清晰,易读.提高程序设计质量和效率 ★三种基本结构 8顺序结构 A B B (流程图 (NS图
§4.2 程序的三种基本结构 «结构化程序设计 v基本思想:任何程序都可以用三种基本结构表示,限 制使用无条件转移语句(goto) v结构化程序:由三种基本结构反复嵌套构成的程序叫 ~ v优点:结构清晰,易读,提高程序设计质量和效率 «三种基本结构 v顺序结构 A B A B 流程图 N-S图
◆选择结构 真 假 P 真 假 ●二分支选择结构A B A B n k=kI ●多分支选择结构 Al A2 Al An
P A B 真 假 P A B 真 假 v选择结构 k A1 A2 Ai An k=k2 k=k1 k=kn k=ki ... ... l二分支选择结构 l多分支选择结构
循环结构 假 当P为真 P ●当型循环结构 A 真 ◎直到型循环结构 A A 假 直到P为真 P 真 注:A.BA1..An可以是一个简单语句,也可以是一个基本结构
v循环结构 l当型循环结构 l直到型循环结构 P A 假 真 当P为真 A A P 真 假 A 直到P为真 注:A,B,A1….An可以是一个简单语句,也可以是一个基本结构
84.3选择型程序设计 ★if语句(条件选择语旬) expr if语旬的三种形式 ●形式一: statement ◆格式:if( expression) statement ◆执行过程 if(x>y) printf(f%od>x) 非0 sIon expr statement1 statement1 statement2 statement2 ◆执行过程 if(>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( expI statement l ●形式三 ◆格式 else if(expr2) statement2 else if(expr3) statement ◆执行过程: else statement I 例: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 statemnt1 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后面的表达式类型任意 语句可以是复合语句 if(a==b&&x=y) printf(a=b, x=y") (3)printf( OK) 例考慮下面程序的输出结果 #include maint i intx,y scan(%d9d”,&x&y); if(x>y) Xy, y-x, Compile error! else X++;y++; printf( %od, %d\n,,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!
例求一个数的绝对值国圈 ch4 1. c*/ #include main Int x,y printf( Enter an integer scanf("%d", &x) if(yabsolute value: %d\", 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
例输入两个数并判断两数相等否 C Cha 2 半Ch42.c* #include<stdio. h mainO int a b 运行: Enter integer a:12 printf( Enter integer a: Enter integer b: 12+ scanf(" %od", &a) a==b printf("Enter integer b: scanf("%/od", &b) 运行: Enter integer a:12 if(a==b) Enter integer b: 9 printf("a-bIn") else printf(al=bln
/*ch4_2.c*/ #include main() { int a,b; printf("Enter integer a:"); scanf("%d" ,&a); printf("Enter integer b:"); scanf("%d" ,&b); if(a==b) printf("a==b\n"); else printf("a!=b\n"); } 例 输入两个数并判断两数相等否 运行:Enter integer a:12 Enter integer b:12 a==b 运行:Enter integer a:12 Enter integer b:9 a!=b