




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、高级语言程序设计高级语言程序设计选择程序设计(选择程序设计(2)复习复习n1 判断条件的形式:通常是用关系表达式判断条件的形式:通常是用关系表达式n2 判断条件的结果:逻辑真判断条件的结果:逻辑真 1、逻辑假、逻辑假 0n3 实际上除了关系表达式之外,实际上除了关系表达式之外,任何有计算结果任何有计算结果的表达式都可以作为的表达式都可以作为判断条件判断条件,计算结果不为零,计算结果不为零的数均转化为逻辑真,计算结果为的数均转化为逻辑真,计算结果为0即为逻辑假即为逻辑假n 算术表达式算术表达式n 函数调用表达式函数调用表达式n4甚至是简单的变量或常量都可以甚至是简单的变量或常量都可以n 选择结构
2、的两种形式:选择结构的两种形式:n if ( condition )n n if (condition )n n elsen 注意大括号的使用注意大括号的使用 n复合语句块用复合语句块用 括起来括起来n if ( )n n .多条语句复合到一起多条语句复合到一起n .n n一条语句的时候省略一条语句的时候省略 问题问题3: 按成绩把学生分成多组按成绩把学生分成多组n问题描述:教师要把参加某次测验的学问题描述:教师要把参加某次测验的学生按成绩的分数段(生按成绩的分数段(90以上,以上,80到到89,70到到79,60到到69,小于,小于60)分成多组,)分成多组,并统计出各组的人数。并统计出各组
3、的人数。分析分析n输入输入: 学生成绩学生成绩graden输出输出:根据成绩的范围,输出不同的结果根据成绩的范围,输出不同的结果 A,B,C,D,或者,或者F,和统计结果,和统计结果 n 如何判断如何判断grade所在的范围?所在的范围?n 90以上,以上,80到到89,70到到79,60到到69,小于,小于60n if (grade=90) n 但是但是 if( 89=grade=60)n if ( grade = 60)nif ( grade =60) n if ( grade =60) nn if ( grade = 90 )n printf(“good!in group An”);ne
4、lsen if ( grade =80 )n printf ( “ better!in groupn”); n elsen printf( “ ok, in C or D or Fn”);更好的写法更好的写法nif ( grade = 90 )n printf(“good!in group An”);nelse if ( grade =80 )n printf ( “ better!in groupn”); nelsen printf( “ ok, in C or D or Fn”);注意:注意:n多个多个if-else嵌套,嵌套,if else的匹配原则是:的匹配原则是: else与前面最近
5、的没有被使用的与前面最近的没有被使用的if匹配匹配 n 表达式1表达式2表达式3语句1语句2语句3语句n其它语句TTTFFF算法设计(算法设计(1)1 求和变量求和变量aNum,bNum,cNum,dNum,fNum初始化初始化为为0;2 输入学生成绩;输入学生成绩;3 如果输入没有结束则执行如果输入没有结束则执行(4)否则执行否则执行(9);4 如果成绩大于或等于如果成绩大于或等于90,输出分到,输出分到A组信息,组信息,aNum加加1,返返回到(回到(2););5 否则如果成绩还大于或等于否则如果成绩还大于或等于80,输出分到,输出分到B组信息,组信息,bNum加加1,返回到(返回到(2)
6、;6 否则如果成绩还大于或等于否则如果成绩还大于或等于70,输出分到,输出分到C组信息,组信息,cNum加加1,返回到(返回到(2);7 否则如果成绩还大于或等于否则如果成绩还大于或等于60,输出分到,输出分到D组信息,组信息,dNum加加1,返回到(返回到(2);8 否则输出分到否则输出分到F组信息,组信息,fNum加加1,返回到(返回到(2);9 输出统计结果输出统计结果n算法实现算法实现 见见ifelsenest.c n#includenint main(void)nn int aNum = 0, bNum = 0, cNum = 0, dNum = 0, fNum = 0;n int
7、grade;n while( scanf(%d,&grade) != EOF)n n if( grade = 90 )n printf(Good! you belong in group An);n aNum = aNum + 1;n n else if ( grade = 80 )n printf(Better! you belong in group Bn);n bNum = bNum + 1;n n else if ( grade = 70 ) n printf(Middle! you belong in group Cn);n cNum = cNum + 1;n n else
8、if ( grade = 60 ) n printf(Pass! you belong in group Dn);n dNum = dNum + 1;n n else n printf(Sorry, you are failed, belong in group Fn);n fNum = fNum + 1;n n n printf(aNum = %dn, aNum);n printf(bNum = %dn, bNum);n printf(cNum = %dn, cNum);n printf(dNum = %dn, dNum);n printf(FNum = %dn, fNum);n retur
9、n 0;n分析一下该算法的执行情况分析一下该算法的执行情况n你可以运行算法你可以运行算法1的代码,看看每个学生的代码,看看每个学生成绩要判断几次才能找到它适合的位置。成绩要判断几次才能找到它适合的位置。n如果成绩都是如果成绩都是90以上会怎样?以上会怎样?n如果成绩都是如果成绩都是60、70分甚至更低会怎么分甚至更低会怎么样?样?n正常情况下学生的成绩处于中游的比较正常情况下学生的成绩处于中游的比较多,即大多数都在多,即大多数都在70和和80之间,之间,符合客符合客观实际的、更好的结构应该是什么?观实际的、更好的结构应该是什么? n grade80grade70grade60grade90F组
10、A组B组D组C组开始NNNNYYYY 图 3.16 嵌套的选择结构举例 n算法实现算法实现 见见ifelsebetter.c重新分析一下问题重新分析一下问题n如果把成绩除以如果把成绩除以10取整,可以发现,取整,可以发现,100分对应分对应10,90到到99分对应分对应9,80到到89分对应分对应8,依此类推,依此类推,0到到9分的对应分的对应0 n依据整型常量依据整型常量10,9,8,7,6,5,4,3,2,1,0 可断定该同学应该分到哪一组可断定该同学应该分到哪一组 算法设计(算法设计(2)1 求和变量求和变量aNum,bNum,cNum,dNum,fNum初始化为初始化为0;2 输入学生
11、成绩输入学生成绩grade;3 如果如果grade大于大于100或小于或小于0,输出错误信息,返回到(,输出错误信息,返回到(2););4 如果输入没有结束则执行如果输入没有结束则执行(5)否则执行否则执行(12)5 把成绩除以把成绩除以10并取整,得到对应的整型值并取整,得到对应的整型值number6 如果如果number是是10或或9,输出,输出A组信息,组信息,aNum加加1,返回(,返回(2););7 如果如果number是是 8,输出,输出B组信息,组信息,bNum加加1,返回到(,返回到(2););8 如果如果number是是7,输出,输出C组信息,组信息,cNum加加1,返回到(
12、,返回到(2););9 如果如果number是是6,输出,输出D组信息,组信息,dNum加加1,返回到(,返回到(2););10如果如果number是是5或或4或或3或或2或或1或或0,输出,输出F组信息,组信息,fNum加加1,返回到(,返回到(2););11 如果如果number是其它数字,输出错误信息,返回到(是其它数字,输出错误信息,返回到(2););12 输出统计结果。输出统计结果。switch case 多分支选择结构多分支选择结构n switch (整型表达式)(整型表达式)n case 常量表达式常量表达式:n 要执行的语句要执行的语句n break;n case常量表达式常量
13、表达式:n 要执行的语句要执行的语句n break;n n default:n 默认的执行语句默认的执行语句n n 几个组成部分几个组成部分 nswitch (表达式表达式) 必须是整型值的表达式必须是整型值的表达式 nswitch的主体用一对花括号括起的主体用一对花括号括起 n多个平行的多个平行的 case 常量表达式常量表达式: n每个每个case 里的要执行的语句可以是多条语句,里的要执行的语句可以是多条语句,它们不必使用它们不必使用括起来。也可以没有语句括起来。也可以没有语句n在整个在整个swith主体的最后是一个可选的主体的最后是一个可选的default : 动作Case 1 bre
14、akCase 2Case ndefaultn算法实现(算法实现(switch case) n见见 switchint.c5分制成绩统计问题分制成绩统计问题输入的学生成绩是输入的学生成绩是 A/a, B/b,n成绩是一个字符成绩是一个字符 怎么输入字符呢?字符是什么?怎么输入字符呢?字符是什么?n字符可以看成整数(字符可以看成整数(ascii码)码)n如何判断输入的是什么字符?如何判断输入的是什么字符?字符型字符型n char n char c1, c2, c3;n c1 = A;n c2 = b;n c3 = 1;n n也可以用整型变量存放字符常量,如也可以用整型变量存放字符常量,如n int
15、 grade1, grade2;n grade1 = A;n grade2 = B;n计算机内部接受的是计算机内部接受的是 A , B的的ASCII码。码。字符比较字符比较n两个字符常量或者存放字符常量的变量两个字符常量或者存放字符常量的变量可以比较大小可以比较大小nascii码进行比较码进行比较字符型数据的输入字符型数据的输入n可以使用可以使用scanf和和printf函数对字符型数函数对字符型数据进行输入和输出,占位符是据进行输入和输出,占位符是%c。 nASCII码是码是10的字符是回车符。这说明的字符是回车符。这说明我们输入了一个字符我们输入了一个字符a后输入的回车后输入的回车符被变量
16、符被变量a第二次读到了。第二次读到了。n这个回车符是没有用的,因此用一个临这个回车符是没有用的,因此用一个临时变量时变量t把从输入缓冲区中读出。下例的把从输入缓冲区中读出。下例的scanf(“%d”,&t)就起这个作用。就起这个作用。键盘读一个字符的函数键盘读一个字符的函数n getchar( ) n n a = getchar( ); 代替代替scanf(“%c”,&a);n getchar( ); 代替代替 scanf(“%c”,&t);输出一个字符到屏幕的函数输出一个字符到屏幕的函数n putchar(a );n代替代替n printf(“%c”,a); 算法设计
17、(算法设计(3)1 求和变量求和变量aNum,bNum,cNum, dNum,fNum初始化为初始化为0;2 输入学生成绩输入学生成绩grade;3 如果输入没有结束则执行如果输入没有结束则执行(4)否则执行否则执行(10);4 如果如果grade是是A, 输出输出A组信息,组信息,aNum加加1,返回到(,返回到(2););5 如果如果grade是是B, 输出输出B组信息,组信息,bNum加加1,返回到(,返回到(2););6 如果如果grade是是C, 输出输出C组信息,组信息,cNum加加1,返回到(,返回到(2););7 如果如果grade是是D,输出输出D组信息,组信息,dNum加加
18、1,返回到(,返回到(2););8 如果如果grade是是F, 输出输出F组信息,组信息,fNum加加1,返回到(,返回到(2););9 如果如果grade是其它字符,输出错误信息,返回到(是其它字符,输出错误信息,返回到(2););10 输出统计结果。输出统计结果。n算法实现算法实现 见见switch5grade.c从键盘获得一个字符的另外两个函数从键盘获得一个字符的另外两个函数n#includengetche( ) ,它能接收键盘输入的任意一个字符,它能接收键盘输入的任意一个字符,无无需回车即可以接受需回车即可以接受,自动的显示到屏幕上,称之为,自动的显示到屏幕上,称之为回显回显。nget
19、ch( ),它同,它同getche( ) 不同的就是不同的就是无回显无回显。n这两个与这两个与getchar( )比较,比较,getchar( )需要按回车需要按回车键键,变量才能在输入缓冲区中读到一个字符,变量才能在输入缓冲区中读到一个字符,无回无回显。显。 n演示三种字符输入函数演示三种字符输入函数n观察它们的区别观察它们的区别问题问题4:判断某年是否为闰年:判断某年是否为闰年n问题分析:问题分析:n 判断某年是不是闰年的条件判断某年是不是闰年的条件“某年能被某年能被4整除但不整除但不能被能被100整除整除或者或者能被能被4整除又能被整除又能被400整除整除” n某年是闰年的条件为某年是闰
20、年的条件为n(1) “year能被能被4整除整除”并且并且“year不能被不能被100整除整除”n或者或者n(2) “year能被能被4整除整除”并且并且“year也能被也能被400整除整除”并且关系并且关系的两个判断如何表示?的两个判断如何表示?nint pass = 0;nint grade1,grade2;n scanf(“%d%d”,&grade1,&grade2);n如果如果 grade1 = 60 且且 grade2 = 60 pass=1n用嵌套用嵌套 或关系或关系的两个判断如何表示?的两个判断如何表示?nint nopass = 0;nint grade1,gr
21、ade2;n scanf(“%d%d”,&grade1,&grade2);n如果如果 grade1 60 或者或者 grade2 = 60 ) & ( grade2 = 60 )n逻辑与的优先级低于关系运算,可以省略逻辑与的优先级低于关系运算,可以省略( )n 上式等价于上式等价于grade1 = 60 & grade2 = 60 n ( grade1 60 ) | ( grade2 60 ) n逻辑或的优先级低于关系运算,可以省略逻辑或的优先级低于关系运算,可以省略 ( ) ;n 上式等价于上式等价于 grade1 60 | grade2 = 90 ) n逻辑非是单目运算,它的优先级高于关系运算,因此不可以逻辑非是单目运算,它的优先级高于关系运算,因此不可以省略省略( )优先级与结合性优先级与结合性n算术运算算术运算关系运算关系运算逻辑与运算逻辑与运算逻辑逻辑或运算或运算, 它们依次降低,它们依次降低,n但逻辑非运算的优先级高于算术运算但逻辑非运算的优先级高于算术运算n逻辑运算是左结合的逻辑运算是左结合的逻辑运算的逻辑运算的短路性短路性n逻辑运算的操作数是逻辑运算的操作数是0和和1,0和和1的运算是有规律的的运算是有规律的n 由由“逻辑与逻辑与”运算组成的表达式,运算组成的表达式,从左至右计算,从左至右计算
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 轴承厂仓库改造工程方案(3篇)
- 土壤修复工程实施方案(3篇)
- 平台马道工程施工方案(3篇)
- 公路工程首件监理方案(3篇)
- 2025年成人教育终身学习体系构建与平台运营中的教育资源共享机制探讨
- 京杭府室内装修工程方案(3篇)
- 2025年影视工业化制作流程与质量控制优化方案探索报告
- 门头改造工程施工方案(3篇)
- 2025年新能源行业风力发电机叶片质量认证技术创新报告
- 银行结构化考试题及答案
- 安全驾驶教育培训课件
- 六年级上册心理健康教育教案-正确认识我自己 北师大版
- 2025北京京剧院招聘10人备考题库及答案解析
- 防护用品使用课件
- 贵州省桐梓县狮溪铝多金属(含锂)普查项目环境影响评价报告表
- 吉林省梅河口市2025年上半年公开招聘辅警试题含答案分析
- 日间手术课件
- 灭火和应急疏散预案演练制度(足浴会所)
- 清产核资业务培训课件
- 2025年高等教育心理学模拟题(含答案)
- 2025年部编版新教材语文七年级上册教学计划(含进度表)
评论
0/150
提交评论