




已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.,1,顺序程序设计举例,小写字母转盘这个程序要求用户输入一个小写字母字符,求出该字母字符的前驱和后继字符,例如,c字符的前驱和后继分别是b和d,程序设计的分析:求一个字母的前驱字母:在没有学会条件控制之前,利用取余操作的特性,即任何一个整数除以26(26个字母)的余数只能在025之间。前驱字母以z为参考点:1.求出字符ch(假设是w)与z之间的字符偏移数n=z-ch=z-w=3;2.(n+1)%26=4则是ch(字母w)的前驱字母相对于z的偏移数;3.z-(n+1)%26=122-4=118(即字母v)就是ch(字母w)的前驱字母。,abcdefghijklmnopqrstuvwxyz,前驱偏移数4,顺序结构,.,2,求一个字母的后继:可以a为参考点:1.求出输入的字符ch(假设是w)与a之间的字符偏移数n=ch-a=w-a=22;2.(n+1)%26=23则是ch(字母w)的后继字母相对于a的偏移数;3.a+(n+1)%26=97+23=120(即字母x)就是ch(字母w)的后继字母。根据以上分析,这个程序应这样设计:(1)定义三个字符型变量,分别用于接受用户输入的字符及用于存放其前驱和后继字符。(2)调用getchar函数获取用户输入的字母。(3)求得该字母的前驱字母和后继字母,并输出其结果。,abcdefghijklmnopqrstuvwxyz,后继偏移数23,.,3,#includevoidmain()charch,ch1,ch2;/变量定义ch=getchar();/读取一字符putchar(n);/换行ch1=z-(z-ch+1)%26;/求前驱字符ch2=a+(ch-a+1)%26;/求后继字符printf(ch1=%c,ch2=%cn,ch1,ch2);/显示结果,具体程序如下:,.,4,第4章选择结构程序设计,.,5,关系运算符、逻辑运算符、条件运算符,1.关系运算符和关系表达式,关系运算符,关系表达式,用关系运算符连接起来的式子称为关系表达式。关系表达式的一般形式为:表达式关系运算符表达式,例:a+bcdx3/2a+10?1:(x0?-1:0),3.条件运算符与表达式一般形式:expr1?expr2:expr3功能:相当于条件语句,例:小写字母转盘。#include#includevoidmain()charch,ch1,ch2;/变量定义ch=getchar();/读取一字符putchar(n);/换行ch1=(ch=a?z:ch1);/求前驱字符ch2=(ch=z?a:ch+1);/求后继字符printf(ch1=%c,ch2=%cn,ch1,ch2);/显示结果,.,9,选择结构的程序设计,1.if语句,简单if语句形式,if(表达式)语句;,格式:,执行流程:,例如:下面的程序段是输入两个整数,输出其中的大数。inta,b,max;printf(inputtwonumbers:);scanf(%d%d,if_else形式,if(表达式)语句1;else语句2;,格式:,执行流程:,例如:下面的程序段同样是输出两个整数中的最大数。inta,b;printf(inputtwonumbers:);scanf(%d%d,.,10,1.if语句,if_else_if形式,if(表达式1)语句1;elseif(表达式2)语句2;elseif(表达式3)语句3;else语句n;,格式:,执行流程:,例如:下面的程序段是判断输入字符的种类。charc;printf(Enteracharacter:);c=getchar();if(c=0,.,11,例输入两数并判断其大小关系,#includevoidmain()intx,y;printf(Enterintegerx,y:);scanf(%d,%d,if语句嵌套:,.,12,语言规定,在缺省时,else总是和它上面离它最近的未配对的if配对,例:考虑下面程序输出结果:voidmain()intx=100,a=10,b=20;intv1=5,v2=0;if(ab)if(b!=15)if(!v1)x=1;elseif(v2)x=10;printf(“%d”,x);,结果:100,if_else配对原则,.,13,2.switch语句(开关分支语句)一般形式:,switch(表达式)caseE1:语句组1;break;caseE2:语句组2;break;.caseEn:语句组n;break;default:语句组;break;,执行过程:,.,14,使用switch语句注意事项,(1)switch后面的“表达式”,可以是int、char和枚举型中的一种,但不可为浮点型。,floata,b=4.0;scanf(%f,.,15,使用switch语句注意事项,(4)每个case后面必须是“常量表达式”,表达式中不能包含变量。,例:按成绩分成A、B、C、D、E、F几个等级。intscore;printf(EnterScore:);scanf(%d,.,16,使用switch语句注意事项,(5)case后面的“常量表达式”仅起语句标号作用,系统一旦找到入口标号,就从此标号开始执行,不再进行标号判断。,#includevoidmain()charch;ch=getchar();switch(ch)caseY:printf(Yesn);break;caseN:printf(Non);break;caseA:printf(Alln);break;default:printf(Yes,NoorAlln);,运行结果:No,/假设输入为:N,#includevoidmain()charch;ch=getchar();switch(ch)caseY:printf(Yesn);break;caseN:printf(Non);caseA:printf(Alln);break;default:printf(Yes,NoorAlln);,/假设输入为:N,运行结果:NoALL,.,17,使用switch语句注意事项,(6)多个case子句,可共用同一语句(组)。,例:当a的值是1、2、3时,将b的值加2;当a的值是4、5、6时,将b的值减2。inta,b=4;scanf(%d,.,18,使用switch语句注意事项,(9)switch语句可以嵌套。,voidmain()intx=1,y=0,a=0,b=0;switch(x)case1:switch(y)case0:a+;break;case1:b+;break;case2:a+;b+;break;case3:a+;b+;printf(na=%d,b=%d,a,b);,运行结果:a=2,b=1,.,19,选择结构程序设计举例,【例】已知某公司员工的保底薪水为500,某月所接工程的利润profit(整数)与利润提成的关系如下所示(计量单位:元)。计算员工的当月薪水。,程序应该这样来设计:首先定义3个变量分别存放员工所接工程的利润、提成比例和当月薪水;调用scanf函数接受用户输入员工所接工程的利润;然后根据上表的规则,计算该员工当月的提成比率。最后计算该员工当月的薪水(保底薪水+所接工程的利润*提成比率),并输出结果。,.,20,#includevoidmain()longprofit;/所接工程的利润floatratio;/提成比率floatsalary=500;/薪水,初始值为保底薪水500printf(Inputprofit:);/提示输入所接工程的利润scanf(%ld,/输出结果,运行结果:Inputprofit:4000salary=1100.00,方法一:使用if语句,0.10默认为double型,不进行强制类型转换将产生警告信息!,.,21,#includevoidmain()longprofit;/所接工程的利润floatratio;/提成比率floatsalary=500;/薪水,初始值为保底薪水500printf(Inputprofit:);/提示输入所接工程的利润scanf(%ld,/输出结果,方法二:使用if_elseif语句,.,22,方法三:使用switch语句,算法设计要点:为使用switch语句,必须将利润profit与提成的关系转换成某些整数与提成的关系。分析本题可知,提成的变化点都是1000的整数倍(1000、2000、5000、),将利润profit整除1000:profit1000对应0、11000profit2000对应1、22000profit5000对应2、3、4、55000profit10000对应5、6、7、8、9、1010000profit对应10、11、12、为解决相邻两个区间的重叠问题,最简单的方法就是:利润profit先减1(最小增量),然后再整除1000即可:profit1000对应01000profit2000对应12000profit5000对应2、3、45000profit10000对应5、6、7、8、910000profit对应10、11、12、,.,23,#includevoidmain()longprofit;/所接工程的利润intgrade;floatratio;/提成比率floatsalary=500;/薪水,初始值为保底薪水500printf(Inputprofit:);/提示输入所接工程的利润scanf(%ld,/输入所接工程的利润,方法三:使用switch语句,/将利润-1、再整除1000,转化成switch语句中的case标号grade=(profit-1)/1000;switch(grade)/计算提成比率case0:ratio=0;break;/profit1000case1:ratio=(float)0.10;break;/1000profit2000case2:case3:case4:ratio=(float)0.15;break;/2000profit5000case5:case6:case7:case8:case9:ratio=(float)0.20;br
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论