4选择型程序设计jwx

上传人:m**** 文档编号:567626799 上传时间:2024-07-21 格式:PPT 页数:46 大小:430.52KB
返回 下载 相关 举报
4选择型程序设计jwx_第1页
第1页 / 共46页
4选择型程序设计jwx_第2页
第2页 / 共46页
4选择型程序设计jwx_第3页
第3页 / 共46页
4选择型程序设计jwx_第4页
第4页 / 共46页
4选择型程序设计jwx_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《4选择型程序设计jwx》由会员分享,可在线阅读,更多相关《4选择型程序设计jwx(46页珍藏版)》请在金锄头文库上搜索。

1、( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计第 4 章 选择型程序设计1( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计4.1 4.1 算法和算法的表示算法和算法的表示解决问题确定的方法确定的方法和有限的步骤有限的步骤“一个算法,就是一个有穷规则的集合,其中之规则规定了一个解决某一特定类型的问题的运算序列。”对同一个问题,可有不同的解题方法和步骤算法决定了程序的质量例: 求2( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计算法的要素算法的要素两要素两要素: 基本功能操作基本功能操作

2、+ + 控制结构控制结构算术运算: 逻辑运算:与 或 非数据比较: 等于 不等于数据传送:输入 输出 赋值顺序结构顺序结构功能操作功能操作控制结构控制结构分支结构分支结构 循环结构循环结构 3( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计算法的基本特征算法的基本特征算法算法对处理问题的过程的描述算法的基本特征算法的基本特征有穷性确定性有效性有零个或多个输入有一个或多个输出数据结构数据结构对这个过程中所涉及的数据的描述4( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计例:例:有黑和蓝两个墨水瓶,但却错把黑墨水装有黑和蓝两个

3、墨水瓶,但却错把黑墨水装有黑和蓝两个墨水瓶,但却错把黑墨水装有黑和蓝两个墨水瓶,但却错把黑墨水装在了蓝墨水瓶子里,而蓝墨水错装在了黑墨水在了蓝墨水瓶子里,而蓝墨水错装在了黑墨水在了蓝墨水瓶子里,而蓝墨水错装在了黑墨水在了蓝墨水瓶子里,而蓝墨水错装在了黑墨水瓶子里,要求将其互换。瓶子里,要求将其互换。瓶子里,要求将其互换。瓶子里,要求将其互换。算法分析:l非数值运算问题l因为两个瓶子的墨水不能直接交换l解决这一问题的关键:l引入第三个墨水瓶。l设第三个墨水瓶为红色,其交换步骤:算法举例算法举例5( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计 将黑瓶中的将黑瓶

4、中的蓝蓝墨水装入墨水装入红红瓶中瓶中 将蓝瓶中的将蓝瓶中的黑黑墨水装入黑瓶中墨水装入黑瓶中 将将红红瓶中的蓝墨水装入蓝瓶中瓶中的蓝墨水装入蓝瓶中 交换结束交换结束6( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计算法的表示算法的表示可用不同的方法表示算法,常用的有:自然语言传统流程图结构化流程图伪代码PAD图7( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计例例4-24-2:计算函数计算函数M(xM(x) )的值。函数的值。函数M(xM(x) )为:为:算法分析:这是一个数值运算问题。其中M代表要计算的函数值,有两个不同的

5、表达式,根据x的取值决定采用哪一个算式。根据计算机具有逻辑判断的基本功能,用计算机解题的算法如下:axaxcxcaabxxM+-+=22)()(用自然语言描述的算法用自然语言描述的算法8( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计 将a、b、c和x的值输入到计算机; 判断xa?如果条件成立,执行第步,否则执行第步; 按表达式bx+a2计算出结果存放到M中,然后执行第步; 按表达式a(c-x)+c2计算出结果存放到M中,然后执行第步; 输出M的值; 算法结束。9( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计用流程图表示

6、算法用流程图表示算法美国国家标准化协会 ANSI(American National Standard Institute) 规定了一些常用的流程图符号起止框起止框判断框判断框处理框处理框输入输入/输出框输出框注释框注释框流向线流向线连接点连接点10( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计用流程图表示算法用流程图表示算法输入输入a,ba,ba-ca-cb-ab-ac-bc-b开始开始输出输出a,ba,b结束结束例例 两数交换两数交换11( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计结构化程序设计方法结构化程序设计

7、方法 程序设计的基本目标基本目标是用算法对问题的用算法对问题的原始数据进行处理,从而获得所期望的效原始数据进行处理,从而获得所期望的效果果。但这仅仅是程序设计的基本要求基本要求。要全面提高程序的质量,提高编程效率,使程序具有良好的可读性可读性、可靠性可靠性、可维护可维护性性以及良好的结构良好的结构,编制出好的程序来。12( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计程序的三种基本结构程序的三种基本结构顺序结构顺序结构l特点:特点:l一个入口,一个出口一个入口,一个出口l顺序执行顺序执行S1S2ab13( C C语言程序设计)语言程序设计) 第第 4 章章

8、选择型程序设计选择型程序设计程序的三种基本结构程序的三种基本结构选择结构选择结构功能:功能:判断条件为真时执行判断条件为真时执行语句,否则跳过语句,否则跳过 条件条件 语句句1 语句句2YN双选择双选择 语句句N条件条件Y单选择单选择语句句N条件条件Y功能:功能:判断条件为真时执行语判断条件为真时执行语句句1,否则执行语句,否则执行语句214( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计程序的三种基本结构程序的三种基本结构循环结构循环结构循环体循环体N条件条件Y当型循环当型循环直到型循环直到型循环条件条件NY循环体循环体15( C C语言程序设计)语言程序

9、设计) 第第 4 章章 选择型程序设计选择型程序设计例: 将求5!的算法用三种基本结构表示如果需要将最后结果打印出来,可在菱形框的下面加一个输出框。 t=1开始t2tt3tt4tt5t输出t结束16( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计三种基本结构的共同特点三种基本结构的共同特点(1)只有一个入口; (2)只有一个出口;(3)结构内的每一部分都有机会被执行到;(4)结构内不存在“死循环”(无终止的循环)。17( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计结构化程序设计方法结构化程序设计方法结构化程序设计方法是公

10、认的面向过程编程应遵循的基本方法和原则。结构化程序设计方法主要包括:以三种基本的程序控制结构的组合来编制程序,从而使程序具有良好的结构;程序设计自顶而下;用结构化程序设计流程图表示算法。18( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计4.2 4.2 C C语言的语句语言的语句语句是组成语句是组成C C源程序的基本单位源程序的基本单位) )C C语语句句指令语句指令语句非指令语句非指令语句流程控制语句流程控制语句表达式语句表达式语句数据定义语句数据定义语句(int a;)编译预处理编译预处理宏定义宏定义(#define)文件包含文件包含(#include)

11、条件编译条件编译(#ifdef #else #endif)赋值语句赋值语句( i = 1; )函数调用语句函数调用语句( putchar(c); )逗号语句逗号语句( +a, +b; )空语句空语句( ; )判断语句判断语句( if, switch )循环语句循环语句( for, while, dowhile )转移控制语句转移控制语句(break; continue, return; goto)复合语句复合语句(由一对花括号括起来的一组语句(由一对花括号括起来的一组语句,如如: int a; a = 1; printf(“%d”, a); )19( C C语言程序设计)语言程序设计) 第第

12、4 章章 选择型程序设计选择型程序设计形式二:u格式: if (expression) 语句组语句组1; else 语句组语句组2;u执行过程:if语句的三种形式形式一:u格式: if (expression) 语句组语句组1;u执行过程:exprstatement非0=0例:if (xy) printf(“%d”,x);exprstatement1statement2非0=0例:if (xy) max=x;else max=y;(1)if语句中的“表达式”必须用“(”和“)”括起来。(2)else子句是if语句的一部分,必须与if配对使用,不能单独使用。(3)当if和else下面的语句组,仅

13、由一条语句构成时,也可不使用复合语句形式(即去掉花括号)。例:if (xy) printf(“最大值为:”); printf(“%dn”,x); else printf(“最大值为:”); printf(“%dn”,y); 4.3 if 语句20( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计#include main() int x,y; printf(Enter an integer:); scanf(%d,&x); y=x; if(yabsolute value:%dn,x,y);例4-7 求一个数的绝对值运行:Enter an integer:-12

14、 integer:-12-absolute value :12运行:Enter an integer:12 integer:12-absolute value :1221( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计#include main() int a,b; printf(Enter integer a:); scanf(%d,&a); printf(Enter integer b:); scanf(%d,&b); if(a=b) printf(a=bn); else printf(a!=bn);例 2 输入两个整数并判断两数相等否运行:Enter

15、integer a:12 Enter integer b:12 a=b 运行:Enter integer a:12 Enter integer b:9 a!=b 22( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计expr1statemnt1非0=0expr2expr3statemntnstatemnt3statemnt2非0非0=0=0(1 1)ifif语句允许嵌套:语句允许嵌套: 所谓所谓ifif语句的嵌套是指,在语句的嵌套是指,在“语句组语句组1”1”或或 “ “语句组语句组2”2”中又包含有中又包含有ifif语句的情况。语句的情况。(2 2)ifif

16、语句嵌套时,语句嵌套时,elseelse子句与子句与ifif的的 匹配原则匹配原则:与在它上面、距它最近、且尚未匹配的:与在它上面、距它最近、且尚未匹配的ifif配对。书写时注意形成层次;配对。书写时注意形成层次;(3 3)为明确匹配关系,避免匹配错误,)为明确匹配关系,避免匹配错误, 强烈建议强烈建议:将内嵌的:将内嵌的ifif语句,一律用花括号括起来。语句,一律用花括号括起来。形式三:u格式: if (expr1) 语句组语句组1; else if( expr2) 语句组语句组2; else if( expr3) 语句组语句组3; else 语句组语句组n; u 执行过程:23( C C语

17、言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计else总是和它上面离它最近的未配对的if配对if()if()if()else.else.else.例:例:if (salary1000) index=0.4; else if (salary800) index=0.3; else if (salary600) index=0.2; else if (salary400) index=0.1; else index=0; if else 配对原则例:例:if (salary1000) index=0.4; else if (salary800) index=0.3; el

18、se if (salary600) index=0.2; else if (salary400) index=0.1; else index=0; 24( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计例:例: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”);修改:修改: if (a=b) if(b=c) printf(“a=b=c”); else printf(“a!=b”);实现if else 正确配对方法:加 输入a=1, b=1, c=3结果输出为: a!=b25( C C语言程序设计)语言程

19、序设计) 第第 4 章章 选择型程序设计选择型程序设计如:如:if(a=b&x=y) printf(“a=b,x=y”); if(3) printf(“OK”); if(a) printf(“%d”,a); 说明:u if后面的表达式类型任意u if . else相匹配例 考虑下面程序的输出结果: #include main() int x,y; scanf(“%d,%d”,&x,&y); if(xy) x=y; y=x; else x+; y+; printf(“%d,%dn”,x,y);Compile Error!例例 考虑下面程序的输出结果考虑下面程序的输出结果: #include ma

20、in() int x,y; scanf(“%d,%d”,&x,&y); if(xy) x=y; y=x; else x+; y+; printf(“%d,%dn”,x,y);26( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计if语句嵌套:l一般形式:if (expr1) if (expr2) statement1 else statement2else if(expr3) statement3 else statement4内嵌if内嵌ifif (expr1) if (expr2) statement1 else statement2内嵌ifif (exp

21、r1) if (expr2) statement1else statement3 内嵌ifif (expr1) statement1else if(expr3) statement3 else statement4else中内嵌if27( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计#include main() char c; printf(Enter a character:); c = getchar(); if(c = 0 & c = A & c = a & c = z) printf(The character is a lower lettern

22、); else printf(The character is other charactern);例例4-8 判断输入字符种类判断输入字符种类运行:Enter a character: The character is a control character运行:Enter a character:8 The character is a digit运行: Enter a character: D The character is a capital letter运行: Enter a character: h The character is a lower letter运行: Enter

23、 a character:F1 The character is other character28( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计例例4-9 考虑下面程序输出结果考虑下面程序输出结果: main() int x = 100, a= 10, b = 20; int v1 = 5, v2 = 0; if(a b) if(b != 15) if(!v1) x = 1; else if(v2) x = 10; x = -1; printf(“%d”,x); 结果:-1x = -1;29( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程

24、序设计选择型程序设计 例例4-10 4-10 闰年判断算法闰年判断算法/*/*功能:说明功能:说明ifif语句的嵌套格式和用法。语句的嵌套格式和用法。* */ /#include void main() int year,leap; printf(Please input the year:); scanf(%d,&year); if (year % 4!=0) leap=0; else if (year % 100 != 0) leap=1; else if (year%400!=0) leap=0; else leap=1; if (leap) printf(%d is a leap ye

25、ar.n,year); else printf(%d is not a leap year.n,year);输入yy不能被100整除TFy能被400整除TFleap=0leap=0leap=1leap=1TFy不能被4整除leap=0=1不是闰年是闰年30( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计利用逻辑运算能描述复杂条件的特点,可将上述程序优化如下:利用逻辑运算能描述复杂条件的特点,可将上述程序优化如下:include void main() int year; printf(Please input the year:); scanf(%d,&ye

26、ar); if ( year % 4 = 0 & year % 100 != 0 ) | ( year % 400 = 0 ) printf(%d is a leap year.n,year); else printf(%d is not a leap year.n,year);31( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计课堂练习11阅读下列程序,回答问题:阅读下列程序,回答问题:#include void main() int a,b,m,n; scanf(“%d, %d”,&a, &b); m=1; n=1; if (a0) m=m+n; if

27、(ab) n=2 * m; else if (a=b) n=5; else n=m+1; printf(“m=%d, n=%dn”, m,n);问:(1)当输入为:1,2时,程序的运行结果是什么?(2)当输入为:1,0时,程序的运行结果是什么?答:(1)当输入为:1,2时,m=1 n=2(2)当输入为:1,0时,m=2 n=332( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计switch( 表达式) case E1: 语句组 1; case E2: 语句组 2; . case En: 语句组 n; default: 语句组 ; v执行过程:switch表达

28、式语句组1 语句组2语句组n 语句组.E 1E 2Endefaultcase switch( 表达式) case E1: 语句组 1; break; case E2: 语句组 2; break; . case En: 语句组 n; break; default: 语句组 ; break; 4.4 switch语句33( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计v说明:lE1,E2,En是常量表达式,且值必须互不相同lcase后可包含多个可执行语句,且不必加 l多个case可共用一组执行语句l语句标号作用,必须用break跳出l如果无break,找到入口后

29、,将继续执行下去,不再进行判断;如: case A: case B: case C: printf(“score60n”); break; .如:如: case A: printf(“score90n”); printf(“good!n”); case B: case C: printf(“score60n”); .34( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计例例4-11 switch(score) case 5: printf(“Very good!”); case 4: printf(“Good!”); case 3: printf(“Pass!

30、”); case 2: printf(“Fail!”); default : printf(“data error!”); 运行结果:score为5时,输出: Very good! Good! Pass! Fail! data error!例例4-11 switch(score) case 5: printf(“Very good!”); break; case 4: printf(“Good!”); break; case 3: printf(“Pass!”); break; case 2: printf(“Fail!”); break; default : printf(“data err

31、or!”); 运行结果:运行结果:score为为5时,输出:时,输出: Very good! 35( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计例4-12 void main() int x=1,y=0,a=0,b=0; switch(x) case 1: switch(y) case 0: a+; break; case 1: b+; break; case 2: a+;b+; break; case 3: a+;b+; printf(“na=%d,b=%d”,a,b); 运行结果:a=2,b=136( C C语言程序设计)语言程序设计) 第第 4 章章

32、 选择型程序设计选择型程序设计案例案例4.4.1 求一元二次方程求一元二次方程ax2+bx+c=0的解(的解(a0)。)。/*功能:求一元二次方程的解。功能:求一元二次方程的解。*/#include math.hmain() float a,b,c,disc,x1,x2,p,q; scanf(“%f,%f,%f”, &a, &b, &c); disc=b*b-4*a*c; if (fabs(disc)1e-6) x1=(-b+sqrt(disc)/(2*a);/*求出两个不相等的实根求出两个不相等的实根*/ x2=(-b-sqrt(disc)/(2*a); printf(x1=%7.2f,x2

33、=%7.2fn, x1, x2); 浮点数=1e-6,就认为近似=04.4 选择型程序设计举例37( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计 else p=-b/(2*a);/*求出两个共轭复根求出两个共轭复根*/ q=sqrt(fabs(disc)/(2*a); printf(“x1=%7.2f + %7.2f i n“, p, q);/*输出两个共轭复输出两个共轭复根根*/ printf(”x2=%7.2f - %7.2f i n“, p, q); 虚数输出:虚数输出:p+q i p-q i ,其中这个,其中这个i是个虚数代表符号,要是个虚数代表符

34、号,要原样输出,例如:原样输出,例如:2+3i, 2-3i 说明说明:由于实数在计算机中存储时,经常会有一些微小误差,所由于实数在计算机中存储时,经常会有一些微小误差,所以本案例判断以本案例判断discdisc是否为是否为0 0的方法是:的方法是:判断判断discdisc的绝对值是否小于的绝对值是否小于一个很小的数(例如一个很小的数(例如1010-6-6)。38( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计案例案例4.4.2 从键盘上输入一个百分制成绩从键盘上输入一个百分制成绩score,按下列原则输出其等级:,按下列原则输出其等级:score90,等级为

35、,等级为A;80score90,等级为,等级为B;70score80,等级为,等级为C;60score70,等级为,等级为D;score60,等级为,等级为E。main() int score, grade; printf(“Input a score(0100): ”); scanf(“%d”, &score); grade = score/10; /*将成绩整除将成绩整除10,转化成,转化成switch语句中的语句中的case标号标号*/ switch (grade) case 10: case 9: printf(“grade=An”); break;目的:考察数值的十位数是多少?39(

36、 C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计 case 8: printf(grade=Bn); break; case 7: printf(grade=Cn); break; case 6: printf(grade=Dn); break; case 5: case 4: case 3: case 2: case 1: case 0: printf(“grade=En”); break; default: printf(“The score is out of range!n”);程序运行情况如下:程序运行情况如下:Input a score(0100)

37、: 85 grade=B40( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计良好的源程序书写风格良好的源程序书写风格注释注释必要的注释,可有效地提高程序的可读性,从而提高程序的可维护性。在语言源程序中,注释可分为三种情况:(1)在函数体内对语句的注释;(2)在函数之前对函数的注释;(3)在源程序文件开始处,对整个程序的总体说明。函数体内的语句,是由顺序结构、选择结构和循环结构等三种基本结构构成的。在什么地方加以注释的原则是:如果不加注释,理解起来就会有困难,或者虽无困难、但费时间。 (1)顺序结构在每个顺序程序段(由若干条语句构成)之前,用注释说明其功能。除

38、很复杂的处理外,一般没有必要每条语句都加以注释。41( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计 (2)选择结构 在C语言中,选择结构是由if语句和switch语句来实现的。一般地说,要在前面说明其作用,在每个分支条件语句行的后面,说明该分支的含义,如下所示: 1)if语句 /*(说明功能)*/ if(条件表达式)/*条件成立时的含义*/ else/*入口条件含义*/ 42( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计2 2)switch语句语句 /*(说明功能)(说明功能) */ switch(表达式表达式) ca

39、se 常量表达式常量表达式1: /*该入口值的含义该入口值的含义*/ 语句组;语句组;break; case 常量表达式常量表达式n: /*该入口值的含义该入口值的含义*/ 语句组;语句组;break; default: /*该入口值的含义该入口值的含义*/ 语句组;语句组; break; 如果条件成立时(或入口值)的含义,已经很明确了,也可不如果条件成立时(或入口值)的含义,已经很明确了,也可不再加以注释。再加以注释。43( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计课堂练习根据给出的年份和月份判断天数,并输出。例如:2003年9月多少天?44( C C

40、语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计 #include void main() int y, m, d; printf(please input a year and a month:); scanf(“%d,%d ”,&y, &m); if (m=1|m=3|m=5|m=7|m=8|m=10|m=12) d=31; else if (m=4|m=6|m=9|m=11) d=30; else if (m=2) if (y%4=0&y%100!=0|y%400=0) d=29; else d=28; else d=-1; if (d=-1) printf(error the month); else printf(%d year %d month %d day,y,m,d);45( C C语言程序设计)语言程序设计) 第第 4 章章 选择型程序设计选择型程序设计作业P738, 15, 1846

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 医学/心理学 > 基础医学

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号