Presentation is loading. Please wait.

Presentation is loading. Please wait.

第四章 分支结构的C程序设计 4.1 if语句 4.2 switch语句 4.3 程序举例.

Similar presentations


Presentation on theme: "第四章 分支结构的C程序设计 4.1 if语句 4.2 switch语句 4.3 程序举例."— Presentation transcript:

1 第四章 分支结构的C程序设计 4.1 if语句 4.2 switch语句 4.3 程序举例

2 4.1 if 语 句 4.1.1 if语句的简单形式 if(表达式)语句 图 4.1 if语句执行过程

3 例 4.1 打印出不及格的成绩。

4 4.1.2 if~else结构 1. if~else结构 if(表达式) 语句1 else 语句2 图 4.2 if~else语句执行过程

5 例 4.2 打印成绩≥60分为“Pass”, 否则为“Fail”。 解 我们可以使用两种方法编程: 
解 我们可以使用两种方法编程:  方法一: 用两个简单的if语句实现:  main( ) { float score;  scanf(″%f″, &score); if(score<60.0) printf(″score=%5.1f---Fail\n″, score);  if(score>=60.0) printf(″score=%5.1f---Pass\n″, score);  }

6 运行:  50 score= Fail 再次运行:  80 score=  Pass 在第二个if语句中,if(score>=60.0)是不能缺少的,否则不管score是否小于60,都将打印出第二行的结果。

7 方法二: 用if~else语句实现: 运行:  50 score=50.0---Fail 再次运行:  80
main( ) { float score;  scanf(″%f″, &score);  if(score<60.0) printf(″score=%5.1f---Fail\n″, score);  else printf(″score=%5.1f---Pass\n″, score);  } 运行:  50 score= Fail 再次运行:  80 score= Pass

8 2. 条件运算符的使用 当if~else结构中的语句是表达式语句时, 就可以使用条件运算符“? :”了,即下列if~else语句:  if(表达式1) 表达式2; else 表达式3; 用条件运算符写成通用形式即为 表达式1? 表达式2: 表达式3 这是一个条件表达式,其功能是:当表达式1的值为真(非零)时,整个条件表达式的值就取表达式2的值;当表达式1的值为假(零)时, 整个条件表达式的值就取表达式3的值。

9 如下列语句段:  x=10;  if(x>9) y=100; else y=200;  可以写成:  y=x>9? 100: 200;

10 例 4.3 输入x的值, 当x>0时调用sqrt(x),否则调用fabs(x)。
#include <math.h> main( ) { float x, y;  scanf(″%f″, &x); #= y=x>0? sqrt(x): fabs(x);  printf(″x=%f, y=%f\n″, x, y);  } 运行:  9.0 x= , y=  再次运行:  -9.0  x= , y=

11 例 4.4 打印a, b两个数中大者。  方法一: 用if~else结构实现: 方法二: 用条件运算符实现:  main( ) 
{ int a, b;  scanf(″%d, %d″, &a, &b);  if (a>b) printf(″max=%d\n″, a);  else printf(″max=%d\n″, b);  } 方法二: 用条件运算符实现:  main( )  { int a, b;  scanf(″%d, %d″, &a, &b);  printf(″max=%d\n″, a>b? a:b);  }

12 3. if语句的嵌套 例 4.5 输入一个学生成绩,当成绩≥90时,打印“Very Good”;当80≤成绩<90时,打印“Good”; 当60≤成绩<80时,打印“Pass”;当成绩<60分,打印“Fail”。 main( ) { float score;  scanf(″%f″, &score); if(score >= 80) if(score>=90) printf(″Very Good\n″);  else printf(″Good\n″);  else if(score>=60) printf(″Pass\n″);  else printf(″Fail\n″);  }

13 运行:  85 Good 例如语句段: if(x) if(y) printf(″A″);  else printf(″B″);  其中else语句是与if(y)相匹配。 如果与if(x)相匹配, 则if(y)子句必须加花括号写成:  if(x) { if(y) printf(″A″); } else printf(″B″);

14 4.1.3 else if结构 else if结构的形式如下:  if(表达式1) 语句1 else if(表达式2) 语句2
… else if(表达式n) 语句n else 语句 n+1

15 图 else if结构执行过程 4.3

16 例 4.6 将例4.5用else if结构来实现。 运行:  58 Fail main( ) { float score; 
scanf(″%f″, &score);  if(score>=90) printf(″Very Good\n″); else if (score>=80) printf(″Good\n″);  else if(score>=60) printf(″Pass\n″); else printf(″Fail\n″);  } 运行:  58 Fail

17 说明:  (1) 在else if结构中,if语句…else if 语句…else语句属于同一程序模块。程序每运行一次,仅有一个分支的语句能得到执行。  (2) 各个表达式所表示的条件必须是互相排除的,也就是说, 只有条件1(表达式1)不满足时才会判断条件2,只有条件2也不满足时才会判断条件3,其余依次类推,只有所有条件都不满足时才执行最后的else语句。

18 例4.6的程序也可写成:  main( ) { float score;  scanf(″%f″, &score); 
if (score<60) printf(″Fail\n″);  else if(score<80) printf(″Pass\n″);  else if(score<90) printf(″Good\n″);  else printf(″Very Good\n″);  }

19 如写成以下形式就错了:  main( ) { float score;  scanf(″%f″, &score); 
if (score<60) printf(″Fail\n″);  else if(score>=60) printf(″Pass\n″);  else if(score>=80) printf(″Good\n″);  else printf(″Very Good\n″);  }

20 4.2 switch 语 句 switch语句的形式:  switch(表达式) { case 常量1: 语句段1
… default: 语句段n }

21 switch语句的执行过程:  switch语句先计算表达式的值,然后同多个case语句后的常量比较,找到相等的case常量则执行该常量冒号后的语句段, 并从这个入口一直执行下面所有冒号后的语句,直到switch语句结束。如果执行一个或几个冒号后的语句就要跳出switch语句,则可以在跳出处使用break语句。如果switch语句后表达式的值找不到匹配的case常量,就执行default后面的语句段直到结束。default是任选项,如果没有该语句, 则在所有配对都失败时,什么也不执行。

22 例 4.7 在显示器上显示一个菜单程序的模型。 #include <conio.h> main( )
例 4.7 在显示器上显示一个菜单程序的模型。 #include <conio.h> main( ) { void dummy( );  char ch;  printf(″1. 输入记录\n″);  printf(″2. 记录列表\n″);  printf(″3. 删除记录\n″);  printf(″4. 修改记录\n″);  printf(″请输入选择: \n″);  ch=getche( );  switch(ch)

23 { case ′1′: printf(″输入记录\n″); 
dummy( ); break;  case ′2′: printf(″记录列表\n″);  dummy( ); break; case ′3′: printf(″删除记录\n″);  case ′4′: printf(″修改记录\n″);  default: printf(″选择错!\n″);  } void dummy() { }

24 运行:  1. 输入记录 2. 记录列表 3. 删除记录 4. 修改记录 请输入选择:  程序运行后, 屏幕停留在此, 执行ch=getche( )时, ch接受用户键入字符的ASCII码。我们从键盘键入1后显示: 1 输入记录

25 4.3 程序举例 例 4.8 编写一个可由用户键入简单表达式的程序,形式如下:  number operator number 
4.3 程序举例 例 4.8 编写一个可由用户键入简单表达式的程序,形式如下:  number operator number  该程序要计算该表达式并以两位小数显示结果。  我们要识别的运算符operator为加、 减、 乘、 除。

26 main( ) { float value1, value2;  char operator;  printf(″Input your expression: \n″);  scanf(″%f%c%f″, &value1, &operator, &value2);  if (operator==′+′) printf(″%.2f\n″, value1+value2);  else if (operator==′-′)  printf(″%.2f\n″, value1-value2);  else if (operator==′*′)  printf(″%.2f\n″, value1*value2);  else if (operator==′/′)  if(value2==0.0) printf(″Division by zero.\n″);

27 esle printf(″%.2f\n″, value1/value2);  else 
printf(″Unknown operator.\n″);  } 运行:  Input your expression:   182.80 再次运行:  198.7/0 Division by zero.  125$28 Unknown operator.

28 例 4.9 用switch语句改写例4.8。 main( ) { float value1, value2; 
char operator;  printf(″Input your expression: \n″);  scanf(″%f%c%f″, &value1, &operator, &value2);  switch(operator) { case ′+′: printf(″%.2f\n″, value1+value2);  break;  case ′-′: printf(″%.2f\n″, value1-value2);  break;

29 case ′*′: printf(″%.2f\n″, value1*value2); 
break;  case ′/′: if(value2==0.0) printf(″Division by zero.\n″);  else printf(″%.2f\n″, value1/value2);  default: printf(″Unknown operator.\n″);  } }

30 例 4.10 输入一个字符, 请判断是字母、 数字还是特殊字符?
例 输入一个字符, 请判断是字母、 数字还是特殊字符? #include <conio.h> main( ) { char ch;  printf(″请输入一个字符: ″);  /*在双引号内的字符串中, 可以出现汉字, 不影响程序运行*/ ch=getche( );  if((ch>=′a′ && ch<=′z′)||(ch>=′A′ && ch<=′Z′)) printf(″\n它是一个字母!\n″);  /* 注意前后的\n, 养成良好的编辑习惯 */ else if(ch>=′0′ && ch<=′9′) printf(″\n它是一个数字!\n″);  esle printf(″\n它是一个特殊字符!\n″);  }

31 运行:  请输入一个字符: A 它是一个字母! 再次运行:  请输入一个字符: + 它是一个特殊字符!


Download ppt "第四章 分支结构的C程序设计 4.1 if语句 4.2 switch语句 4.3 程序举例."

Similar presentations


Ads by Google