C语言第四章分支语句.ppt
例: 输入三个实数,按从小到大的顺序输出。 main( ) {float a,b,c,t; scanf(“%f,%f,%f ”,&a,&b,&c); if (a>b) { t=a; a=b; b=t; } if (a>c) { t=a; a=c; c=t; } if (b>c) { t=b; b=c; c=t; } printf(“%5.2f,%5.2f,%5.2f ”,a,b,c); } 例:if (a>b) max=a; else max=b; ? max=(a>b) ? a : b; /*三目运算符*/ 例:if (a>b) printf(“%d”,a); else printf(“%d”,b); ? printf(“%d”,a>b ? a : b); ?优先级别: 算术>关系> 条件> 赋值 a>b?a:b+1; ? a>b?a:(b+1) ?结合方向: “自右至左” 如:a>b?a:c>d?c:d ? a>b?a:(c>d?c:d) ? x?‘a’:‘b’ 当x = 0时,条件表达式的值为‘b’ ?条件表达式中的操作对象类型可以不同,结果取较高类型。 如: x>y?1:1.5 当x > y时,值为 1.0。 例: 求两个数的运算结果(和/差/积/商) 。 main( ) { float a ,b, w ; char operate; scanf(“%f%c%f”,&a,&operate,&b); switch (operate) { case ‘+’: w=a+b; break; case ‘-’: w=a-b; break; case ‘*’: w=a*b; break; case ‘/’: w=a/b; break; } printf(“= %f \n ”,w); } 程序运行结果: 输入:2 输出:fine----at hill wind----to outskirt other----at home 发现,如果输入的天气值为0,即天气情况为下雨,则活动场所为所有地方,显然这是与题意不相符合的,程序是错误的。 解决这个问题必须要用到分支语句:break。 §4.2.2 break语句在switch语句中的作用 如果是一个条件对应着一组独立的操作,那么在switch语句的一般形式中,每一个完成后都要加上一条分支语句:break; switch条件分支互相独立的形式: switch () { case : ; break; case : ; break; case :; break; …… case : ; break; default: ; } 先计算的值,再从上到下地判断与哪一个的值相等,如果的值等于i的值,则执行i,执行完后,跳出switch结构,执行switch结构外的下一条语句. 功能: 【例4-7】将例4-6改写成具有独立分支的switch结构。 #include main( ) { int weather; scanf("%d",&weather); switch (weather) {case 0: printf ("rain----at palaestra\n"); break; case 1: printf ("snow----at playground\n"); break; case 2: printf ("fine----at hill\n"); break; case 3: printf ("wind----to outskirt\n"); break; default: printf ("other----at home\n"); }