程序设计基础第5章.ppt_第1页
程序设计基础第5章.ppt_第2页
程序设计基础第5章.ppt_第3页
程序设计基础第5章.ppt_第4页
程序设计基础第5章.ppt_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序设计基础,主讲教师:崔莉莉,6控制循环流程的编程,学习目标循环流程while、for语句do-while语句break、continue语句掌握程序调试工具的基本使用断点的设置与应用技能,三种基本程序结构,顺序结构。A与B顺序操作,执行完A后,必定接着执行B。是最简单的基本结构。选择结构。分支结构。必包含一个判断框,根据给定条件P是否成立而选择是执行A还是B,无论P成立否,只能执行A或B之一。,A,B,A,P,B,y,n,P,A,y,n,循环结构。重复结构,即反复执行某一部分操作当型结构。如P成立,执行A,完后再判断P,如还是成立,再执行A,如此反复,当某一次P不成立,脱离循环结构。特征:先判断后执行。直到型结构。先执行A,再判P,不成立再执行A,再判断P,P还是不成立,再执行A,如此循环反复,直到某一次P成立脱离循环。特征:先执行后判断。,P,A,y,P,A,y,n,前期知识if语句的2种格式,格式1if(表达式)语句;格式1的if语句执行过程:1.求表达式的值,若为真(即值为非0),则执行2,若为假(即值为0)则转到3;2.执行if语句中指定的内嵌语句A;3.整个if语句执行结束,继续执行后面的语句,格式2if(表达式)语句1;else语句2;格式2的if语句执行过程:1.求表达式的值,若为真(即值为非0)则执行2,若为假(即值为0)则转到3;2.执行if语句中指定的内嵌语句1(A),然后转到4;3.执行if语句中指定的内嵌语句2(B);4.整个if语句执行结束,继续执行后面的语句。,注意:不要误认为格式2是两个语句(if语句和else语句),它们同属于同一个if语句。,例:从键盘输入一学生的2个成绩,然后输出两者中的高分。确定算法:定义2个变量score1、score2,保存输入的2个成绩。程序处理过程:1.显示输入提示,从键盘接收2个成绩分别到score1、score2;2.判断条件:score1score2,成立执行3,否则转4;3.输出score1,转5;4.输出score2;5.结束运行。分析:步骤3或4并不总是被执行的,这2步到底执行哪一步,取决于步骤2的控制,步骤2控制的依据是条件score1score2,显示输入提示从键盘接收2个成绩,分别存放到score1、score2计算表达式:score1score2结果值为非0结果值为0输出score1输出score2;结束运行,这2步到底执行哪一步,取决于表达式的计算结果,/*源文件名:ch4_01.cpp功能:取高分*/#includevoidmain()floatscore1,score2;coutscore1score2;if(score1score2)coutscore1;elsecoutscore2;if(score1score2)t=score1;score1=score2;score2=t;cout高的在score1,是score1endl;cout低的在score2,是score2bc;d=b*b-(4*a*c);if(d0)cout无实数根endl;elses=sqrt(d);/sqrt是平方根函数x1=(-b+s)/(2*a);x2=(-b-s)/(2*a);if(d=0)coutx1=x2=x1endl;elsecoutx1=x1,x2=x2k;if(k=obj)cout成功endl;exit(0);elseif(kobj)cout太小;elsecout太大;coutk;if(k=obj)coutk;if(k=obj)cout成功endl;elsecout失败k;if(k=obj)coutobj)cout太大endl;elsecout太小endl;cout,请再猜!;num+=1;if(num=3)coutn;switch(n)case1:/注意1是字符型coutFirst;break;,case2:coutSecond;break;case3:coutThird;break;default:coutn;switch(n)case1:coutFirst;case2:coutSecond;case3:coutThird;default:coutchoice;switch(choice)case0:coutSunn;break;case1:coutMonn;break;case2:coutTuen;break;,case3:coutWedn;break;case4:coutThun;break;case5:coutFrin;break;case6:coutSatn;break;default:cout输入错误;,新知识循环结构,一般每一个实用程序都有循环,没有循环的程序几乎是不可能的;循环结构的作用:使得若干条顺序执行代码多次反复运行,达到预定的目的。从某种意义来说,程序设计就是组织循环组织循环是初学者的一个主要难点。C语言提供下列循环设计形式:1.goto和if语句的组合;2.dowhile语句3.while语句4.for语句,6.1while语句,特点:先判断表达式,后执行语句。,while语句(当型)的一般格式while(表达式)语句;while语句的执行过程:1.求表达式的值,若为假(即值为0),则转到3;2.执行while语句中指定的内嵌语句(称为循环体),然后转回到1;3.整个while语句执行结束,继续执行后面的语句。,while(表达式)循环体语句;,流程图,一般形式,特点:先判断表达式,后执行循环体几点说明:循环体有可能一次也不执行如:while(i100)循环体语句;输入i的值大于100循环体可为任意类型语句下列情况,退出while循环条件表达式不成立(为零)循环体内遇break,return,goto无限循环如:while(1)循环体语句;,例:求出1+2+3+4+100的值并显示结果。#includevoidmain()intsum=0;inti;i=1;while(i=100)sum=sum+i;i+;coutsum100结束),该表达式起到了控制循环次数的作用。,如无i+,则成无穷循环,即死循环,i的值永不改变,循环永不结束。,6.2do-while语句,do-while语句(直到型)一般格式:do语句;while(表达式);与while语句不同的是,do循环中的语句至少会执行一次,而while语句当条件第一次就不满足时,语句一次也不会被执行。,特点:先执行语句,后判断表达式。,有一个分号,do循环体语句while(表达式);,一般形式,流程图,特点:先执行循环体,后判断表达式说明:至少执行一次循环体dowhile可转化成while结构,#includevoidmain()intsum=0;inti;i=1;dosum=sum+i;i+;while(i=100);coutsumendl;,for语句的一般格式:for(表达式1;表达式2;表达式3)语句;for语句的执行过程:1.求解表达式1;2.求解表达式2,若其值为真(非0),则执行for语句中指定的内嵌语句(循环体);若为假(为0)则转到5;3.求解表达式3;4.转回到2;5.循环结束,执行for语句后面的语句。象if语句一样,while和for语句中的内嵌语句都是一句语句,如果一句简单的语句不能满足需要,就得使用复合语句。,6.3for语句,#includevoidmain()intsum=0;inti;for(i=1;i=100;i+)sum=sum+i;coutsumendl;,循环变量i:用于控制重复次数的变量,本例中它最初被赋值1,这个值称为初值,表达式i=100,用于判断是否继续循环,它起到了控制循环次数的作用,i+增量运算,由它控制循环变量的变化,循环体:在循环中反复执行的语句部分,for(表达式1;表达式2;表达式3)语句;,for(i=1;i=100;i+)sum=sum+i;,计算表达式1,计算表达式2,执行循环体,结束循环,计算表达式3,执行下一语句,表达式1:循环变量赋初值(i=1;),真(非0),表达式2:循环条件判断,决定循环是否继续(i=100;),表达式3:循环变量增值(i+),假(0),以下写法可以使程序更简练,intsum=0;inti=1;while(i=100)sum=sum+i+;coutsumendl;,intsum=0;for(i=1;i=100;i+)sum+=i;coutsumendl;,intsum=0;inti=1;while(i=100)sum+=i+;coutsumendl;,例:编写程序实现功能:求出1到100之间所有奇数的和,并显示结果,intsum=0;inti=1;while(i=100)if(i%2!=0)sum=sum+i;i+;coutsumendl;,intsum=0;for(i=1;i=100;i+)if(i%2!=0)sum=sum+i;coutsumendl;,例:编写程序实现功能:求出1到100之间所有偶数的和,并显示结果,intsum=0;inti=1;while(i=100)if(i%2=0)sum=sum+i;i+;coutsumendl;,intsum=0;for(i=1;i=100;i+)if(i%2=0)sum=sum+i;coutsumendl;,for语句可以将变量初始化部分加入其中,for(i=1,sum=0;i=100;i+)if(i%2=0)sum=sum+i;coutsumendl;,intsum=0;for(i=1;i=100;i+)if(i%2=0)sum=sum+i;coutsumendl;,表达式1与表达式3均可无,但分号不可少,sum=0;inti=1;for(;i=100;)if(i%2=0)sum=sum+i;i+;coutsumendl;,sum=0;for(i=1;i=100;i+)if(i%2=0)sum=sum+i;coutsumendl;,for(表达式1;表达式2;表达式3)语句;,表达式2可无,相当于循环条件永远为真例:for(;)并无语法错误相当于while(1)它们将引起无限循环,for(表达式1;表达式2;表达式3)语句;,编程:计算并输出1-3+5-7+-99+101的值,ints1=0,s2=0,i;for(i=1;i=-99;i+=-4)s2=s2+i;s1=s1+s2;couts1endl;,ints=0,t=1,i;for(i=1;i=101;i+=2)s=s+i*t;t=-t;coutsendl;,编程:计算并输出数列11/3+1/5-1/7+1/9-1/11+1/101的和,floats=0,t=1;inti;for(i=1;i=101;i+=2)s=s+1/(t*i);t=-t;coutsendl;,循环嵌套,一个循环体内又包含另一个完整的循环结构,称为循环嵌套,这样的循环也称二重循环前一语句表示的循环称“外循环”后一语句表示的循环称“内循环”内循环从属于外循环,while()while(),for(;)for(;),编程:统计不同的2个数字构成的二位数有多少种,inti,j;intcount=0;for(i=1;i=9;i+)for(j=0;j=9;j+)if(i!=j)count+;coutcountendl;,分析:二位数的范围:1099用变量i从1变化到9,代表十位数字;变量j从0变化到9,代表个位数字。“不同的2个数字”即个位数字与十位数字不等的那种情况(i!=j)用变量count计数,编程:统计不同的3个数字构成的三位数有多少种,inti,j,k;intcount=0;for(i=1;i=9;i+)for(j=0;j=9;j+)if(i!=j)for(k=0;k=9;k+)if(k!=i,分析:三位数范围:100999“不同的3个数字”即个位数字与十位数字不等的那种情况(i!=j)符合了这条件再考虑百位数百位数字也必须与它们都不等(k!=ifor(n=10;nx+y)coutnt;,inti,j;for(i=1;ii+j)cout10*i+js)coutnt;coutendl;,intn,m,p,s;for(n=1;n=100;n+)m=n;/复制到mp=1;/p存放积s=0;/s存放和while(m!=0)p=p*(m%10);s=s+(m%10);m=m/10;,循环结束条件:每循环一次,由于m/10,m降低一位,降至0结束,用除法运算来分解出一个整数的每一位数字。对于整数m,m%10能得到其个位数;m/10能排除其个位数,编程:输出“九九表”,格式如下:,s=aba:左起第一列b:顶端一行,inta,b;for(a=1;a=9;a+)for(b=1;b=9;b+)couta*bt;coutn;,inta,b;for(a=1;a=b)/行号大于列号couta*bt;coutb条件的一半结果,输出a的一行所有内容后换行,inta,b;cout=b)couta*bt;coutn;,添加了表头,使输出结果符合题意,添加列表头,添加行表头,inta,b;coutt1t2t3t4t5t6t7t8t9n;for(a=1;a=9;a+)coutat;for(b=1;b=a;b+)couta*bt;coutn;,更为简练的方法,内循环可以少走一半,编程:输出如下三角形图形*分析:绝对不能用4句cout简单解决问题,要考虑到通用性,共i行,每行有j个*符号共i行,则有外循环,每一次输出一行;每一行的输出要考虑到它由2部分组成:先是左边若干空格,每行变化规律3210后接若干*符号,每行变化规律1357则有2个内循环,1个打若干空格,另一个打若干*号,inti,j;for(i=1;i=4;i+)for(j=1;j=4-i;j+)cout;for(j=1;j=2*i-1;j+)cout*;coutn;,每一行先打几个空格:变化规律i:1234空格:3210结论:4-i,*,每一行后打几个符号*:变化规律i:1234*:1357结论:2i-1,编程:输出如下三角形图形*分析:第一行*号的左边有10个空格,其位置是左起11位每个*号间有一个空格,inti,j;for(i=1;i=4;i+)for(j=1;j=12-2*i;j+)cout;for(j=1;j=2*i-1;j+)cout*;coutn;,*,break语句在循环中的使用,break语句可以用来从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句。,功能:在循环语句和switch语句中,终止并跳出循环体或开关体说明:break只能终止并跳出最近一层的结构break不能用于循环语句和switch语句之外的任何其它语句之中,例:计算r=1到r=10时的圆面积,直到面积大于100为止。,#include#definepi3.14voidmain()intr;floatarea;for(r=1;r100)break;coutarea100时,执行break语句,提前结束循环,即不再继续执行其余的几次循环,功能:结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断仅用于循环语句中,continue语句,例:把100200之间的不能被3整除的数输出,#includevoidmain()intn;for(n=100;n=200;n+)if(n%3=0)continue;coutnch;for(i=0;chi!=0;i+)if(chi!=M)continue;sum=sum+1;coutThenumberofMissumn;/输入打印图形的行数for(i=1;i=n;i+)for(j=1;j=i;j+)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论