精品课件-计算机基础与C语言程序设计(王昱)-第4章

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

25
(6) default及其分支语句组可以省略。 (7) 各个case和default的前后次序可以任意。尽管如此, 但用户在编写程序时并不能将自己程序中的case和default的 前后次序随意改变,这样有可能会导致不同的执行结果。 (8) switch语句可以嵌套,即case后的分支语句组也可 以是switch语句。 (9) 不论switch语句内部结构如何,整个switch语句在 语法上只算一条语句。
printf("%f\n",x); printf("%f\n",y);
7
以上程序段的含义是:当x>0时,输出x的值;否则,跳 过if语句,直接执行if语句后面的下一条语句 printf("%f\n",y);。
8
说明: (1) if语句中的表达式可以是C语言中的任意合法表达 式,一般情况下为关系表达式或逻辑表达式。 (2) if…else形式中的“分支语句1”、“分支语句2” 和if形式中的“分支语句”,在语法上只能是一条语句。因 此,如果需要多条语句来完成任务,就必须将这多条语句用 花括号括起来,从而形成复合语句,使之在语法上是一条语 句。 (3) 不论是哪种形式的if语句,也不论if语句中的分支 语句是何种语句,整个if语句在语法上只算一条语句。
int x,y; printf("Input x:"); scanf("%d",&x); if(x>0)
y=1; else if(x==0)
y=0;
37
else if(x<0) y=-1;
printf("y=%d\n",y); } 程序运行结果同前。
38
【例4.3】 编写程序,输入两个整数m、n,若m>n,交 换m和n的值,最后输出m和n的值。
23
以上程序段在程序中执行时,如果从键盘输入字符 'C', 则在屏幕输出:
Score: 70~79. Score: 60~69. Score: <60. Error.
24
说明: (1) switch后的表达式类型可以为任意类型,但一般为 整型、字符型和枚举类型。 (2) case后的常量表达式的类型必须与switch后的表达 式类型一致。 (3) case后的常量表达式的值必须互不相同。 (4) case后的分支语句组可以是一条语句,也可以是多 条语句。 (5) 多个case可以共用一个分支语句组,即连续的k个 case语句,前k-1个后面可以没有分支语句组,只有第k个 case语句后面有分支语句组。
if(表达式1) 分支语句1
else if(表达式2) 分支语句2
17
else if(表达式3) 分支语句3
else if
else if(表达式n) 分支语句n
else 分支语句n+1
这就是if语句的特殊嵌套形式if…else if形式。 例如:
18
if(x>0) y=1;
else if(x==0) y=0;
30
4.3 选择结构程序设计举例
【例4.1】 编写程序,输入一个实数,输出它的绝对 值。
#include <stdio.h> main( ) {
float x,y; printf("Input x:"); scanf("%f",&am) y=x;
else y=-x;
printf("|%f|=%f\n",x,y); } 程序运行结果: ① Input x:1.23↙ |1.230000|=1.230000
22
例如: grade=getchar( ); switch(grade){
case 'A': printf("Score: 90~100.\n"); case 'B': printf("Score: 80~89.\n"); case 'C': printf("Score: 70~79.\n"); case 'D': printf("Score: 60~69.\n"); case 'E': printf("Score: <60.\n"); default: printf("Error.\n"); }
#include <stdio.h> main( ) {
int m,n,t; printf("Input m,n:"); scanf("%d%d",&m,&n); if(m>n){
t=m; m=n;
39
n=t; }
printf("%d,%d\n",m,n); } 程序运行结果: ① Input m,n:3 7↙ 3,7 ② Input m,n:7 3↙ 3,7
13
说明: (1) if语句的嵌套结构不论嵌套多少层,在语法上只算 一条语句。 (2) 缩进格式的书写只是为了阅读的方便,即这种格式 表示了程序设计者的意图,但整个if语句的嵌套结构的含义 与此并无关系,它的含义完全由C语言编译系统来解释。 (3) if语句的嵌套结构中的else要与if配对出现,原则 是else与其最近的未配对的if配对。
9
4.1.2 if语句的嵌套 if语句的嵌套指的是if语句中的分支语句又是if语句的
情形。if语句嵌套的目的是为了解决多路选择问题。 1. if语句的嵌套的基本形式 if语句嵌套的一般语法格式为: if(表达式1) if语句1 else
10
if语句2 或者 if(表达式)
if语句 if语句的嵌套结构可以是if…else形式的if语句和if形 式的if语句的任意组合,被嵌套的if语句仍然可以是if语句 的嵌套结构,但在实际使用中是根据实际问题来决定的。
中使用。当break语句用于switch语句中时,可使程序跳出当 前switch结构,转而执行当前switch语句后面的语句。break 语句在循环语句中的使用将在第5章中介绍。
例如: grade=getchar( ); switch(grade){
case 'A': printf("Score: 90~100.\n"); break; case 'B': printf("Score: 80~89.\n"); break; case 'C': printf("Score: 70~79.\n"); break;
else
15 if(表达式3)
分支语句3 else
if(表达式n) 分支语句n
else 分支语句n+1
16
它的含义是:按表达式顺序进行计算,第一个为非0的表 达式i将引起执行分支语句i,并且不再计算后面的表达式。 如果所有表达式的值都为0,则执行分支语句n+1。
由于C语言语句的书写格式无固定要求,按照这种if语句 的嵌套结构的含义,我们可以这样来书写这种特殊的if语句 的嵌套形式:
32
② Input x:-1.23↙ |-1.230000|=1.230000
33
【例4.2】 编写程序,对于函数 ,输入一个实数x,输出它的函数值y。
程序1:(采用if形式) #include <stdio.h> main( ) {
int x,y; printf("Input x:"); scanf("%d",&x); if(x>0)
3
4.1 if 语 句
if语句也称做选择语句,它是根据条件的表达式值来选 择执行给出的两个分支程序段之一。
4
4.1.1 if语句的基本形式 if语句的基本形式有两种:if…else形式和if形式。 1. if…else形式 if…else形式是if语句的标准形式,其一般语法格式为 if(表达式) 分支语句1 else 分支语句2 这种if语句的执行过程为:如果if后面括号中的表达式
14
2. 一种特殊的if语句的嵌套形式——if…else if 既然if语句的嵌套结构可以是if…else形式的if语句和 if形式的if语句的任意组合,被嵌套的if语句仍然可以是if 语句的嵌套结构,那么完全可以有这样一种if语句嵌套结构: if(表达式1)
分支语句1 else
if(表达式2) 分支语句2
40
【例4.4】 编写程序,输入三个整数a、b、c,将它们 进行排序,然后按从小到大的顺序输出。
else y=-1;
以上程序段的含义是: 当x>0时,y赋值为1; 当x=0时,y赋值为0; 当x<0时,y赋值为-1。
19
说明: (1) 这种特殊的if语句的嵌套结构可以实现多路选择的 程序设计。 (2) 最后一个else及其分支语句n+1可以没有。
20
4.2 switch语句与break语句
28
case 'D': printf("Score: 60~69.\n"); break; case 'E': printf("Score: <60.\n"); break; default: printf("Error.\n"); } 以上程序段在程序中执行时, 如果从键盘输入字符 'A',则在屏幕上输出: Score: 90~100. 如果从键盘输入字符 'B',则在屏幕上输出: Score: 80~89.
34
y=1; if(x==0)
y=0; if(x<0)
y=-1; printf("y=%d\n",y); }
35
程序运行结果: ① Input x:12↙ y=1 ② Input x:0↙ y=0 ③ Input x:-8↙ y=-1
36
程序2:(采用if…else if形式) #include <stdio.h> main( ) {
的值为非0,则执行分支语句1;否则,执行分支语句2。
5
例如: if(m>n)
printf("%d\n", m); else
printf("%d\n", n); 以上程序段的含义就是:当m>n时,输出m的值;否则, 输出n的值。
6
2. if形式 if形式是if语句的简单形式,其一般语法格式为: if(表达式) 分支语句 这种if语句的执行过程为:如果if后面括号中的表达式 的值为非0,则执行分支语句;否则,跳过if语句,直接执行 if语句后面的下一条语句。 例如: if(x>0)
1
第4章 选择结构程序设计
4.1 if语句 4.2 switch语句与break语句 4.3 选择结构程序设计举例
2
顺序结构程序的流程方向永远是自上而下顺序执行的, 然而,在实际应用中常常需要根据不同的条件,执行不同的 程序流程,这样就形成了选择结构程序。
C语言提供了可以进行逻辑判断的选择语句,由其构成的 选择结构根据逻辑判断的结果决定程序的不同流向。
4.2.1 switch语句 switch语句是C语言提供的一个专门进行多路选择问题程
序设计的语句。 switch语句的一般语法格式为 switch(表达式){ case 常量表达式1: 分支语句组1 case 常量表达式2: 分支语句组2
21
case 常量表达式n: 分支语句组n default: 分支语句组n+1 } 它的执行过程为:首先计算switch后面括号中的表达式 的值,并逐个与case后面的常量表达式的值相比较,当表达 式的值与某个常量表达式的值相等时,执行其后的分支语句 组,然后继续执行后面所有的分支语句组;如果表达式的值 与所有case后的常量表达式的值都不相等,则执行default后 的分支语句组。
29
如果从键盘输入字符 'C',则在屏幕上输出: Score: 70~79. 如果从键盘输入字符 'D',则在屏幕上输出: Score: 60~69. 如果从键盘输入字符 'E',则在屏幕上输出: Score: <60. 如果从键盘输入任意其它字符,则在屏幕上输出: Error. 再强调一下,switch语句必须和break语句结合使用,才 能进行多路选择程序设计。
11
例如: if(x>=0)
if(x<10) y=1;
else y=2;
else if(x>=-10) y=-1; else
12
y=-2; 这个if语句的嵌套结构的含义是: 当0≤x<10时,y赋值为1; 当x≥10时,y赋值为2; 当-10≤x<0时,y赋值为-1; 当x<-10时,y赋值为-2。
26
从前述程序段的介绍和switch语句的说明可以看出, switch语句似乎还不能像if…else if那样来实现多路选择程 序设计。确实是这样,switch语句必须和break语句结合使用, 才能进行多路选择程序设计。
27
4.2.2 break语句 break语句也称间断语句,通常在switch语句和循环语句
相关文档
最新文档