计 算 条件分支的嵌套 机 程 序·条件语句的嵌套格式 设 计 当年龄大于50岁时,若工资小于500,则长200, 基 否则长300 础 8: 若年龄大于50岁且工 资小于500,长200 20 若年龄不大于50岁 see 则长300 else 1+=300 sal+=300 语法规定:else与离它最近的配对 嵌套的条件语句可以实现复杂的逻辑判断 清华大学计算中心 http://learn.tsinghua.edu.cn
清华大学计算中心 http://learn.tsinghua.edu.cn 12 计 算 机 程 序 设 计 基 础 条件分支的嵌套 • 条件语句的嵌套格式 – 当年龄大于50岁时,若工资小于500,则长200, 否则长300 if(age > 50) if(sal < 500) sal += 200; else sal += 300; – 若年龄大于50岁且工 资小于500,长200; 若年龄不大于50岁, 则长300 • 语法规定:else与离它最近的if配对 • 嵌套的条件语句可以实现复杂的逻辑判断 if(age > 50) if(sal < 500) sal += 200; else sal += 300; if(age > 50) { if(sal < 500) sal += 200; } else sal += 300;
计 算 条件分支嵌套示例 机 程 序·求方程ax2+bx+c=0的根 设 include <stdio.h> 计# include< math.h>∥由于用到平方根函数,要用此头文件 基 int maino 础 float a,b,cx1,x2,p,q,m∥定义实型变量 printf( Enter 3 coefficients: )i scanf(°of%f%f,&,&b,&o);∥从键盘读入方程的三个系数 if(a==0.0&&b==0&&c==0)∥分支1:三个系数全为0 printf("any valuen"); else if(a==0&&b!=0)∥分支2:系数a为0,解一元一次方程 printf( x1=x2=%An-c/b); else∥分支3:解一元二次方程的两个根 bb-4.0 清华大学计算中心 http://learn.tsinghua.edu.cn 13
清华大学计算中心 http://learn.tsinghua.edu.cn 13 计 算 机 程 序 设 计 基 础 条件分支嵌套示例 • 求方程 ax2 + bx + c = 0 的根 #include <stdio.h> #include <math.h> // 由于用到平方根函数,要用此头文件 int main() { float a, b, c, x1, x2, p, q, m; // 定义实型变量 printf(“Enter 3 coefficients: “) ; scanf(“%f,%f,%f“, &a, &b, &c); // 从键盘读入方程的三个系数 if( a == 0.0 && b == 0 && c == 0 ) // 分支1:三个系数全为0 printf(“any value\n“); else if( a == 0 && b != 0 ) // 分支2:系数a为0,解一元一次方程 printf(“x1 = x2 = %f\n", – c / b); else // 分支3:解一元二次方程的两个根 { m = b * b – 4.0 * a * c; …
条件分支嵌套示例 计算机程序设计基础 if(m>=0 {∥解实根 x1=(-b+ sgrt(m)/(2.0*a) x2=(-b-sgrt(m))/(20a) printf("x1=%fv"x1)∥输出两个实根 printf( x2=%An",x2 ); else {∥解虚根 =-b/(2.0*a) q=sgrt(-m)/(2.0*a) printf("x1=%f+%ofin",p, g printf(x2=%f-%ofin",p, q; return 0 清华大学计算中心 http://learn.tsinghua.edu.cn
清华大学计算中心 http://learn.tsinghua.edu.cn 14 计 算 机 程 序 设 计 基 础 条件分支嵌套示例 if( m >= 0 ) { // 解实根 x1 = ( –b + sqrt(m) ) / ( 2.0 * a ); x2 = ( –b – sqrt(m) ) / ( 2.0 * a ); printf(“x1 = %f\n“, x1 ); // 输出两个实根 printf(“x2 = %f\n“, x2 ); } else { // 解虚根 p = –b / ( 2.0 * a ); q = sqrt(–m) / ( 2.0 * a ); printf(“x1 = %f + %fi\n“, p, q); printf(“x2 = %f – %fi\n“, p, q); } } return 0; }
switch分支语法 计算机程序设计基础 计算过程 switch(表达式) 先计算表达式的值 依次与一组常量比较 case常量表达式1:语句组1 case常量表达式2:语句组2 若相同则执行该分支 否则转向 default分支case常量表达式n:语句组n 退出 switch语句 default:语句组 说明 switch后面的表达式必须为整型、字符型或枚举型 case后面必须为常量表达式,则各个case值必须不同 如果没有 defau子句,且没有case子句匹配,则不执行 case分支中的语句可以有多条,不需要花括号 清华大学计算中心 http://learn.tsinghua.edu.cn
清华大学计算中心 http://learn.tsinghua.edu.cn 15 计 算 机 程 序 设 计 基 础 switch 分支语法 • 计算过程 – 先计算表达式的值 – 依次与一组常量比较 – 若相同则执行该分支 – 否则转向default分支 – 退出switch语句 • 说明 – switch后面的表达式必须为整型、字符型或枚举型 – case后面必须为常量表达式,则各个case值必须不同 – 如果没有default子句,且没有case子句匹配,则不执行 – case分支中的语句可以有多条,不需要花括号 switch( 表达式 ) { case 常量表达式1: 语句组1 case 常量表达式2: 语句组2 ┇ case 常量表达式n: 语句组n default: 语句组 }