4选择结构中小学堂

上传人:re****.1 文档编号:576985852 上传时间:2024-08-20 格式:PPT 页数:63 大小:2.32MB
返回 下载 相关 举报
4选择结构中小学堂_第1页
第1页 / 共63页
4选择结构中小学堂_第2页
第2页 / 共63页
4选择结构中小学堂_第3页
第3页 / 共63页
4选择结构中小学堂_第4页
第4页 / 共63页
4选择结构中小学堂_第5页
第5页 / 共63页
点击查看更多>>
资源描述

《4选择结构中小学堂》由会员分享,可在线阅读,更多相关《4选择结构中小学堂(63页珍藏版)》请在金锄头文库上搜索。

1、 http:/ http:/ 本章要点本章要点2课堂特制 http:/ =算法算法+ +数据结构数据结构灵灵魂魂加工对象加工对象4.1 关于算法 3课堂特制 http:/ 关于算法 4.1.1 算法的概念 广义地说,为解决一个问题而采取的方广义地说,为解决一个问题而采取的方法和步骤,就称为法和步骤,就称为“算法算法”。4课堂特制 http:/ 加加99次次方法方法2:100+(1+99)+(2+98)+(49 +51)+50 = 100 + 49100 +50 加加51次次对同一个问题,可有不同的解题方法和步骤对同一个问题,可有不同的解题方法和步骤例4.1: 求5课堂特制 http:/ 0n即

2、为最大公约数经典算法举例经典算法举例: :6课堂特制 http:/ 4.1.2 算法 的描述方法可以用不同的方法表示算法,常用的有:可以用不同的方法表示算法,常用的有:自然语言自然语言传统流程图传统流程图结构化流程图结构化流程图伪代码伪代码PADPAD图图传统流程图传统流程图结构化流程图结构化流程图7课堂特制 http:/ 用流程图表示算法美国国家标准化协会美国国家标准化协会ANSI(American National Standard ANSI(American National Standard Institute)Institute)规定了一些常用的流程图符号:规定了一些常用的流程图符号

3、:起止框起止框判断框判断框处理框处理框输入输入/输出框输出框注释框注释框流向线流向线连接点连接点8课堂特制 http:/ 顺序结构顺序结构选择结构选择结构循环结构循环结构(while型型) 9课堂特制 http:/ n=r,r=m%n是是输出最大公约数输出最大公约数n结束结束用流程图表示算法要比用文字描述算法逻辑清晰、易于理解。 10课堂特制 http:/ 1973 1973年美国学者年美国学者I.NassiI.Nassi和和B.ShneidermanB.Shneiderman提出了一种新的提出了一种新的流程图形式。在这种流程图中,完全去掉了带箭头的流程流程图形式。在这种流程图中,完全去掉了带

4、箭头的流程线。全部算法写在一个矩形框内,在该框内还可以包含其线。全部算法写在一个矩形框内,在该框内还可以包含其它的从属于它的框,或者说,由一些基本的框组成一个大它的从属于它的框,或者说,由一些基本的框组成一个大的框。这种流程图又称的框。这种流程图又称N-SN-S结构化流程图结构化流程图 。11课堂特制 http:/ N-SN-S流程图用以下的流程图符号:流程图用以下的流程图符号: (1)顺序结构顺序结构 (2)选择结构选择结构(3)循环结构循环结构12课堂特制 http:/ n=r,r=m%n是是输出最大公约数输出最大公约数n输入两个数输入两个数m,n求余数求余数r=m%n当当r!=0m=nn

5、=rr=m%n输出最大公约数输出最大公约数n13课堂特制 http:/ 条件判断条件判断4.2.1 关系运算和关系表达式关系运算和关系表达式操作数操作数关系运算符关系运算符关系表达式的关系表达式的计算结果计算结果 = = 逻辑值(真或假)逻辑值(真或假)在在C C语言中,语言中,“0 0”表示表示“假假”,“1 1”表示表示“真真”操作数操作数关系运算符用于测试两个操作数或两个表达式关系运算符用于测试两个操作数或两个表达式之间的关系,之间的关系,其中操作数可以是变量、常量或其中操作数可以是变量、常量或表达式表达式。14课堂特制 http:/ 条件判断条件判断4.2.1 关系运算和关系表达式关系

6、运算和关系表达式关系运算符关系运算符操作数操作数1 1操作数操作数2 2关系运算符关系运算符15课堂特制 http:/ (1)在关系运算符中:)在关系运算符中:,=, ,num2的值的值 (2)(num1num2)!=num3的值的值 (3)num1num2num3的值的值 思考题:任意改变思考题:任意改变num1或或num2的值,会影响整个表的值,会影响整个表达式的值吗?达式的值吗? (4)(num1num2)+num3 再次强调:再次强调:C语言用整数语言用整数“1”表示表示“逻辑真逻辑真”,用整,用整数数“0”表示表示“逻辑假逻辑假”。所以,关系表达式的值还可。所以,关系表达式的值还可以

7、参与其它种类的运算,例如算术运算、逻辑运算等。以参与其它种类的运算,例如算术运算、逻辑运算等。17课堂特制 http:/ 条件判断条件判断4.2.2 逻辑运算符和逻辑表达式逻辑运算符和逻辑表达式运算运算运算符运算符表达式表达式逻辑“与与”&operand1 & operand2逻辑“或或”|operand1 | operand2逻辑“非非”!operand1 逻辑运算符用于连接一个或多个条件,判断这些逻辑运算符用于连接一个或多个条件,判断这些条件是否成立条件是否成立逻辑运算符的类型为:逻辑运算符的类型为:18课堂特制 http:/ 逻辑“与”运算符 &所有学科及格考勤率达到 75%留级留级留级

8、升级YesNoNoNoNoYesYesYes19课堂特制 http:/ 1 1表达式表达式 2 2结果结果000010100111逻辑“与”运算符 &所有学科及格考勤率达到 75%留级留级NoNo升级YesYes留级NoYes留级留级NoYes20课堂特制 http:/ |无法支付可支付可支付可支付YesNoNoNoNoYesYesYes购物帐单信用卡21课堂特制 http:/ |表达式 1表达式 2结果000011101111无法支付NoNo可支付NoYes可支付NoYes可支付YesYes22课堂特制 http:/ !不带伞带伞NoYes天气 NOT 阴天23课堂特制 http:/ !表达

9、式结果1001天气 NOT 阴天真真假带伞操作不带伞24课堂特制 http:/ 75%&天气天气 NOT 阴天阴天只有当两个两个条件都为真真时才执行操作只要任何任何一个条件为真真时就执行操作对原条件取反取反,即:如果原条件为假时就执行操作|!25课堂特制 http:/ .即:即:!(非)!(非) &(与)(与) |(或)(或)(2)与其它种类运算符的优先关系)与其它种类运算符的优先关系 ! 算术运算符算术运算符 关系运算符关系运算符 & | 赋值运算符赋值运算符 逗号运算符逗号运算符例例 a=x & xb&xy a=b|x=y !a|ab/ (a=x) & (xb)&(xy)/(a=b)|(x

10、=y)/(!a)|(ab)26课堂特制 http:/ !num的值的值 num=1 num31的值的值C C语言中语言中, ,运算量运算量: : 0 0表示表示“假假”, 非非0 0表示表示“真真”, , 运算结果运算结果: : 0 0表示表示“假假”, 1 1表示表示“真真”, ,逻辑运算符01127课堂特制 http:/ 说明说明短路特性短路特性逻辑运算符28课堂特制 http:/ a&b&c /只在只在a为真时,才判别为真时,才判别b的值;的值; 只在只在a、b都为真时,才判别都为真时,才判别 c的值的值例例 a|b|c /只在只在a为假时,才判别为假时,才判别b的值;的值; 只在只在a

11、、b都为假时,才判别都为假时,才判别 c的值的值例例 a=1;b=2;c=3;d=4;m=1;n=1; (m=ab)&(n=cd)/结果结果m=0,n=1例如例如:执行以下语句后,执行以下语句后,x,y,z的值分别为()的值分别为() int x=0,y=0,z=0; +x|+y&+z; 逻辑运算符29课堂特制 http:/ 用用if语句实现选择结构语句实现选择结构4.3.1 if语句的语句的3种形式种形式 用用if语句可以构成分支结构。它对给定的条件进语句可以构成分支结构。它对给定的条件进行判断,根据判断的结果(真或假)来决定执行某行判断,根据判断的结果(真或假)来决定执行某个分支程序段。个

12、分支程序段。n1. 单选择单选择:v格式:格式:if (expression) statementv执行过程:执行过程:表达式表达式真真假假语句语句例:例: if(xy) printf(“%d”, x);30课堂特制 http:/ include main() int num1, num2, sum; printf(n请输入两个数:); scanf(%d %d, &num1,&num2); sum = num1+ num2 ; if(sum 100) printf(n两数的和大于 100 n );简单简单if语句的示例语句的示例内存内存num1num2sum5678134请输入两个数:56 7

13、8两数的和大于 1004.3 用用if语句实现选择结构语句实现选择结构31课堂特制 http:/ 双选双选:v格式格式:if (expression) statement1 else statement2v执行过程:执行过程:例:例:if (xy) printf(%d,x); else printf(%d,y);表达式表达式真真假假语句语句1语句语句24.3 用用if语句实现选择结构语句实现选择结构32课堂特制 http:/ 用用if语句实现选择结构语句实现选择结构修改上例# include main() int num1, num2, sum; printf(n请输入两个数:); scanf

14、(%d %d, &num1,&num2); sum = num1+ num2 ; if(sum 100) printf(n两数的和大于 100 n ); else printf(“n两数的和小于100n”);33课堂特制 http:/ main()int num;printf(n请输入一个整数:); scanf (%d,&num);if(num % 2) = 0)printf(%d 是一个偶数。n,num); elseprintf(%d 是一个奇数。n,num);if-else语句的示例语句的示例内存内存num57请输入一个整数:5757 是一个奇数。4.3 用用if语句实现选择结构语句实现选

15、择结构34课堂特制 http:/ 判定给定的年份是否为闰年。判定给定的年份是否为闰年。提示:闰年的判定规则为:能被提示:闰年的判定规则为:能被 4 整除但不能被整除但不能被 100 整除的整除的年份,或能被年份,或能被 400 整除的年份。整除的年份。 #include main() int year; printf(n 请输入年份:); scanf(%d,&year); if(year % 4 =0 & year % 100 != 0) | (year % 400 = 0) printf(n %d 年是闰年 n , year); else printf(n %d 年不是闰年 n , year

16、);请输入年份:20052005 年不是闰年4.3 用用if语句实现选择结构语句实现选择结构35课堂特制 http:/ #include main()long ge,shi,qian,wan,x;printf(n 请输入一个五位整数:);scanf(%ld,&x);wan=x/10000; /分解出万位数qian=x%10000/1000; /分解出千位数shi=x%100/10; /分解出十位数ge=x%10; /分解出个位数if (ge=wan & shi=qian) /*个位等于万位并且十位等于千位*/printf(n 这个数是回文数n);elseprintf(n 这个数不是回文数n);

17、输出:请输入一个五位整数:45654这个数是回文数4.3 用用if语句实现选择结构语句实现选择结构36课堂特制 http:/ printf(“a=b,x=y”); int x=3,y; if (x=5) y=3; if(3) printf(“OK”); if(a) printf(“%d”,a); l说明:uif后面的表达式类型任意uif(x) if(x!=0) if(!x) if(x=0)uif和else后面只含一个语句,也可以是复合语句(用括起来)uelse不能作为语句单独,它必须与if配对使用 4.3 用用if语句实现选择结构语句实现选择结构37课堂特制 http:/ 考虑下面程序的输出结

18、果考虑下面程序的输出结果: #include main() int x,y; scanf(“%d,%d”,&x,&y); if(xy) x=y; y=x; else x+; y+; printf(“%d,%dn”,x,y);编译错误!4.3 用用if语句实现选择结构语句实现选择结构38课堂特制 http:/ (表达式1)语句1;else if (表达式2)语句2;else if (表达式3)语句3;.else 语句n;3. 阶梯式 if-else-if 真真 假 真真假真真 假 4.3 用用if语句实现选择结构语句实现选择结构39课堂特制 http:/ 用用if语句实现选择结构语句实现选择结构

19、40课堂特制 http:/ if 结构示例结构示例问题描述:问题描述:编写一个程序,根据用户输入的期末考试成绩,输出相应编写一个程序,根据用户输入的期末考试成绩,输出相应的成绩评定信息。成绩大于等于的成绩评定信息。成绩大于等于90分输出分输出“优优”;成绩大;成绩大于等于于等于80分小于分小于90分输出分输出“良良”;成绩大于等于;成绩大于等于60分小分小于于80分输出分输出“中中”;成绩小于;成绩小于60分输出分输出“差差”。 4.3 用用if语句实现选择结构语句实现选择结构41课堂特制 http:/ main()float grade;printf(n 请输入期末考试成绩: );scanf

20、(%f, &grade);if(grade=90)printf(n 优);else if (grade=80) & (grade=60) & (grade 0) if (y 1) z = 1;else /*这个 else 部分属于哪个 if?*/ z = 2; C语言规定,每个 else 部分总属于前面最近的那个缺少对应的 else 部分的 if 语句。提倡使用大括号括起来以避免看起来有二义性。45课堂特制 http:/ 考虑下面程序输出结果: main() int x=100,a=10,b=20; int v1=5,v2=0; if(ab) if(b!=15) if(!v1) x=1; el

21、se if(v2) x=10; x=-1; printf(“%d”,x); 结果:结果:-146课堂特制 http:/ #include main() int magic;/*定义计算机“想”的数*/ int guess;/*定义人猜的数*/ magic=rand(); printf(请输入你的猜测:); scanf(%d,&guess); if(guessmagic) printf(错误!你猜的数大了); else if(guess100) value=y;else value=n;value = num 100 ? y : n;(1)(0)条件表达式使用使用“if-else”的等同代码的等

22、同代码 假设 num = 200 value = num 100;? y : n200value=y50课堂特制 http:/ 13条件运算符可嵌套条件运算符可嵌套 如如 x0?1:(xb?a:cd?c:d ab?a:(cd?c:d)expr1、expr2、expr3类型可不同,表达式值取较高类型可不同,表达式值取较高的类型的类型例例 x?a:b /x=0,表达式值为表达式值为b; x0,表达式值为表达式值为a xy?1:1.5 /xy ,值为值为1.0; xy ,值为值为1.5条件运算符51课堂特制 http:/ #include void main()double sal;double r

23、ate;printf(n 请输入基本工资:);scanf(%lf,&sal);rate= (sal=1000) ? 0 : 0.05;sal=sal-(sal-1000)*rate;printf(n 税后工资为:%7.2f n,sal); 请输入基本工资:1500税后工资为:1475.0052课堂特制 http:/ 180cm,加利福尼亚第 12 大街”);printf(“这是丹尼尔,身高 193cm,现居住地不明,1998 年 12 月 12 日在佛罗里达被捕”);printf(“这是吉姆,身高 175cm,墨西哥州海鸥路弗罗拉公寓,于 2003 年 11 月 1 日在新泽西因抢银行被捕”)

24、;printf(“未发现匹配项。对不起!”);停止搜索停止搜索停止搜索停止搜索警察记录嫌疑犯照片不是这是吉姆,身高 175cm,墨西哥州海鸥路弗罗拉公寓,于 2003 年 11 月 1 日在新泽西因抢银行被捕不是是4.4 利用利用switch语句实现多分支选择结构语句实现多分支选择结构53课堂特制 http:/ 语句是多路判断语句语句是多路判断语句switch 语句计算条件表达式并对照多个常数值进行语句计算条件表达式并对照多个常数值进行检查检查switch (表达式) case 常量 1:语句;break; case 常量 2:语句;break; default:语句;计算表达式的值如果等于常

25、量1 如果等于常量2 如果没有找到匹配的值 4.4 利用利用switch语句实现多分支选择结构语句实现多分支选择结构54课堂特制 http:/ 阅读程序,分析结果阅读程序,分析结果 main() int score; scanf(“%d”,&score): switch(score) case 5: printf(“Very good!”); case 4: printf(“Good!”); case 3: printf(“Pass!”); case 2: printf(“Fail!”); default : printf(“data error!”); 运行结果:运行结果:score为为5时

26、,输出:时,输出:Very good! Good! Pass! Fail! data error!4.4 利用利用switch语句实现多分支选择结构语句实现多分支选择结构55课堂特制 http:/ 利用利用switch语句实现多分支选择结构语句实现多分支选择结构56课堂特制 http:/ 结构示例问题描述:问题描述:要求用户输入一个字符值并检查它是否为元音字母。要求用户输入一个字符值并检查它是否为元音字母。 char in_char;printf(n 请输入一个小写字母: );scanf(%c, &in_char);switch(in_char) case a: printf(n 您输入的是元

27、音字母 an); break; case e: printf(n 您输入的是元音字母 en); break; case i: printf(n 您输入的是元音字母 in); break; case o: printf(n 您输入的是元音字母 on); break; case u: printf(n 您输入的是元音字母 un); break; default: printf(n 您输入的不是元音字母 n); 内存内存in_chare请输入一个小写字母:e您输入的是元音字母 e4.4 利用利用switch语句实现多分支选择结构语句实现多分支选择结构57课堂特制 http:/ 在在09之间的之间的为

28、数字,在为数字,在AZ之间为大写字母,之间为大写字母, 在在az之间之间为小写字母,其余则为其它字符。为小写字母,其余则为其它字符。 main()char c;printf(n 请输入一个字符: );c=getchar();if(c=0&c=A&c=a&c=z)printf(n 该字符是一个小写字母。n);elseprintf(n 该字符是其他字符。n); 内存内存cE请输入一个字符:E该字符是一个大写字母58课堂特制 http:/ main() int a,b;char op; printf(n 输入操作数1,运算符,操作数2: ); scanf(%d,%c,%d,&a,&op,&b); s

29、witch(op) case +: printf(n %d+%d=%dn,a,b,a+b); break; case -: printf(n %d-%d=%dn,a,b,a-b); break; case *: printf(n %d%d=%dn,a,b,a*b); break; case /: printf(n %d/%d=%dn,a,b,a/b); break; default: printf(n 运算符错误!); 输入操作数1,运算符,操作数2:45,*,2452 = 90内存内存abop452*59课堂特制 http:/ #include ”stdio.h” main() int a=

30、15, b=21, m=0;switch (a%3) case 0: m+; break; case 1: m+; switch (b%2) default: m+; case 0: m+; break; printf(”%dn”,m); A1 B2 C3 D4 60课堂特制 http:/ 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

31、”,a,b); 运行结果:a=2,b=161课堂特制 http:/ 可以组成何种三角形。从键盘任意输入年、月,编程输出该年份该月的天数。商店卖西瓜,10斤以上的每斤0.15元,8斤以上的每斤0.3元,6斤以上的每斤0.4元,4斤以上的每斤0.6元,4斤以下的每斤0.8元,从键盘输入西瓜的重量和顾客所付钱数,输出应付款和应找钱数。某服装批发商店经营套服,也单件出售。若买的不少于50套,每套80元;不足50套的每套100元;只买上衣每件60元;只买裤子每条45元。从键盘任意输入顾客所买的上衣和裤子的件数,输出应付款。62课堂特制 http:/ B、 C、 D、 E。90分以上为A,80到89分为B,70到79分为C,60到69分为D,60分以下为E。有3个整数a、b、c,由键盘输入,输出其中最大的数。通过键盘输入字符,判断其为控制、数字、大写字母、小写字母和其他字母的哪一类。 根据如下函数关系,从键盘任意输入一个数(x),计算出相应的y值。 x y x0 0 0=x10 x 10=x20 10 20=x40 -0.5x+20练习63课堂特制

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

最新文档


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

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