分支程序设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
为真,因此 y 只进行一次赋值,本程序是正确的。 (2)main() {int x,y; scanf("%d",&x); y=1; if(x!=0) if(x>0) y=-1; else y=0; printf("x=%d,y=%d\n",x,y); } 说明:该程序中 if(x!=0)中内嵌一个 if(x>0)语句,当输入 x=0 时,y 值为 1,显然
3.教学策略 通过对比,讨论启发学生对 if 语句的认识,结合具体实例分析加深学生对
if 语句的认识。 4.课时安排
2 课时(45 分钟×2) 5.教学环境
多媒体教室
学习过程:
分支程序往往需要一个关系表达式或者逻辑表达式作为判决的条件。根据其值是真还是 假来决定执行相应的语句。
3.1.1 if 语句
(1)if(条件 1)
if(条件 2) 语句 1
else 语句 2 (2)if (条件 1)
{if (条件 2) 语句 1} else 语句 2 第(1)个语句中 else 后面语句 2 与条件 2 有关,在条件 1 成立的情况下,条件 2 不成 立就执行语句 2,当条件 1 不成立时,语句 1 及语句 2 都不执行;第(2)个语句指条件 1 和 条件 2 均成立时,执行语句 1,若条件 1 不成立就执行语句 2,即语句 2 的执行与否同条件 2 无关。 例 3-4 以下程序输入一个 x 值,输出 y 值。
附记
课题名称:3.2 多分支语句
3.3 分支程序设计实例
教学目标:
(1)知识目标:掌握 switch 语句格式及使用,掌握分支程序设计方法; (2)能力目标:熟练分支程序设计; (3)情感目标:培养学生的逻辑思维,提高学生分析问题解决问题的能力。
教学分析与准备:
1.教学重点 switch 语句的格式及作用,分支程序设计方法。
课堂小结:
If 语句,条件运算符。
编号:GXJG/JX-JL-12(08)
教案审批表
C语
学
第三章分支程序设计
言程
序设 3.2 多分支语句
科 计 3.3 分支程序设计实例
保存期限:三年
审批签字
授课时数
2
授课方法
多媒体讲授
授课时间
授课班级
12 电子
教学目的
知识目标:掌握 switch 语句格式及使用,掌握分支程序设计方法。 能力目标:熟练分支程序设计。 情感目标:培养学生的逻辑思维,提高学生分析问题解决问题的 能力。
2.教学难点 switch 语句的执行过程。
3.教学策略 通过对比,结合具体实例分析加深学生对 switch 语句的认识,通过实际操作
进一步熟悉 switch 语句的使用。 4.课时安排
2 课时(45 分钟×2) 5.教学环境
多媒体教室
学习过程:
3.2 Switch 语句
if 语句只有两个分支供选择,当有多个分支时应该使用嵌套 if 语句,但嵌套层次一多时, 程序结构复杂,阅读和修改比较困难,C 语句中提供多分支选择语句 switch 语句来解决多分 支选择问题。
if(a<b)
{ x=a;a=b;b=x;}
printf("%f,%f\n",a,b);
}
运行情况如下:
4.5,2.8↙
4.5,2.8
例 3-3 输入三个实数,求最大者,赋给变量 max。
main()
{ float a,b,c,max;
priintf("Please input a,b,c:\n");
if 语句在 C 语言里有两种基本形式: (1)if (条件) 语句; (2)if (条件) 语句 1;
else 语句 2; 无论是哪种形式的 if 语句,都要首先判断( )内表达式的值,若为真(不为 0),执 行( )后的语句(第(2)种形式为语句 1);若为假(为 0)则执行( )后面语句之后 的语句(第(2)种形式为 else 后的语句 2)。 图 7-1 为这两种形式的程序框图。
编号:GXJG/JX-JL-12(08)
教案审批表
C语 学
言程 第三章分支程序设计 科 序设 3.1 条件语句
计
保存期限:三年
审批签字
授课时数
2
授课方法
多媒体讲授
授课时间
授课班级
12 电子
教学目的
知识目标:掌握 if 语句的格式及使用,掌握条件运算符的格式及 使用。
能力目标:熟练使用 if 语句。 情感目标:培养学生的逻辑思维,提高学生知识应用能力。
a>b?a:b+1 相当于 a>b?a:(b+1); 不相当于(a>b?a:b)+1 (3)条件运算符是“自右向左”结合的。例如: 若 a=1,b=3,c=5,d=7,那么:
a>b?a:c>d?c:d; 相当于 a>b?a:(c>d?c:d);该语句执行后,表达式值为 7。 (4)条件表达式不能取代一般的 if 语句,只有 if 语句中内嵌语句为赋值语句且赋予同 一变量时才能取代。例如:
1 (x<0) y= 0 (x=0)
-1 (x>0)
试判定下列程序段正确与否。 (1)main() { int x,y; scanf("%d",&x); if(x<0) y=1 if(x=0) y=0 if(x>0) y=-1 printf("x=%d,y=%d\n",x,y); } 说明;该程序使用三个 if 语句,对 y 赋值,因为 x 取值只能使三个证语句中的一个条件
4.5,2.8↙ 2.8,4.5 if 条件后面是复合语句,完成两个变量的交换,不能用 a=b,b=a;来进行交换,常用第
三个变量来暂存变量值。
例 3-2 若上例改为由大到小次序。
main()
{ float a,b,x;
printf("Please input a,b:\n");
scanf("%f,%f”,&a,&b);
scanf("%f,%f,%f",&a,&b,&c)
max=a;
if(b>max) max=b;
if(c> maxБайду номын сангаас max=c;
prinf("%5.2f\n",max);
}
运行情况如下:
please input a,b,c;
5.5,8,6.3↙
max=8.00
本例使用两个个 if 语句,以依次比较出最大者。
教 学 重 点 重点: if 语句的格式及使用,条件运算符的格式及使用。 和 难 点 难点:条件运算符。
复 习 提 问 C 语言有哪些运算符?
教 具 多媒体课件 课外作业
教 学 内 容 、方 法 和 过 程
一、组织教学:点名。 二、前课复习:运算符,顺序结构程序设计。 三、新课导入:讲解分支语句。 四、新课讲解:见附页 五、总结回顾:见附页
{ case 常量 1:语句系列 1;break; case 常量 2:语句系列 2;break;
case 常量 3:语句系列 3;break; default:语句系列 n+1; } switch 语句执行流程是:先计算“表达式”的值,然后顺序地与后面 case 子句中列出的各 个常量相比较,若表达式值等于常量 i 则执行相应的“语句序列 i”,再执行 break 语句跳出 switch 子句,若“表达式”值与 case 子句后所有常量都不相等,且有 default 子句,那么执行“语 句序列 n+1,如果没有 default 子句,则直接跳出 switch 语句。 使用 switch 语句应注意以下问题: (1)switch 语句和 if 语句不同,它只能判断一种逻辑关系,即表达式值是否等于指定 的常量,而 if 语句可以计算并判断各种表达式。 (2)case 子句后的常量可以是整型、字符型、枚举型数据或者是整型表达式,但不允 许是变量,即允许是与 switch 后表达式类型一致的常量。 (3)同一个 switch 中 case 后的常量不能相同,但在相互嵌套的不同层次 switch 之间允 许有相同的常量。 (4)default 子句可以省略。 (5)case 和 defaulf 后的“语句序列”允许由多个语句构成并且不必(也可)用花括号括 起 来。 (6)case 及 defaulf 语句出现的次序是任意的,可以变换位置,并不影响 switch 功能。 (7)多个 case 可共用一组执行语句,例如: case'A': case'B': case'C':prinf(">60\n");break; 当表达式值为'A'、'B'或'C'时都执行 printf 语句。
if(x>y) printf("%d",a) else printf("%d",b); 不能用一个条件表达式替代,但可用以下语句代替: printf("%d",x>y?a:b); (5)el、e2、e3 三个表达式类型可以不同,当 e2、e3 类型不同时自动进行类型转换。 例如: x>y?1.2:2 若 x>y 表达式值为 1.2,否则为 2.0(整型→实型)。
与原意不符,程序有错,如果花括号把 if(x>0)y=1;括起来,那么 else 就与 if(x!=0) 匹配,这样当 x=0 时执行 y=0;语句,程序就可以运行正确。
(3)main() { int x,y; scanf("%d",&x); y=0;
if(x>=0) if(x>0) y=-1; else y=1; printf("x=%d,y=%d\n",x,y); } 说明:该程序当 x<0 时,输出 y=0,显示与原意不同,其原因与上述相同,为更正它, 也只需用花括号把 if(x>0)y=1;括起来。
例 3-1 输入两个实数,按代数值由小到大次序输出这两个数。 main() { float a,b,x;
printf("Please input a,b:\n"); scanf("%f,%f”,&a,&b); if(a>b)
{ x=a;a=b;b=x;} printf("%f,%f\n",a,b); } 运行情况如下:
F 条件
T 语句
条件 T
语句 1
F 语句 2
图 7-1 两种 if 语句的程序框图
注意,这两种形式 if 后的“条件”大多是逻辑表达式或关系表达式,根据是 0 还是非 0 执 行“假”或“真”的处理。此外,语句之后一定有分号(;),它是语句的组成部分,不能 省略(尤其是 else 前的分号)。同时,若 if 和 else 后有多个语句,可以用{ }形成复合语句。
日常生活中,往往会遇到“分类”问题,例如学生成绩分类(90 分及以上为'A'等, 80~89 分为'B'等,70~79 分为'C'等,……)、人口统计分类(按年龄分为老年、中 年、青年、少年,儿童……)、工资统计分类、银行存款分类等。这些问题可用 switch 语句 来解决。
switch 语句的一般形式为: switch(表达式)
教 学 重 点 重点:switch 语句的格式及作用,分支程序设计方法。 和 难 点 难点:switch 语句的执行过程。
复 习 提 问 If 语句怎么执行?
教 具 多媒体课件 课外作业
教 学 内 容 、方 法 和 过 程
一、组织教学:点名。 二、前课复习:if 语句。 三、新课导入:结合实际问题,讲解多分支语句的必要性。 四、新课讲解:见附页 五、总结回顾:见附页
3.1.2 if 语句嵌套
一个 if 语句可以包含另一个或多个 if 语句称为语句配套,注意 e1se 总是与它最近的一
个 if 配套,这一点与 Pascal 语言相同。
if (条件)
if(条件) 语句 1
内嵌 if
else
语句 2
else
if(条件) 语句 3
else
语句 4 内嵌 if
请注意以下两个语句的差别:
3.1.3 条件运算符的作用
C 语言中 if(a<b) min=a; else min=b;
可简写为: min=(a<b)?a;b; 条件运算符的功能曾在第二章提到,它需要三个操作时象,是 C 语言唯一的三目运算符。 下面进一步可以说明, (1)注意执行的顺序“el?e2:e3”中先执行表达式 e1,若为非零(真)求解表达式 e2, 并把 e2 值作为整个表达式的值;若 e1 值为零(假)求解表达式 e3,并把 e3 值作为整个表 达式的值,在 min=(a<b)?a:b;中把 a、b 中小的值赋于 min。 (2)条件运算符优先于赋值运算符,即先求解后赋值,但条件运算符优先级又低于关 系运算符和算术运算符,因此 min=(a<b)?a:b;中括号可以省略,写成 min=a<b?a:b; 例如:
附记
课题名称:3.1 条件语句
教学目标:
(1)知识目标:掌握 if 语句的格式及使用,掌握条件运算符的格式及使用; (2)能力目标:熟练使用 if 语句; (3)情感目标:培养学生的逻辑思维,提高学生知识应用能力。
教学分析与准备:
1.教学重点 if 语句的格式及使用,条件运算符的格式及使用。
2.教学难点 条件运算符。
3.教学策略 通过对比,讨论启发学生对 if 语句的认识,结合具体实例分析加深学生对
if 语句的认识。 4.课时安排
2 课时(45 分钟×2) 5.教学环境
多媒体教室
学习过程:
分支程序往往需要一个关系表达式或者逻辑表达式作为判决的条件。根据其值是真还是 假来决定执行相应的语句。
3.1.1 if 语句
(1)if(条件 1)
if(条件 2) 语句 1
else 语句 2 (2)if (条件 1)
{if (条件 2) 语句 1} else 语句 2 第(1)个语句中 else 后面语句 2 与条件 2 有关,在条件 1 成立的情况下,条件 2 不成 立就执行语句 2,当条件 1 不成立时,语句 1 及语句 2 都不执行;第(2)个语句指条件 1 和 条件 2 均成立时,执行语句 1,若条件 1 不成立就执行语句 2,即语句 2 的执行与否同条件 2 无关。 例 3-4 以下程序输入一个 x 值,输出 y 值。
附记
课题名称:3.2 多分支语句
3.3 分支程序设计实例
教学目标:
(1)知识目标:掌握 switch 语句格式及使用,掌握分支程序设计方法; (2)能力目标:熟练分支程序设计; (3)情感目标:培养学生的逻辑思维,提高学生分析问题解决问题的能力。
教学分析与准备:
1.教学重点 switch 语句的格式及作用,分支程序设计方法。
课堂小结:
If 语句,条件运算符。
编号:GXJG/JX-JL-12(08)
教案审批表
C语
学
第三章分支程序设计
言程
序设 3.2 多分支语句
科 计 3.3 分支程序设计实例
保存期限:三年
审批签字
授课时数
2
授课方法
多媒体讲授
授课时间
授课班级
12 电子
教学目的
知识目标:掌握 switch 语句格式及使用,掌握分支程序设计方法。 能力目标:熟练分支程序设计。 情感目标:培养学生的逻辑思维,提高学生分析问题解决问题的 能力。
2.教学难点 switch 语句的执行过程。
3.教学策略 通过对比,结合具体实例分析加深学生对 switch 语句的认识,通过实际操作
进一步熟悉 switch 语句的使用。 4.课时安排
2 课时(45 分钟×2) 5.教学环境
多媒体教室
学习过程:
3.2 Switch 语句
if 语句只有两个分支供选择,当有多个分支时应该使用嵌套 if 语句,但嵌套层次一多时, 程序结构复杂,阅读和修改比较困难,C 语句中提供多分支选择语句 switch 语句来解决多分 支选择问题。
if(a<b)
{ x=a;a=b;b=x;}
printf("%f,%f\n",a,b);
}
运行情况如下:
4.5,2.8↙
4.5,2.8
例 3-3 输入三个实数,求最大者,赋给变量 max。
main()
{ float a,b,c,max;
priintf("Please input a,b,c:\n");
if 语句在 C 语言里有两种基本形式: (1)if (条件) 语句; (2)if (条件) 语句 1;
else 语句 2; 无论是哪种形式的 if 语句,都要首先判断( )内表达式的值,若为真(不为 0),执 行( )后的语句(第(2)种形式为语句 1);若为假(为 0)则执行( )后面语句之后 的语句(第(2)种形式为 else 后的语句 2)。 图 7-1 为这两种形式的程序框图。
编号:GXJG/JX-JL-12(08)
教案审批表
C语 学
言程 第三章分支程序设计 科 序设 3.1 条件语句
计
保存期限:三年
审批签字
授课时数
2
授课方法
多媒体讲授
授课时间
授课班级
12 电子
教学目的
知识目标:掌握 if 语句的格式及使用,掌握条件运算符的格式及 使用。
能力目标:熟练使用 if 语句。 情感目标:培养学生的逻辑思维,提高学生知识应用能力。
a>b?a:b+1 相当于 a>b?a:(b+1); 不相当于(a>b?a:b)+1 (3)条件运算符是“自右向左”结合的。例如: 若 a=1,b=3,c=5,d=7,那么:
a>b?a:c>d?c:d; 相当于 a>b?a:(c>d?c:d);该语句执行后,表达式值为 7。 (4)条件表达式不能取代一般的 if 语句,只有 if 语句中内嵌语句为赋值语句且赋予同 一变量时才能取代。例如:
1 (x<0) y= 0 (x=0)
-1 (x>0)
试判定下列程序段正确与否。 (1)main() { int x,y; scanf("%d",&x); if(x<0) y=1 if(x=0) y=0 if(x>0) y=-1 printf("x=%d,y=%d\n",x,y); } 说明;该程序使用三个 if 语句,对 y 赋值,因为 x 取值只能使三个证语句中的一个条件
4.5,2.8↙ 2.8,4.5 if 条件后面是复合语句,完成两个变量的交换,不能用 a=b,b=a;来进行交换,常用第
三个变量来暂存变量值。
例 3-2 若上例改为由大到小次序。
main()
{ float a,b,x;
printf("Please input a,b:\n");
scanf("%f,%f”,&a,&b);
scanf("%f,%f,%f",&a,&b,&c)
max=a;
if(b>max) max=b;
if(c> maxБайду номын сангаас max=c;
prinf("%5.2f\n",max);
}
运行情况如下:
please input a,b,c;
5.5,8,6.3↙
max=8.00
本例使用两个个 if 语句,以依次比较出最大者。
教 学 重 点 重点: if 语句的格式及使用,条件运算符的格式及使用。 和 难 点 难点:条件运算符。
复 习 提 问 C 语言有哪些运算符?
教 具 多媒体课件 课外作业
教 学 内 容 、方 法 和 过 程
一、组织教学:点名。 二、前课复习:运算符,顺序结构程序设计。 三、新课导入:讲解分支语句。 四、新课讲解:见附页 五、总结回顾:见附页
{ case 常量 1:语句系列 1;break; case 常量 2:语句系列 2;break;
case 常量 3:语句系列 3;break; default:语句系列 n+1; } switch 语句执行流程是:先计算“表达式”的值,然后顺序地与后面 case 子句中列出的各 个常量相比较,若表达式值等于常量 i 则执行相应的“语句序列 i”,再执行 break 语句跳出 switch 子句,若“表达式”值与 case 子句后所有常量都不相等,且有 default 子句,那么执行“语 句序列 n+1,如果没有 default 子句,则直接跳出 switch 语句。 使用 switch 语句应注意以下问题: (1)switch 语句和 if 语句不同,它只能判断一种逻辑关系,即表达式值是否等于指定 的常量,而 if 语句可以计算并判断各种表达式。 (2)case 子句后的常量可以是整型、字符型、枚举型数据或者是整型表达式,但不允 许是变量,即允许是与 switch 后表达式类型一致的常量。 (3)同一个 switch 中 case 后的常量不能相同,但在相互嵌套的不同层次 switch 之间允 许有相同的常量。 (4)default 子句可以省略。 (5)case 和 defaulf 后的“语句序列”允许由多个语句构成并且不必(也可)用花括号括 起 来。 (6)case 及 defaulf 语句出现的次序是任意的,可以变换位置,并不影响 switch 功能。 (7)多个 case 可共用一组执行语句,例如: case'A': case'B': case'C':prinf(">60\n");break; 当表达式值为'A'、'B'或'C'时都执行 printf 语句。
if(x>y) printf("%d",a) else printf("%d",b); 不能用一个条件表达式替代,但可用以下语句代替: printf("%d",x>y?a:b); (5)el、e2、e3 三个表达式类型可以不同,当 e2、e3 类型不同时自动进行类型转换。 例如: x>y?1.2:2 若 x>y 表达式值为 1.2,否则为 2.0(整型→实型)。
与原意不符,程序有错,如果花括号把 if(x>0)y=1;括起来,那么 else 就与 if(x!=0) 匹配,这样当 x=0 时执行 y=0;语句,程序就可以运行正确。
(3)main() { int x,y; scanf("%d",&x); y=0;
if(x>=0) if(x>0) y=-1; else y=1; printf("x=%d,y=%d\n",x,y); } 说明:该程序当 x<0 时,输出 y=0,显示与原意不同,其原因与上述相同,为更正它, 也只需用花括号把 if(x>0)y=1;括起来。
例 3-1 输入两个实数,按代数值由小到大次序输出这两个数。 main() { float a,b,x;
printf("Please input a,b:\n"); scanf("%f,%f”,&a,&b); if(a>b)
{ x=a;a=b;b=x;} printf("%f,%f\n",a,b); } 运行情况如下:
F 条件
T 语句
条件 T
语句 1
F 语句 2
图 7-1 两种 if 语句的程序框图
注意,这两种形式 if 后的“条件”大多是逻辑表达式或关系表达式,根据是 0 还是非 0 执 行“假”或“真”的处理。此外,语句之后一定有分号(;),它是语句的组成部分,不能 省略(尤其是 else 前的分号)。同时,若 if 和 else 后有多个语句,可以用{ }形成复合语句。
日常生活中,往往会遇到“分类”问题,例如学生成绩分类(90 分及以上为'A'等, 80~89 分为'B'等,70~79 分为'C'等,……)、人口统计分类(按年龄分为老年、中 年、青年、少年,儿童……)、工资统计分类、银行存款分类等。这些问题可用 switch 语句 来解决。
switch 语句的一般形式为: switch(表达式)
教 学 重 点 重点:switch 语句的格式及作用,分支程序设计方法。 和 难 点 难点:switch 语句的执行过程。
复 习 提 问 If 语句怎么执行?
教 具 多媒体课件 课外作业
教 学 内 容 、方 法 和 过 程
一、组织教学:点名。 二、前课复习:if 语句。 三、新课导入:结合实际问题,讲解多分支语句的必要性。 四、新课讲解:见附页 五、总结回顾:见附页
3.1.2 if 语句嵌套
一个 if 语句可以包含另一个或多个 if 语句称为语句配套,注意 e1se 总是与它最近的一
个 if 配套,这一点与 Pascal 语言相同。
if (条件)
if(条件) 语句 1
内嵌 if
else
语句 2
else
if(条件) 语句 3
else
语句 4 内嵌 if
请注意以下两个语句的差别:
3.1.3 条件运算符的作用
C 语言中 if(a<b) min=a; else min=b;
可简写为: min=(a<b)?a;b; 条件运算符的功能曾在第二章提到,它需要三个操作时象,是 C 语言唯一的三目运算符。 下面进一步可以说明, (1)注意执行的顺序“el?e2:e3”中先执行表达式 e1,若为非零(真)求解表达式 e2, 并把 e2 值作为整个表达式的值;若 e1 值为零(假)求解表达式 e3,并把 e3 值作为整个表 达式的值,在 min=(a<b)?a:b;中把 a、b 中小的值赋于 min。 (2)条件运算符优先于赋值运算符,即先求解后赋值,但条件运算符优先级又低于关 系运算符和算术运算符,因此 min=(a<b)?a:b;中括号可以省略,写成 min=a<b?a:b; 例如:
附记
课题名称:3.1 条件语句
教学目标:
(1)知识目标:掌握 if 语句的格式及使用,掌握条件运算符的格式及使用; (2)能力目标:熟练使用 if 语句; (3)情感目标:培养学生的逻辑思维,提高学生知识应用能力。
教学分析与准备:
1.教学重点 if 语句的格式及使用,条件运算符的格式及使用。
2.教学难点 条件运算符。