switch、算法和流程图-OK.ppt_第1页
switch、算法和流程图-OK.ppt_第2页
switch、算法和流程图-OK.ppt_第3页
switch、算法和流程图-OK.ppt_第4页
switch、算法和流程图-OK.ppt_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

,C语言程序设计(A),郭 素梅 GUO Sumei,2019/8/4,(c) Guo S.,运算符,= (赋值) +,-,*,/,% 双目(算术) +,- 单目(自增减) +=,-=,*=,/=,%= 双目(复合) , =, =, =, != 双目(关系) &, | 双目(逻辑) ! 单目(逻辑) ?: 三目(条件),2019/8/4,(c) Guo S.,条件运算符 A?B:C,使用法: 表达式1?表达式2:表达式3 表达式1成立的话,其值为表达式2的值,否则为表达式3的值。 max = xy? x: y; 唯一的三目运算符,完全等价于: if(xy) max=x; else max = y;,2019/8/4,(c) Guo S.,认识条件运算符 A?B:C,X = X=0? (D0? printf(“两个实数解”): printf(“一个实数解”): printf(“无实数解”);,if(X0)x=-x; if(M)M=x; else M=y;,if(D=0) if(D0)printf(“两个实数解”); else printf(“一个实数解”); else printf(“无实数解”);,2019/8/4,(c) Guo S.,a,b,c,d四个数的最大值,m1 = ab? a:b; m2 = cb?c:d; max = m1m2?m1:m2;,if语句练习,键盘给定三个浮点数a,b和c,求最大值max,和最小值min,并输出 键盘输入一个整数m,作为月份。 当m大于12或小于1时,输出“输入错误”; 当m为3到5,输出“春天”; 6到8,输出“夏天”; 9到11,输出“秋天”; 12,1和2时,输出“冬天”,2019/8/4,(c) Guo S.,if语句练习,键盘给定三个浮点数a,b和c,将其按照a大于等于b,且b大于等于c的要求,排序后,输出。【思考:四位数如何做?】 键盘输入一个三位数的整数,判断是否为水仙花数,是则输出“1”,不是则输出“0”。输入的不是三位数,则输出“输入错误”。,2019/8/4,(c) Guo S.,if语句练习,键盘输入一个浮点数score,作为成绩。 当大于100或小于0,输出“输入错误”; 在0到100之间,将其转换为五级制,即90到100为“优秀”,80到89为“良好”,70到79为“中等”,60到69为“及格”,0到59为“不及格”。 算命先生,2019/8/4,(c) Guo S.,重要题,水仙花数;勾股数;对称数;闰年 公倍数&公约数、完数 倒序输出;图形输出; 计算面积(简单图形、函数) 级数 排序(数字、字符串); 统计(最大、最小、平均、方差),2019/8/4,(c) Guo S.,2019/8/4,(c) Guo S.,2019/8/4,(c) Guo S.,Switch语句:多分支,if语句是有两个分支。 Switch语句实现多分支:根据表达式的值进行选择,流程图,2019/8/4,(c) Guo S.,Switch语句:多分支,switch(表达式) case 常量1:语句1 case 常量2:语句2 . case 常量n:语句n default:语句n+1 ,格式为:,表达式的值=常量1,表达式的值=常量2,表达式的值=常量n,表达式的值没有匹配的常量,所有case仅是标记为程序执行的入口,不做判断。停止执行要用break,2019/8/4,(c) Guo S.,2 case 后的每个常量表达式必须各不相同。,1 括号内的表达式可以是 int ,char。,3 case 和 default的位置是任意的。,4 每一个case之后应有一个 以跳出 switch( ) 结构。,break(间断语句);,5 每个case 之后的执行语句可多于一个, 但不必加 。,6 允许几种case情况下执行相同的语句,不必每个都写case 。,注意事项,2019/8/4,(c) Guo S.,举例,用switch语句实现 输入100分制,输出对应五级制 输入月份,输出对应的季度,2019/8/4,15,2019/8/4,(c) Guo S.,例:输入年,月,计算该月有多少天?,main( ) int year,month,days; printf(“Enter year, monthn”); scanf(“%d,%d”,几个CASE 执行相同的 语句,跳出开关结构,处理大月,程序举例,关系到如何判闰年?,2019/8/4,(c) Guo S.,case 4: case 6: case 9: case 11: days=30 ; break; case 2: if (year%4=0) ,判断是否 为闰年,开关结 构结束,处理二月,程序举例 (续),处理小月,2019/8/4,(c) Guo S.,从键盘输入x,求y,并输出。 执行时要求:从键盘输入4次x的值,分别为x=1.0, x=-1.0,-1.0x0, 0=x1.0,2019/8/4,19,算法,算法解决“做什么?”和“怎么做?” 对解题过程准确而完整的描述称为解此问题的算法,因此不知道解题的算法也就不可能编写程序来解题。,程序 = 数据结构 + 算法,2019/8/4,20,算法,例如,求一个圆的周长 Len,并输出 就需要知道 半径 r 公式 Len 2r 程序涉及操作: 输入半径 r 计算周长 Len 输出周长 Len,按顺序执行命令,2019/8/4,21,算法,已知有30个学生,计算和打印“语文、数学及平均成绩”的算法。 算法设计:就需要得知每个学生的语文数学的成绩,然后计算平均,最后打印。 具体步骤为: 输入语文和数学成绩N1和N2 计算平均成绩 ave(N1+N2)/2; 打印N1,N2和ave 它涉及3个操作,执行将按1)3)顺序。 从第二个学生开始,重复1)3)步骤。,要控制重复30次!,2019/8/4,22,算法,再比如: 求三个整数(a, b, c)的 最大值mx,并输出 大流程: 数据输入 求mx 输出mx 得到mx的具体步骤为: 输入三个整数a,b,c 如果 a大于b且a大于c 的话,mx=a; 同样如果 b大于a且b大于c 的话,mx=b; 同样如果 b大于a且b大于c 的话,mx=b;,?,要判断、有条件的!,2019/8/4,23,算法,比如: 求3个整数的最大值mx,并输出 得到mx的具体步骤为: 输入三个整数a,b,c mx=a; 如果 mx大于b 的话,mx=b; 否则不变; 如果 mx大于c 的话,mx=c; 否则不变;,要判断、有条件的!,2019/8/4,24,算法,再比如: 求3个整数的最大值mx,并输出 得到mx的具体步骤为: 输入三个整数a,b,c 如果 a大于b 的话,mx=a; 否则 mx=b; 如果 mx大于c 的话,mx=c; 否则不变;,要判断、有条件的!,2019/8/4,25,算法,可以来源于: 求两个整数(a, b)的 最大值mx,并输出 得到mx的具体步骤为: 让mx等于第一个数,mx=a1。 mx和剩下的依次比较: 大的话,mx=依次比较的值 不大的话,mx不变,100个、N个,要控制重复99、N-1次! 比较!,2019/8/4,26,根本:按顺序执行命令,控制重复!,判断、条件!,对应C语言程序设计的三种结构!,2019/8/4,27,C语言程序例,题1:输出三个整数(123, 456, 789)的最大值m 可参考max2.c #include int main() int a,b,m; a = 123; b = 456; if( ab ) m = a; else m = b; printf(“max(a,b)=%d”,m); return 0; ,max3.c,2019/8/4,28,算法举例,如何求一个整数的阶乘?如何求最大公约数? 如何求三个、四个数的最大值、最小值? 如何利用泰勒展开计算sin,cos的值? 等等,如何设计一个算法?,2019/8/4,29,算法举例,给出利用下边的泰勒展开求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).,2019/8/4,30,算法举例 求分数列前20项的和sum,分数列: 2/1, 3/2, 5/3, 8/5, 13/8, 21/13. 分析算法: 数列 a/b 初值:a=2, b=1 循环变量:1,2,3.20 将用到的语句: sum = sum + a/b t=a; a=a+b; b=t;,2019/8/4,31,算法的特点,编写程序,必须学会设计算法。 有穷性:有限的操作步骤。指合理范围内的有穷性 确定性:每个步骤是确定的,而不是含糊、模棱两可的。其操作是唯一的。 有效性:能有效执行并得到确定的结果 有0个或以上的输入:执行算法时需要的外界的信息 有1个或以上的输出:执行算法得到的结果,2019/8/4,32,算法举例,如何求一个整数的阶乘? 5!= 1*2*3*4*5,p*i=2 赋给p,p*i=6 赋给p,方法-1,设变量p被乘数, i为乘数,p=1,i=2,i+1=3 赋给i,i+1=4 赋给i,p*i=24 赋给p,i+1=5 赋给i,p*i=120 赋给p,输出p,结束,2019/8/4,33,算法举例,p*i 赋给p,方法-2,设变量p被乘数, i为乘数,p=1,i=2,i+1 赋给i,若i不大于5,重复,若i大于5,输出p结束,试想:当要计算 100!,1000!时,如何求一个整数的阶乘? 5!= 1*2*3*4*5,显然,利用 循环处理和条件判断 方法-2比方法-1的 算法简练!,2019/8/4,34,算法举例,2019/8/4,35,算法的表示,算法的表示通常有: 程序流程图、N-S图和PAD图等方式。 例:用程序流程图表示方程的求实解算法,程序设计:工具(语言和流程图等),2019/8/4,36,算法的表示,流程图的基本符号,起、止框,输入、输出框,判断框,处理框,流程控制线,2019/8/4,37,算法的表示,流程图的基本结构: 顺序结构 选择结构 循环结构,处理 = 处理模块或者语句的集合,顺序结构按照顺序执行。 程序的走向是固定的。,2019/8/4,38,算法的表示,流程图的基本结构: 顺序结构 选择结构 循环结构,处理 = 处理模块或者语句的集合,选择结构也叫分支结构。 必须包含判断。根据条件选择要执行的语句。,2019/8/4,39,算法的表示,流程图的基本结构: 顺序结构 选择结构 循环结构 (“当”型),处理 = 处理模块或者语句的集合,循环结构也叫重复结构。 反复执行一部分操作。 分为:当型和直到型,2019/8/4,40,算法的表示,流程图的基本结构: 顺序结构 选择结构 循环结构 (“直到”型),处理 = 处理模块或者语句的集合,循环结构也叫重复结构。 反复执行一部分操作。 分为:当型和直到型,2019/8/4,41,基本结构的特点,3种基本结构: 顺序结构 选择结构 循环结构,特点: 一个入口,一个出口 每个处理都有机会被执行到 不存在“死循环”,2019/8/4,42,结构化,满足以上基本结构特点的算法结构,就可以叫基本结构。 由3种基本结构组成的算法结构,可以解决任何复杂的问题,由基本结构组成的算法,是结构化的算法。,2019/8/4,43,算法设计举例,例:用程序流程图表示方程的求实解算法。没有实解打印“没有实解” 具体步骤为: 输入系数a,b和c b*b-4ac=0 有实解 计算实解 打印结果 否则,打印“没有实解” 它涉及两部分处理,执行将按1)2)顺序。1)内有包含两部分处理,计算和打印,2019/8/4,44,算法设计举例,开始,计算s=b*b-4ac,结束,输入系数a,b,c,输出”没有实解”,s=0,输出实根x1和x2,x1=(-b+sqrt(s)/2a x2=(-b-sqrt(s)/2a,Yes,No,2019/8/4,45,算法设计举例,计算和打印“语文数学及平均成绩”的算法。 设计的算法就需要得知语文数学的成绩,然后计算平均,最后打印。 具体步骤为: 输入语文和数学成绩N1和N2 计算平均成绩Av(N1+N2)/2 打印N1,N2和Av 它涉及3个操作,执行将按1)3)顺序,2019/8/4,46,算法设计举例,ave2.c,开始,计算平均Av=(a+b)/2,结束,输入成绩N1,N2,输出成绩N1,N2和Av,2019/8/4,47,算法设计举例,#include int main() / main函数 double N1, N2, Av; / 定义变量 printf(“请输入语文, 数学成绩n“); scanf(“%lf, %lf“, ,ave2.c,scanf(“%lf%lf“, ,2019/8/4,48,练习:,c2f.c,摄氏和华氏温度变换公式: F=9/5*C+32 要求 输出c=0,10,20,100 对应的摄氏温度f c f 0 32.0 10 41.0,框图 程序,2019/8/4,49,练习:,sin的近似计算: 要求 追加项的绝对值小于0.00005,框图 程序,2019/8/4,50,2019/8/4,51,结构化程序的设计方法,基本结构: 顺序结构 选择结构 循环结构,结构化程序: 用顺序、选择和循环三种基本结构的组合来设计程序。 也就是说用计算机语言表示的结构化算法。,2019/8/4,52,算法,算法 算法举例 算法的特性 算法的表示 结构化程序的设计方法,2019/8/4,53,算法 小结,本章是计算机程序设计和算法的基础,学习时要重点理解和掌握的是计算机算法的表示方法。 作为一个程序设计人员,应该熟悉并掌握比较常用的程序流程图描述方法,最终需要使用计算机语言,即程序设计语言描述并实现。 本章通过算法举例以训练引导学生用计算机的思维表达解决问题的过程,以最终实现算法,这就是程序设计算法的根本。,2019/8/4,54,作业,P15 第5题 编程:将两个整数a和b分别初始化为123和456,交换其值后输出a和b。,2019/8/4,55,联系,郭 素梅(GUO Sumei) Phone: 0756-362-2865 Office: HA206/205 Email: cnjpguoaulive.jp Chat: MSN(常用) cnjpguoaulive.jp QQ(不常用) 1395092737,2019/8/4,56,计算机构成,计算机本体 控制装置 演算装置 主存储装置,输入装置 输出装置,CPU,中央处理装置 Central Processing Unit,辅存储装置: 硬盘,CD-ROM等,补充,2019/8/4,57,进制,24进制: 一天24小时 60进制: 一小时60分 一分60秒,10进制以外:,补充,2019/8/4,58,进制,8进制: 数字0到7表示 10进制:数字0到9表示 16进制:数字0到9, 字母A到F表示,2进制是基础: 数字0和1表示,补充,2019/8/4,59,进制,N进制到 10进制: a b c,补充,N进制的指数位,2019/8/4,60,进制,二进制到十进制的换算: 1 0 1 0,二进制是基础: 数字0和1表示,二进制2的指数位,补充,2019/8/4,61,进制,二进制到十进制的换算: 0 1 0 0 1 0 1 0,补充,2019/8/4,62,进制,八进制到十进制: 1 2 3,八进制8的指数位,补充,2019/8/4,63,进制,十六进制到十进制: 1 2 3,十六制16的指数位,补充,2019/8/4,64,进制,十六进制到十进制: A 1 F,补充,2019/8/4,65,进制,十进制到 N 进制: 1 2 3,x位:mod(i/pow(N,x),N) C语言实现:n2 n1 n0 0位:i = i/N ; n0 = i%N; 1位:i = i/N ; n1 = i%N; 2位:i = i/N ; n2 = i%N;,2,补充,0,1,2019/8/4,66,进制,十进制到 16 进制: 1 2 3

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论