第五讲_switch、算法和流程图-OK
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
?:
2013-11-25 (c) Guo S.
三目(条件)
C语言程序设计
条件运算符 A?B:C
使用法: 表达式1?表达式2:表达式3
表达式1成立的话,其值为表达式2的值,否 则为表达式3的值。 完全等价于: max = x>y? x: y;
唯一的三目运算符
2013-11-25 (c) Guo S.
2013-11-25 (c) Guo S.
C语言程序设计
if语句练习
键盘给定三个浮点数a,b和c,将其按照 a大于等于b,且b大于等于c的要求,排 序后,输出。【思考:四位数如何做?】 键盘输入一个三位数的整数,判断是否为 水仙花数,是则输出“1”,不是则输出 “0”。输入的不是三位数,则输出“输 入错误”。
(c) Guo S.
2013-11-25
C语言程序设计
注意事项
1 2 3 括号内的表达式可以是 int ,char。 case 后的每个常量表达式必须各不相同。 case 和 default的位置是任意的。 break(间断语句);
4 每一个case之后应有一个 以跳出 switch( ) 结构。
2013-11-25
(c) Guo S.
C语言程序设计
Switch语句:多分支
if语句是有两个分支。。。 Switch语句实现多分支:根据表达式的值进行选择
表达式 A处理 B处理 C处理 N处理
流程图
2013-11-25 (c) Guo S.
C语言程序设计
Switch语句:多分支
格 式 为 :
所有case仅是 表达式的值= switch(表达式) 标记为程序执 常量1 { 表达式的值= 行的入口,不 case 常量1:语句1 做判断。停止 常量2 case 常量2:语句2 执行要用 ... break 表达式的值= case 常量n:语句n 常量n default:语句n+1 } 表达式的值没 有匹配的常量
41
C语言程序设计
结构化
满足以上基本结构特点的算法结构,就可以叫基 本结构。 由3种基本结构组成的算法结构,可以解决任何 复杂的问题,由基本结构组成的算法,是结构化 的算法。
表达式
A处理
B处理
C处理
N处理
2013-11-25
42
C语言程序设计
37
C语言程序设计
算法的表示
输入a 成立 不成立 成立 不成立 成立 不成立 P
流程图的基本结构: 顺序结构 选择结构 循环结构 选择结构也叫分支结构。 必须包含判断。根据条件 选择要执行的语句。
2013-11-25
处理 AA 处理
B 处理
输出b
处理 = 处理模块或者语句的集合
38
C语言程序设计
(c) Guo S.
几个CASE 执行相同的 语句
跳出开关结构
2013-11-25
C语言程序设计
程序举例 (续)
处 理 小 月 case 4: case 6: 判断是否 case 9: 为闰年 case 11: days=30 ; break; case 2: if ((year%4==0)&&(year%100!=0) ||(year%400)==0) days=29; 处理二月 else days=28; break; default:printf(“Enter error!\n”); days=0; break; } if (days!=0) printf(“%d\n”,days); return 0;
2013-11-25
(c) Guo S.
C语言程序设计
if语句练习
键盘输入一个浮点数score,作为成绩。 当大于100或小于0,输出“输入错误”; 在0到100之间,将其转换为五级制,即 90到100为“优秀”,80到89为“良 好”,70到79为“中等”,60到69为 “及格”,0到59为“不及格”。 算命先生
• 程序涉及操作:
1. 输入半径 r 2. 计算周长 Len 3. 输出周长 Len
2013-11-25 20
C语言程序设计
算法
已知有30个学生,计算和打印“语文、数学 及平均成绩”的算法。 算法设计:就需要得知每个学生的语文数学 的成绩,然后计算平均,最后打印。 具体步骤为: 1) 输入语文和数学成绩N1和N2 2) 计算平均成绩 ave=(N1+N2)/2; 3) 打印N1,N2和ave 它涉及3个操作,执行将按1)~3)顺序。 从第二个学生开始,重复1)~3)步骤。
可以来源于:
得到mx的具体步骤为: 1) 让mx等于第一个数,mx=a1。 2) mx和剩下的依次比较: 大的话,mx=依次比较的值 不大的话,mx不变
2013-11-25
25
C语言程序设计
对应C语言 程序设计的 三种结构!
2013-11-25 26
C语言程序设计
算法举例
如何求一个整数的阶乘?如何求最大公约数? 如何求三个、四个数的最大值、最小值? 如何利用泰勒展开计算sin,cos的值? 等等
2013-11-25
(c) Guo S.
C语言程序设计
if语句练习
键盘给定三个浮点数a,b和c,求最大值max,和 最小值min,并输出 键盘输入一个整数m,作为月份。 当m大于12或小于1时,输出“输入错误”; 当m为3到5,输出“春天”; 6到8,输出“夏天”; 9到11,输出“秋天”; 12,1和2时,输出“冬天”
算法的表示
输入a
流程图的基本结构: 顺序结构 选择结构 循环结构 (“当”型)
循环结构也叫重复结构。 反复执行一部分操作。 分为:当型和直到型
2013-11-25
A 处理 成立 P 不成立
输出b 处理 = 处理模块或者语句的集合
39
C语言程序设计
算法的表示
输入a
流程图的基本结构: 顺序结构 选择结构 循环结构 (“直到”型)
如何设计一个算法?
2013-11-25 28
C语言程序设计
算法举例
x x x x sin( x) x ... 3 5 7! n! ! !
3 5 7 n
给出利用下边的泰勒展开求sin(0.5)的算法。 要求所加的最后一项不大于0.0005
初始化:x=0.5; i=1; s=1; 将用到:t = pow(x,i); re = re + s*t; i = i+2; s = -s; if(fabs(t)<0.0005)...
2013-11-25 31
C语言程序设计
算法举例
利用循环处理和条件判断
规律性和条件
2013-11-25
34
C语言程序设计
算法的表示
程序设计:工具(语言和流程图等)
算法的表示通常有: 程序流程图、N-S图和PAD图等方式。
例:用程序流程图表示方程的求实解算法
ax bx c 0
2
2013-11-25 35
算法
程序 = 数据结构 + 算法
算法解决“做什么?”和“怎么做?” 对解题过程准确而完整的描述称为解此问 题的算法,因此不知道解题的算法也 就不可能编写程序来解题。
2013-11-25 19
C语言程序设计
算法
• 例如,求一个圆的周长 Len,并输出
• 就需要知道
1. 半径 r 2. 公式 Len = 2πr
C语言程序设计
C语言程序设计(A)
郭 素梅 GUO Sumei
C语言程序设计
运算符
=
(赋值) +,-,*,/,% 双目(算术) ++,-单目(自增减) +=,-=,*=,/=,%= 双目(复合) >, <, >=, <=, ==, != 双目(关系) &&, || 双目(逻辑) ! 单目(逻辑)
5 每个case 之后的执行语句可多于一个, 但不必加{ }。 6 允许几种case情况下执行相同的语句,不必每个 都写case 。 2013-11-25 (c) Guo S.
C语言程序设计
举例
用switch语句实现
输入100分制,输出对应五级制 输入月份,输出对应的季度
2013-11-25
循环结构也叫重复结构。 反复执行一部分操作。 分为:当型和直到型
2013-11-25
A 处理
不成立
P
成立
输出b
处理 = 处理模块或者语句的集合
40
C语言程序设计
基本结构的特点
Baidu Nhomakorabea
3种基本结构: 顺序结构 选择结构 循环结构
2013-11-25
特点: 一个入口,一个出口 每个处理都有机会被执行到 不存在“死循环”
2013-11-25
21
C语言程序设计
算法
求3个整数的最大值mx,并输出
比如:
得到mx的具体步骤为: 1) 输入三个整数a,b,c 2) mx=a; 3) 如果 mx大于b 的话,mx=b; 否则不变; 4) 如果 mx大于c 的话,mx=c; 否则不变;
2013-11-25 23
C语言程序设计
if(x>y) max=x; else max = y;
认识条件运算符 A?B:C
C语言程序设计
X = X<0? -X: X; M=M?X:Y; D>=0? (D>0? printf(“两个实数解”): printf(“一个实数解”)): printf(“无实数 解”);
if(X<0)x=-x; if(M)M=x; else M=y;
2013-11-25
29
C语言程序设计 算法举例 求分数列前20项的和sum
分数列: 2/1, 3/2, 5/3, 8/5, 13/8, 21/13...
分析算法:
数列 a/b 初值:a=2, b=1 循环变量:1,2,3...20
将用到的语句:
2013-11-25
sum = sum + a/b t=a; a=a+b; b=t;
(c) Guo S.
C语言程序设计
2013-11-25
15
程序举例
C语言程序设计
关系到如何判闰年? 例:输入年,月,计算该月有多少天?
main( ) { int year,month,days; printf(“Enter year, month\n”); scanf(“%d,%d”,&year,&month); switch(month) { case 1: case 3: 处 case 5: 理 大 case 7: 月 case 8: case 10: case 12: days=31; break;
2013-11-25
开关结 构结束
}
(c) Guo S.
C语言程序设计
) 1.0
y=f(x)
-1.0
1.0
x
从键盘输入x,求y,并输出。 执行时要求:从键盘输入4次x的值,分别 为x>=1.0, x<=-1.0,-1.0<x<0, 0<=x<1.0
(c) Guo S.
2013-11-25
C语言程序设计
30
C语言程序设计
算法的特点
编写程序,必须学会设计算法。
• 有穷性:有限的操作步骤。指合理范围内的有 穷性 • 确定性:每个步骤是确定的,而不是含糊、模 棱两可的。其操作是唯一的。 • 有效性:能有效执行并得到确定的结果 • 有0个或以上的输入:执行算法时需要的外界的 信息 • 有1个或以上的输出:执行算法得到的结果
算法
再比如: 求3个整数的最大值mx,并输出
得到mx的具体步骤为: 1) 输入三个整数a,b,c 2) 如果 a大于b 的话,mx=a; 否则 mx=b; 3) 如果 mx大于c 的话,mx=c; 否则不变;
2013-11-25
24
C语言程序设计
算法
100个、 N个
求两个整数(a, b)的 最大值mx,并输出
2013-11-25
(c) Guo S.
C语言程序设计
重要题
水仙花数;勾股数;对称数;闰年 公倍数&公约数、完数
倒序输出;图形输出; 计算面积(简单图形、函数) 级数 排序(数字、字符串); 统计(最大、最小、平均、方差)
2013-11-25 (c) Guo S.
C语言程序设计
C语言程序设计
算法的表示
流程图的基本符号
起、止框
流程控制线 判断框
输入、输出框
处理框
2013-11-25
36
C语言程序设计
算法的表示
输入a
流程图的基本结构: 顺序结构 选择结构 循环结构 顺序结构按照顺序执行。 程序的走向是固定的。
2013-11-25
A 处理
B 处理
输出b
处理 = 处理模块或者语句的集合
2013-11-25
if(D>=0){ if(D>0)printf(“两个实数解”); else printf(“一个实数解”); } else printf(“无实数解”);
(c) Guo S.
C语言程序设计
a,b,c,d四个数的最大值
m1 = a>b? a:b; m2 = c>b?c:d; max = m1>m2?m1:m2;
2013-11-25 (c) Guo S.
三目(条件)
C语言程序设计
条件运算符 A?B:C
使用法: 表达式1?表达式2:表达式3
表达式1成立的话,其值为表达式2的值,否 则为表达式3的值。 完全等价于: max = x>y? x: y;
唯一的三目运算符
2013-11-25 (c) Guo S.
2013-11-25 (c) Guo S.
C语言程序设计
if语句练习
键盘给定三个浮点数a,b和c,将其按照 a大于等于b,且b大于等于c的要求,排 序后,输出。【思考:四位数如何做?】 键盘输入一个三位数的整数,判断是否为 水仙花数,是则输出“1”,不是则输出 “0”。输入的不是三位数,则输出“输 入错误”。
(c) Guo S.
2013-11-25
C语言程序设计
注意事项
1 2 3 括号内的表达式可以是 int ,char。 case 后的每个常量表达式必须各不相同。 case 和 default的位置是任意的。 break(间断语句);
4 每一个case之后应有一个 以跳出 switch( ) 结构。
2013-11-25
(c) Guo S.
C语言程序设计
Switch语句:多分支
if语句是有两个分支。。。 Switch语句实现多分支:根据表达式的值进行选择
表达式 A处理 B处理 C处理 N处理
流程图
2013-11-25 (c) Guo S.
C语言程序设计
Switch语句:多分支
格 式 为 :
所有case仅是 表达式的值= switch(表达式) 标记为程序执 常量1 { 表达式的值= 行的入口,不 case 常量1:语句1 做判断。停止 常量2 case 常量2:语句2 执行要用 ... break 表达式的值= case 常量n:语句n 常量n default:语句n+1 } 表达式的值没 有匹配的常量
41
C语言程序设计
结构化
满足以上基本结构特点的算法结构,就可以叫基 本结构。 由3种基本结构组成的算法结构,可以解决任何 复杂的问题,由基本结构组成的算法,是结构化 的算法。
表达式
A处理
B处理
C处理
N处理
2013-11-25
42
C语言程序设计
37
C语言程序设计
算法的表示
输入a 成立 不成立 成立 不成立 成立 不成立 P
流程图的基本结构: 顺序结构 选择结构 循环结构 选择结构也叫分支结构。 必须包含判断。根据条件 选择要执行的语句。
2013-11-25
处理 AA 处理
B 处理
输出b
处理 = 处理模块或者语句的集合
38
C语言程序设计
(c) Guo S.
几个CASE 执行相同的 语句
跳出开关结构
2013-11-25
C语言程序设计
程序举例 (续)
处 理 小 月 case 4: case 6: 判断是否 case 9: 为闰年 case 11: days=30 ; break; case 2: if ((year%4==0)&&(year%100!=0) ||(year%400)==0) days=29; 处理二月 else days=28; break; default:printf(“Enter error!\n”); days=0; break; } if (days!=0) printf(“%d\n”,days); return 0;
2013-11-25
(c) Guo S.
C语言程序设计
if语句练习
键盘输入一个浮点数score,作为成绩。 当大于100或小于0,输出“输入错误”; 在0到100之间,将其转换为五级制,即 90到100为“优秀”,80到89为“良 好”,70到79为“中等”,60到69为 “及格”,0到59为“不及格”。 算命先生
• 程序涉及操作:
1. 输入半径 r 2. 计算周长 Len 3. 输出周长 Len
2013-11-25 20
C语言程序设计
算法
已知有30个学生,计算和打印“语文、数学 及平均成绩”的算法。 算法设计:就需要得知每个学生的语文数学 的成绩,然后计算平均,最后打印。 具体步骤为: 1) 输入语文和数学成绩N1和N2 2) 计算平均成绩 ave=(N1+N2)/2; 3) 打印N1,N2和ave 它涉及3个操作,执行将按1)~3)顺序。 从第二个学生开始,重复1)~3)步骤。
可以来源于:
得到mx的具体步骤为: 1) 让mx等于第一个数,mx=a1。 2) mx和剩下的依次比较: 大的话,mx=依次比较的值 不大的话,mx不变
2013-11-25
25
C语言程序设计
对应C语言 程序设计的 三种结构!
2013-11-25 26
C语言程序设计
算法举例
如何求一个整数的阶乘?如何求最大公约数? 如何求三个、四个数的最大值、最小值? 如何利用泰勒展开计算sin,cos的值? 等等
2013-11-25
(c) Guo S.
C语言程序设计
if语句练习
键盘给定三个浮点数a,b和c,求最大值max,和 最小值min,并输出 键盘输入一个整数m,作为月份。 当m大于12或小于1时,输出“输入错误”; 当m为3到5,输出“春天”; 6到8,输出“夏天”; 9到11,输出“秋天”; 12,1和2时,输出“冬天”
算法的表示
输入a
流程图的基本结构: 顺序结构 选择结构 循环结构 (“当”型)
循环结构也叫重复结构。 反复执行一部分操作。 分为:当型和直到型
2013-11-25
A 处理 成立 P 不成立
输出b 处理 = 处理模块或者语句的集合
39
C语言程序设计
算法的表示
输入a
流程图的基本结构: 顺序结构 选择结构 循环结构 (“直到”型)
如何设计一个算法?
2013-11-25 28
C语言程序设计
算法举例
x x x x sin( x) x ... 3 5 7! n! ! !
3 5 7 n
给出利用下边的泰勒展开求sin(0.5)的算法。 要求所加的最后一项不大于0.0005
初始化:x=0.5; i=1; s=1; 将用到:t = pow(x,i); re = re + s*t; i = i+2; s = -s; if(fabs(t)<0.0005)...
2013-11-25 31
C语言程序设计
算法举例
利用循环处理和条件判断
规律性和条件
2013-11-25
34
C语言程序设计
算法的表示
程序设计:工具(语言和流程图等)
算法的表示通常有: 程序流程图、N-S图和PAD图等方式。
例:用程序流程图表示方程的求实解算法
ax bx c 0
2
2013-11-25 35
算法
程序 = 数据结构 + 算法
算法解决“做什么?”和“怎么做?” 对解题过程准确而完整的描述称为解此问 题的算法,因此不知道解题的算法也 就不可能编写程序来解题。
2013-11-25 19
C语言程序设计
算法
• 例如,求一个圆的周长 Len,并输出
• 就需要知道
1. 半径 r 2. 公式 Len = 2πr
C语言程序设计
C语言程序设计(A)
郭 素梅 GUO Sumei
C语言程序设计
运算符
=
(赋值) +,-,*,/,% 双目(算术) ++,-单目(自增减) +=,-=,*=,/=,%= 双目(复合) >, <, >=, <=, ==, != 双目(关系) &&, || 双目(逻辑) ! 单目(逻辑)
5 每个case 之后的执行语句可多于一个, 但不必加{ }。 6 允许几种case情况下执行相同的语句,不必每个 都写case 。 2013-11-25 (c) Guo S.
C语言程序设计
举例
用switch语句实现
输入100分制,输出对应五级制 输入月份,输出对应的季度
2013-11-25
循环结构也叫重复结构。 反复执行一部分操作。 分为:当型和直到型
2013-11-25
A 处理
不成立
P
成立
输出b
处理 = 处理模块或者语句的集合
40
C语言程序设计
基本结构的特点
Baidu Nhomakorabea
3种基本结构: 顺序结构 选择结构 循环结构
2013-11-25
特点: 一个入口,一个出口 每个处理都有机会被执行到 不存在“死循环”
2013-11-25
21
C语言程序设计
算法
求3个整数的最大值mx,并输出
比如:
得到mx的具体步骤为: 1) 输入三个整数a,b,c 2) mx=a; 3) 如果 mx大于b 的话,mx=b; 否则不变; 4) 如果 mx大于c 的话,mx=c; 否则不变;
2013-11-25 23
C语言程序设计
if(x>y) max=x; else max = y;
认识条件运算符 A?B:C
C语言程序设计
X = X<0? -X: X; M=M?X:Y; D>=0? (D>0? printf(“两个实数解”): printf(“一个实数解”)): printf(“无实数 解”);
if(X<0)x=-x; if(M)M=x; else M=y;
2013-11-25
29
C语言程序设计 算法举例 求分数列前20项的和sum
分数列: 2/1, 3/2, 5/3, 8/5, 13/8, 21/13...
分析算法:
数列 a/b 初值:a=2, b=1 循环变量:1,2,3...20
将用到的语句:
2013-11-25
sum = sum + a/b t=a; a=a+b; b=t;
(c) Guo S.
C语言程序设计
2013-11-25
15
程序举例
C语言程序设计
关系到如何判闰年? 例:输入年,月,计算该月有多少天?
main( ) { int year,month,days; printf(“Enter year, month\n”); scanf(“%d,%d”,&year,&month); switch(month) { case 1: case 3: 处 case 5: 理 大 case 7: 月 case 8: case 10: case 12: days=31; break;
2013-11-25
开关结 构结束
}
(c) Guo S.
C语言程序设计
) 1.0
y=f(x)
-1.0
1.0
x
从键盘输入x,求y,并输出。 执行时要求:从键盘输入4次x的值,分别 为x>=1.0, x<=-1.0,-1.0<x<0, 0<=x<1.0
(c) Guo S.
2013-11-25
C语言程序设计
30
C语言程序设计
算法的特点
编写程序,必须学会设计算法。
• 有穷性:有限的操作步骤。指合理范围内的有 穷性 • 确定性:每个步骤是确定的,而不是含糊、模 棱两可的。其操作是唯一的。 • 有效性:能有效执行并得到确定的结果 • 有0个或以上的输入:执行算法时需要的外界的 信息 • 有1个或以上的输出:执行算法得到的结果
算法
再比如: 求3个整数的最大值mx,并输出
得到mx的具体步骤为: 1) 输入三个整数a,b,c 2) 如果 a大于b 的话,mx=a; 否则 mx=b; 3) 如果 mx大于c 的话,mx=c; 否则不变;
2013-11-25
24
C语言程序设计
算法
100个、 N个
求两个整数(a, b)的 最大值mx,并输出
2013-11-25
(c) Guo S.
C语言程序设计
重要题
水仙花数;勾股数;对称数;闰年 公倍数&公约数、完数
倒序输出;图形输出; 计算面积(简单图形、函数) 级数 排序(数字、字符串); 统计(最大、最小、平均、方差)
2013-11-25 (c) Guo S.
C语言程序设计
C语言程序设计
算法的表示
流程图的基本符号
起、止框
流程控制线 判断框
输入、输出框
处理框
2013-11-25
36
C语言程序设计
算法的表示
输入a
流程图的基本结构: 顺序结构 选择结构 循环结构 顺序结构按照顺序执行。 程序的走向是固定的。
2013-11-25
A 处理
B 处理
输出b
处理 = 处理模块或者语句的集合
2013-11-25
if(D>=0){ if(D>0)printf(“两个实数解”); else printf(“一个实数解”); } else printf(“无实数解”);
(c) Guo S.
C语言程序设计
a,b,c,d四个数的最大值
m1 = a>b? a:b; m2 = c>b?c:d; max = m1>m2?m1:m2;