《程序设计基础-第八章-PPT.ppt》由会员分享,可在线阅读,更多相关《程序设计基础-第八章-PPT.ppt(49页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、程序设计基础-第八章 引述 while 语句 do-while 语句 for 语句 循环中的问题 循环嵌套循 环 结 构 程 序 设 计2(1)顺序结构 程序的执行是按照各语句出现的先后次序,顺序执行。l 问题1:输入两个整数,并求和打印结果l 算法设计:1)输入两个整数,分别存放在变量a 和b 中;2)进行加法计算,并将和存放在变量c 中;3)输出变量c。l 用C 语言伪代码描述:1)scanf(%d%d,&a,&b);2)c=a+b;3)printf(%d,c);l 用C 程序描述为:#includeintmain()inta,b,c;printf(“输入两个数:”);scanf(%d%d
2、,&a,&b);c=a+b;printf(%d,c);return0;引述3(2)选择结构 对给定的条件进行判断,根据判定结果选择某种操作。l 问题2:输入两个整数,进行比较后将较大的输出。l 算法设计:1)输入两个整数,分别存放在变量a 和b 中;2)进行比较,并将较大的存放在变量c 中;3)输出变量c。l 用C 语言伪代码描述:1)scanf(%d%d,&a,&b);2)if(a=b)c=a;else c=b;3)printf(%d,c);引述4问题3:计算1+2+3+.+100l方法1:#includeintmain()intsum=0;sum=1+2+.100;printf(sum=%
3、d,sum);return0;缺点:语句太长。引述5问题3:计算1+2+3+.+100l方法2:#includeintmain()intsum=0;sum=sum+1;sum=sum+2;.sum=sum+100;printf(sum=%d,sum);return0;语句太多。引述6问题3:计算1+2+3+.+100 l 方法3:伪语言算法描述:Begins1:sum=0;k=1;-初始化部分s2:ifk=100thengotos3-循环条件elsegotos6s3:sum=sum+k;-循环体语句s4:k+;-步长修改s5:gotos2;上面4部分缺一不可s6:printfsum;End初始
4、化部分、循环条件、循环体语句、步长修改4部分缺一不可。引述7算法由4部分组成:1)初始化:建立循环前所必须的条件;sum=0;k=1;2)循环测试:当满足循环条件时进行循环,否则终止循环;k=1003)循环体:需要重复执行的操作;sum=sum+k;4)增量修改:修改控制循环次数变量的值,使循环测试条件趋向假,即循环趋向结束。k+;引述8大家学习辛苦了,还是要坚持继续保持安静 继续保持安静9 while 语句是条件循环语句,根据条件是否成立,确定循环是否进行。语句一般格式:while(条件表达式)循环体语句 语句功能:计算条件表达式的值,为非0(逻辑真)时,执行循环体,每执行一次,就判断一次条
5、件表达式的值,直到表达式的值为0 时结束循环,转去执行while 后面的语句。while 语句属于当型循环(即当条件表达式为值时执行循环体)。执行流程见图。while 语句10 说明:l(1)while 表达式的括号后一般不要加“;”;l(2)条件表达式是循环条件表达式,可以是任意表达式,在计算时如果是非0,则其为值认为是真,否则认为是假。l(3)注意循环体语句是复合语句的情况下,一定不要丢掉“”。while 语句11【例】求前100 个自然数的和。l分析:本题即求12.100,num为循环变量,要设一个累加变量sum放置和,则循环的4部分为初始化部分:num=1;sum=0;循环条件:num
6、=100循环体语句:sum=sum+num;步长修改:num+;用while语句前,实现初始化部分,循环条件放在while后面的括号中,步长修改也算做循环体语句中。12/【例3-12】求1到100的和#includeintmain(intargc,char*argv)intnum,sum;num=1;sum=0;while(num=100)sum=sum+num;num+;printf(sum=%dn,sum);return0;程序:13【例】计算1+1/2+1/3+.+1/100l分析:用k表示循环变量,sum存放和,则循环的四部分为:初始化部分:k=1;sum=0;循环条件:k=100循环
7、体语句:sum=1.0/k+sum;步长修改:k+;14/【例3-13】求1+1/2+1/3+.+1/100#includeintmain(intargc,char*argv)intk;floatsum;k=1;sum=0;while(k=100)sum=sum+1.0/k;k+;printf(sum=%fn,sum);return0;程序:15请思考:如果sum=sum+1.0/k;改成sum=sum+1/k;程序运行的结果会是什么呢?注意:(1)如果while的(条件表达式)值为0,则循环体一次也不执行(如当i的初值=101)。(2)在循环体中必须有使循环趋向结束的操作,否则循环将无限进行
8、(死循环)。(3)在循环体中,语句的先后位置必须符合逻辑,否则会影响运算结果。(4)为了保证循环正常运行,应该特别注意:1)控制条件的初始状态(初始值);2)循环控制条件的描述;3)循环体内部对控制条件的影响。16【例】计算1 100 之间,能被3 整除但不能被7 整除的数之和。l分析:初始化部分:k=1;sum=0循环条件:k=100循环体语句:if(k%3=0&k%7!=0)sum=sum+k;步长修改:k+;17/【例3-14】求1到100以内能被3整除但不能被7整除的数之和#include#includeintmain(intargc,char*argv)intk;intsum;k=1
9、;sum=0;while(k=100)if(k%3=0&k%7!=0)sum=sum+k;k+;printf(sum=%dn,sum);return0;程序:18 语句一般格式:do 循环体语句 while(条件表达式);语句功能:当流程到达do 后,立即执行循环体一次,然后才对判断表达式进行计算、测试。若表达式的值为真(非0),则重复执行一次循环体;否则退出。dowhile 语句属于直到型循环;与while 结构相比,dowhile 结构至少要执行一次循环体。这样的结构应用在需要事先执行一次循环体的程序非常容易理解。执行流程见图。do-while 语句 提示:while(条件表达式)后的分号
10、不能丢。19【例】计算1+3+5+.+99l分析:初始化部分:num=1;sum=0循环条件:num100循环体语句:sum=sum+num步长修改:num=num+220/【例3-15】求1+2+3+.+100#includeintmain(intargc,char*argv)intnum,sum;num=1;sum=0;dosum=sum+num;num+;while(num=100);printf(sum=%dn,sum);return0;程序:21在一般情况下,用while 语句和用do-while 语句处理同一问题时,若二者的循环体部分是一样的,它们的结果也一样。但是如果while
11、后面的表达式一开始就为假(0 值)时,两种循环的结果是不同的。#includeintsum=0,k;scanf(“%d”,&i);while(k=10)sum=sum+ki;k=k+1;printf(“sum=%dn”,sum);#includeintsum=0,i;scanf(“%d”,&i);dosum=sum+i;i=i+1;while(i=10);printf(“sum=%dn”,sum);while 与do-while 比较22 语句一般格式:for(表达式1;表达式2;表达式3)循环体语句for 语句是比较常用的循环语句,它能清晰地体现循环结构的四个组成部分。初始化部放在表达式1 中;循环条件写在表达式2 中;步长修改通常在表达式3 中。程序流程图for 语句23 执行流程:l(1)先执行表达式1(初始化表达式)。注意在整个循环中它只执行一次。l(2)重复下面的过程:计算表达式2(判断表达式),若为真(非0),就执行一次循环体语句,然后再执行表达式3(修正表达式);再计算表达式2(判断表达式),判断是否为“真”,直至表达式2(判断表达式)的值为假(0),就不再执行循环体了。for 语句24