




已阅读5页,还剩60页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.,1,第三章基本程序设计,西南交通大学软件学院计算机基础教研室,计算机程序设计基础与VisualC+,.,2,教学目标,1掌握顺序、选择、循环三种基本控制结构的程序实现方法;2了解基本程序调试技能。,.,3,教学内容,1顺序结构的程序实现语句;2一路、两路、多路分支选择结构的实现语句;3循环结构的实现语句;4循环控制语句的作用;5程序调试过程。,.,4,例“鸡兔同笼问题”:在一个笼子里养着鸡与兔,但不知其中鸡有多少只,兔有多少只。只知道鸡和兔的总数是a,鸡与兔的总脚数是b,求鸡与兔各有多少只。,思路分析:假设有x只鸡和y只兔,则根据已知条件可列出如下方程组:x+y=a2x+4y=b对该方程组做进一步的转换可得:,顺序结构程序设计,.,5,源程序清单:#includeusingnamespacestd;voidmain()inta,b,x,y;couta;coutb;x=(4*a-b)/2;y=(b-2*a)/2;cout鸡的数量为:xendl;cout兔的数量为:yscore2score3;average=(score1+score2+score3)/3;coutsetw(10)科目setw(12)成绩endl;coutsetw(10)英语setw(12)score1endl;coutsetw(10)程序设计setw(12)score2endl;coutsetw(10)大学物理setw(12)score3endl;coutfixed;cout.precision(2);cout该生的平均成绩为:averageendl;,顺序结构程序设计,.,9,编程技巧,1对于输出的多列信息对齐的问题可以通过控制输出的数据所占的位置宽度来实现。实现方法为:在输出该数据前先通过setw(n)来设置该数据输出时所占的最少位置宽度n。使用时需注意;(1)setw(n)所设置的位置宽度只对其后输出的一个数据生效;(2)使用setw(n)时需包含头文件iomanip;2该设置也可以通过cout.width(n);来实现。即语句coutsetw(10)科目setw(12)成绩endl;可更换为:cout.width(10);cout科目;cout.width(12);cout成绩;注意:此方法不再需要文件包含#includeiomanip。,顺序结构程序设计,.,10,编程技巧,3在输出一个浮点数时,系统会在科学记数法和小数点法两种形式里按照一定的规则(通常在整数部分超过6位时采用科学记数法)自动选择采用哪种形式输出。若想规定不管什么样的浮点数均使用小数点形式输出,可采用coutm;if(m0)m=-1*m;cout你输入数据的绝对值为:mabc;if(a=b)if(ac)max=a;elsemax=c;elseif(b=c)max=b;elsemax=c;cout“max=”maxbc;if(a=b,选择结构程序设计,.,26,编程技巧,(1)在嵌套的选择结构中,有一种特殊形式,即只有else部分嵌套有内层选择结构。这种嵌套的层次通常可以无限增加,用于实现多路分支选择结构;(2)此时,通常将内层选择结构的if和外层选择结构的else书写在同一行:if()elseif()else,选择结构程序设计,.,27,条件表达式,简单的选择结构可以通过条件表达式来实现,其格式为:表达式1?表达式2:表达式3(1)表达式1通常是一个关系表达式或逻辑表达式,用来表示要判断的条件。(2)整个条件表达式的值在表达式1所表示的条件成立时取表达式2的值,在表达式1所表示的条件不成立时取表达式3的值。(3)条件表达式的结合性为从右到左,如a=1,b=2,c=3,d=4,e=5,f=6,g=7,则执行m=ab?c:de?f:g后m变量中的值为7。,.,28,源程序清单三,#includeusingnamespacestd;voidmain()doublea,b,c,max;coutabc;if(ab)max=(ac)?a:c;elsemax=(bc)?b:c;coutmax=maxopy;if(op=+)coutx+y=x+yendl;elseif(op=-)coutx-y=x-yendl;elseif(op=*)coutx*y=x*yendl;elseif(op=/)if(y=0.0)cout除式的分母为零!endl;elsecoutx/y=x/yendl;elsecout“非四则运算!”opy;switch(op)case+:coutx+y=x+yendl;break;case-:coutx-y=x-yendl;break;case*:coutx*y=x*yendl;break;case/:if(y=0.0)cout除式的分母为零!endl;elsecoutx/y=x/yendl;break;default:cout“非四则运算!”n;i=1;sum=0;while(i=n)sum=sum+i;i=i+1;cout1与n之间所有整数之和为:sumn;for(j=1;j=n;j+)mul*=j;coutmul=mulendl;,循环结构程序设计,.,39,编程技巧,(1)当型循环也可用for语句来实现,语法格式为:for(表达式1;表达式2;表达式3)语句表达式1:进入循环前执行一次,作用是为有关变量赋初值;表达式2:用于控制循环的条件;表达式3:用于修正有关变量的值;表达式1和表达式3可以是逗号表达式表达式1、2、3都可以省略,但分号不能省略。省略表达式1表示不需要赋初值(该任务可在for语句前完成);省略表达式2表示循环条件永远为真;省略表达式3表示没有修正部分(循环体内应有相关修正);省略表达式1和3的for语句等效于while语句。循环体仍只能是一条语句;,循环结构程序设计,.,40,编程技巧,for语句的执行过程:首先求解表达式1,然后判断表达式2是否成立,如果成立,则执行循环体,并求解表达式3,之后重复“判断执行求解”的过程,直到循环条件不成立时退出循环。(2)while和for语句实现的都是当型循环结构,因此可以相互转换,如本例中的for语句可以用while语句改写成如下形式:j=1;while(j=n)mul*=j;j+;,循环结构程序设计,.,41,编程技巧,(3)通过对比可以发现,for语句在实现结果上比while语句更简洁,因此使用更普遍。而且通过for语句()中的三个表达式很容易计算出循环的执行次数(如通过本例中的j=1;j=n;j+部分可以直接推算出循环的次数为n次),使得for语句在已知循环次数的场景下应用尤为突出。练习:计算1!+2!+3!+n!,Page41,循环结构程序设计,.,42,写出程序运行结果,#includeusingnamespacestd;voidmain()inti,a(0);for(i=1;i=6;i+)switch(i%3)case0:i-;case1:a-=2;break;case2:i+=1;default:+a;couta“,”iendl;,运行结果:-2,7,.,43,例计算e=1+(1/1!)+(1/2!)+(1/n!)+的近似值,1/n!=1.0e-7);coute=e,(n=n)m;for(j=2;jm;j+)if(m%j=0)break;if(jm)coutm不是素数。endl;elsecoutm是素数。150voidmain()intn,i,j;for(i=1;i=9;i+)for(j=0;j=9;j+)n=i*100+j*10+i;coutnendl;,循环的嵌套,.,55,编程技巧,(1)一个循环结构的循环体中包含另一个循环结构,称为循环结构的嵌套;(2)在嵌套的循环结构中,内外层循环可以使用相同的循环语句来实现(如本例都采用for语句来实现),也可以使用不同的循环语句来实现;(3)在嵌套的循环结构中,外层循环结构每执行一次,内层循环结构将执行整轮循环(如本例中,当外层循环变量i为1时,内层循环将循环一轮,即变量j将依次取值09;当外层循环的变量i变化为2后,内层循环又将循环一轮);()内外层循环的循环控制变量不能同名。练习:找出m、n之间所有的回文数计算m、n之间所有素数之和,循环的嵌套,.,56,阅读程序,#includeusingnamespacestd;voidmain()intj=1,sum=0;loop:sum+=j;j+;if(j=100)gotoloop;coutsum=sumendl;,.,57,编程技巧,(1)goto语句的功能是控制程序的流程无条件转移到标号指定的语句处继续执行。由于goto语句常常会破坏程序的结构性,除非某些特殊情况,一般不用goto语句。(2)goto语句的使用范围仅局限于函数内部。即:不允许使用goto语句从一个函数转入另一个函数体内。,.,58,例编写程序输出以下图案,*,算法分析:图案的输出实质上是要将指定的图形符号输出到相应的位置,而所谓没有图案的地方都要通过输出空格符号来占据位置。本例的图案可以分成上面四行和下面三行两部分,在输出上面四行时,可以采用循环方式来实现,每循环一次,输出一行图案,因此循环次数应为图案的行数。而每一行图案又包括空格、星号和换行符三部分。不管是空格还是星号,每一行都可能要输出多个,因此也需要采用循环方式进行输出,每循环一次输出一个空格或者一个星号。,循环的嵌套,.,59,算法描述一,循环的嵌套,.,60,源程序清单一,#includeusingnamespacestd;voidmain(void)inti,j;for(i=0;i=3;i+)for(j=0;j=2-i;j+)cout;for(;j=3+i;j+)cout*;coutendl;for(i=0;i=2;i+)for(j=0;j=i;j+)cout;for(j=i;j=4-i;j+)cout*;coutendl;,循环的嵌套,.,61,算法描述二,循环的嵌套,.,62,源程序清单二,#includeusingnamespacestd;voidmain(void)inti,j;for(i=0;i=3;i+)for(j=0;j=3+i;j+)if(j3-i)cout;elsecout*;coutendl;for(i=0;i=2;i+)for(j=0;j=5-i;j+)if(j=i)cout;elsecout*;coutendl;,循环的嵌套
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 与兼职会计合同范本
- 简单的生意合同范本
- 快递装卸服务合同范本
- 农村加固工程合同范本
- 辽宁住宅租赁合同范本
- 隔离酒店合同范本
- 框架采购合同范本
- 问题公关合同范本
- 冷库存货合同范本
- 超市协议书范本6篇
- 2025年政府部门文秘岗位笔试模拟题及答案集
- 2025年全科医师转岗培训理论知识题库及参考答案
- 2024年注册安全工程师考试(初级)安全生产法律法规试题及答案
- 2025初一新生入学教育大会校长讲话
- 监控安全知识培训课件
- 2025-2026学年人教版(2024)初中生物八年级上册教学计划及进度表
- 仓库盘点流程与库存管理技巧
- 消除母婴三病传播培训课件
- ASTM-D3359-(附著力测试标准)-中文版
- 碳化硅外延层厚度的测试 红外反射法
- 旅行管家实务全套ppt课件最全电子教案完整版教学教程整套全书课件ppt
评论
0/150
提交评论