程序设设 四意程 20023
C语言程序设计 2002 年 第四章 流程控制
4.1复合语句(块) 形式:用“{}”括起的一组语句,等价于一条语句。 说明部分 语句部分 例:if(a>b)
4.1 复合语句(块) 形式: 用“{}”括起的一组语句,等价于一条语句。 { 说明部分 语句部分 } 例:if (a>b) { int t; t=a; a=b; b=t; }
42if语句 格式一:if(表达式)语句; 表达式 例:如果a大于b则交换a和b的值。 非0 解法1:用问号、逗号组成表达式语句: a>b? t=aa=bb=t: aa>b? t=a. a=b b=t: a 解法2:用ⅱ语句: if(a>b) it=a; a=b; b=t; I
4.2 if 语句 格式一:if (表达式) 语句; 例:如果a大于b则交换a和b的值。 解法1:用问号、逗号组成表达式语句: a>b ? t=a,a=b,b=t : a ➔ a>b ? t=a,a=b,b=t : a; 解法2:用if语句: if (a>b) { t=a; a=b; b=t;} 表达式 语 句 非0 0
格式三:(表达式)语句ec语句12 例:解方程ax+b=0,a和b从终端输入。 分析:输入:a和b,类型foat; 表达式 输出:x类型foat 非0 数据关系:x=b/aaz0 语句1 语句2 # include“ stdio.h maino if子句 i float a, b, x printf(" input a, b); scanf(%f%f, &a, &b) else子句 if(a)/*如果a==0*/ printf(input error") else( x-b/a; printf(x=%.4fn, x);)
格式二:if (表达式)语句1 else 语句2 例:解方程ax+b=0, a和b从终端输入。 分析:输入:a和b,类型float; 输出:x,类型float; 数据关系:x=-b/a a≠0。 #include “stdio.h” main() { float a,b,x; printf(“input a,b”); scanf(“%f%f”,&a,&b); if (!a) /*如果a==0*/ printf (“input error”); else { x=-b/a; printf(“x=%.4f\n”,x); } } 语句2 表达式 语句1 非0 0 if子句 else子句
if语句的嵌套 当if句或else子句中又包括i语句时,成为i语句的嵌套 例:求下面函数的值。 0 0 X=0 X0) else if (x=0) else y=-1
if 语句的嵌套 当if子句或else子句中又包括if语句时,成为if语句的嵌套。 例:求下面函数的值。 1 x>0 y= 0 x=0 -1 x0) y=1; else if (x==0) y=0; else y=-1;
方法2: if(x>0)y=1; if(x==0) if(x0)y=1; f(x==0
方法2: if (x>0) y=1; if (x==0) y=0 if (x0) y=1; if (x==0) y=0; else y=-1;
嵌套的i语句的配对规则: 例:程序段:if(m>0) if(a>b)z-a else z=b n>0 n>0 非0 非0 a>b ■ a>b 非0 非0 目上 z-a z=b ■■■■■■■■■■■■■■■■■■■■ a b 两种理解,二义性
嵌套的if语句的配对规则: 例:程序段: if (n>0) if (a>b) z=a; else z=b; n>0 a>b z=a z=b 0 非0 0 非0 n>0 a>b z=a z=b 0 非0 0 非0 两种理解,二义性
编译约是:ds与前面最靠近的配对 if(n>0 if(n>0) n>0且a>b if(a>b)z=a;等价于f(a>b)z=a:1实现z else z=b else z=b; b,n>0且a≤b a.n>0且a>b I if(n>0 f if(a>b)z=a;) else z=b
编译约定:else与前面最靠近的if配对。 if (n>0) if (n>0) if (a>b) z=a; 等价于 {if (a>b) z=a; 实现 else z=b; else z=b;} a, n>0且a>b z= b, n>0且a≤b a, n>0且a>b z= b, a≤b if (n>0) { if (a>b) z=a; } else z=b;
例:学生总成绩按下列标准分等(其中x为学生的平均成 绩): 平均成绩 等级英文名 90<x<100 excelle nt(优) 80<x<90 good(良) 60<x<80 middle(中) X<60 bad(差) 输入学生的平均成绩,输出对应的等级
例:学生总成绩按下列标准分等(其中x为学生的平均成 绩): 平均成绩 等级英文名 90≤x ≤100 excellent(优) 80≤x < 90 good(良) 60≤x < 80 middle(中) x<60 bad(差) 输入学生的平均成绩,输出对应的等级
include“ stdio. h3 nclude“ stdio. h” inO ino i float x; float x; printf(input average score ); printf(input average score"); scanf“%r”,&x); scanf(“%f”,&x); if(x>100|1x100‖1x×0) printf(input error”); printf(“ input error”); else if(x=90) else if(x=90) printf(excellent”); printf(“ excellent”); else if(x=80 else if(x>=80) printf(good”); printf("good”); else if (x=60 else if(x>=60) printi( middle”); printf(middle”); else printf("bad”); Ise printf(bad”);
#include “stdio.h” main() { float x; printf(“input average score”); scanf(“%f”,&x); if (x>100 || x=90) printf(“excellent”); else if (x=80) printf(“good”); else if (x=60) printf(“middle”); else printf(“bad”); } #include “stdio.h” main() { float x; printf(“input average score”); scanf(“%f”,&x); if (x>100 || x=90) printf(“excellent”); else if ( x>=80) printf(“good”); else if ( x>=60) printf(“middle”); else printf(“bad”); }