方法2: if(x>0)y=1; if(x==0) if(x<0)y=-1; 方法3:(错误) f(x>0)y=1; f(x==0
方法2: if (x>0) y=1; if (x==0) y=0 if (x<0) y=-1; 方法3: (错误) if (x>0) 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|1x<0) if(x>100‖1x×0) printf(input error”); printf(“ input error”); else if(x<=100&&x>=90) else if(x<=100&&x>=90) printf(excellent”); printf(“ excellent”); else if(x<90 && x>=80 else if(x>=80) printf(good”); printf("good”); else if (x<80 & 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<0) printf(“input error”); else if (x<=100 && x>=90) printf(“excellent”); else if (x<90 && x>=80) printf(“good”); else if (x<80 && x>=60) printf(“middle”); else printf(“bad”); } #include “stdio.h” main() { float x; printf(“input average score”); scanf(“%f”,&x); if (x>100 || x<0) printf(“input error”); else if (x<=100 && x>=90) printf(“excellent”); else if ( x>=80) printf(“good”); else if ( x>=60) printf(“middle”); else printf(“bad”); }