书签 分享 收藏 举报 版权申诉 / 38
上传文档赚钱

类型程序设计语言第4章 循环结构.ppt

  • 上传人(卖家):momomo
  • 文档编号:7246762
  • 上传时间:2023-10-31
  • 格式:PPT
  • 页数:38
  • 大小:738KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《程序设计语言第4章 循环结构.ppt》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    程序设计语言第4章 循环结构 程序设计语言 循环 结构
    资源描述:

    1、第第4 4章章 循环结构循环结构 C C语言程序设计语言程序设计循环结构是指在给定条件(或表达式)成立时,循环结构是指在给定条件(或表达式)成立时,反复执行某些程序语句或某个程序段,反复执反复执行某些程序语句或某个程序段,反复执行的程序段称为循环体。行的程序段称为循环体。C C语言提供的三种循环语句(语言提供的三种循环语句(forfor语句、语句、whilewhile语语句和句和dodowhilewhile语句)实现循环结构。语句)实现循环结构。主要内容 while循环 1dowhile循环 2while语句和用do-while语句的比较 3for循环 45循环嵌套 4.1 while循环问题

    2、:显示问题:显示“我要学我要学C C编程编程”5”5遍遍.分析分析程序程序1 1程序程序2 24while语句的一般形式 while(表达式表达式)语句块语句块1;注意:控制循环的三个表达式注意:控制循环的三个表达式执行过程:先判断表达执行过程:先判断表达式的值,当表达式的值式的值,当表达式的值为真时,执行循环体一为真时,执行循环体一次,再判断表达式的值,次,再判断表达式的值,并重复上述操作过程,并重复上述操作过程,直到表达式的值为假时直到表达式的值为假时才结束循环,然后转去才结束循环,然后转去执行循环的后继语句。执行循环的后继语句。54.1 while4.1 while循环循环 问题:显示整

    3、数:问题:显示整数:1 1、3 3、5 5、7 7、.、1515分析与设计分析与设计 i=1 i=13=1+2 i=i+23=1+2 i=i+25=3+2 i=i+25=3+2 i=i+27=5+2 i=i+27=5+2 i=i+2.15=13+2 i=i+215=13+2 i=i+264.2 dowhile4.2 dowhile循环循环问题:求和问题:求和1+2+3+.+100,并输出。,并输出。4.2.1 分析与设计分析与设计sum=0 i=1sum=sum+1 sum=sum+i i+sum=sum+2 sum=sum+i i+sum=sum+3 sum=sum+i i+.sum=sum

    4、+100 sum=sum+i i+#include stdio.h#include stdio.hvoid main()void main()int i=1,sum=0;int i=1,sum=0;do do sum=sum+i;sum=sum+i;+i;+i;while(while(i=100i=100););printf(sum=%dn,sum);printf(sum=%dn,sum);84.1.3 实战演练1译密码。为使电文保密,往往按一定规律将其转译密码。为使电文保密,往往按一定规律将其转换成密码,收报人再按约定的规律将其译回原文。换成密码,收报人再按约定的规律将其译回原文。可以按以下

    5、的规律将电文变成密码:将字母可以按以下的规律将电文变成密码:将字母A变成变成字母字母E,a变成变成e,即变成其后的第,即变成其后的第4个字母,个字母,W变变成成A,X变成变成B,Y变成变成C,Z变成变成D。字母按上述。字母按上述规律转换,非字母字符不变。规律转换,非字母字符不变。2计算计算120之间偶数之和。之间偶数之和。94.2.2 do-while循环循环do-while语句的一般形式为语句的一般形式为:do 语句;语句;while(表达式表达式);执行过程:先执行一执行过程:先执行一次指定的循环体语句,次指定的循环体语句,然后判别表达式,当然后判别表达式,当表达式的值为非零表达式的值为非

    6、零(“真真”)时,返回重时,返回重新执行循环体语句,新执行循环体语句,如此反复,直到表达如此反复,直到表达式的值等于式的值等于0 0为止,此为止,此时循环结束。时循环结束。10例例 输入一个正整数,将其逆序输出。例如,输入输入一个正整数,将其逆序输出。例如,输入12345,输出,输出54321。.12345/10=1234 分析:为了实现逆分析:为了实现逆序输出一个正整数,序输出一个正整数,需要把该数按逆序需要把该数按逆序拆开,然后输出。拆开,然后输出。在循环中要每次在循环中要每次分离一位,分离方分离一位,分离方法是对法是对1010求余数。求余数。设设x=12345x=12345,从低位开始分

    7、离,从低位开始分离,12345%10=512345%10=5,为了能继续使用求余运算分离下一位,需要为了能继续使用求余运算分离下一位,需要改变改变x x的值为的值为12345/10=123412345/10=1234。重复上述操作:重复上述操作:1234%10=41234%10=4;1234/10=1231234/10=123;123%10=3123%10=3;123/10=12123/10=12;12%10=212%10=2;12/10=112/10=1;1%10=11%10=1;1/10=01/10=0;11当当x x最后变成最后变成0 0时,处理过时,处理过程结束。经过归纳得到:程结束。

    8、经过归纳得到:(1 1)重复以下步骤:)重复以下步骤:x%10 x%10,分离一位。,分离一位。x=x/10 x=x/10,为下一次分离,为下一次分离做准备。做准备。(2 2)直到)直到x=0 x=0循环结束。循环结束。#include stdio.h#include stdio.hvoid main()void main()int x;int x;printf(printf(输入输入x x:););scanf(%d,&x);scanf(%d,&x);/*循环开始,循环执行的条件为循环开始,循环执行的条件为x!=0 x!=0*/do do printf(%d,x%10);printf(%d,x

    9、%10);x=x/10;/x=x/10;/*每次循环每次循环x/10 x/10*/while(x!=0);while(x!=0);124.2.3 while4.2.3 while和和do-whiledo-while语句的比较语句的比较一般情况下,用一般情况下,用while语句和用语句和用do-while语句处理同一问题语句处理同一问题时,若二者的循环体部分是一样的,它们的结果也一样。时,若二者的循环体部分是一样的,它们的结果也一样。但是如果但是如果while后面的表达式一开始就为假后面的表达式一开始就为假(0值值)时,两种循时,两种循环的结果是不同的。环的结果是不同的。13void main(

    10、)void main()intint sum=0,i;sum=0,i;printfprintf(请输入请输入i i:););scanf(%d,&iscanf(%d,&i););while(i=10)while(i=10)sum=sum=sum+isum+i;i+;i+;printf(sum printf(sum=%=%dn,sumdn,sum););运行结果如下:运行结果如下:请输入请输入i i:1 /1 /*用户输入用户输入*/sum=55sum=55请输入请输入i i:11 /11 /*用户输入用户输入*/sum=0sum=0void main()void main()int sum=0,

    11、i;int sum=0,i;printf(printf(请输入请输入i i:););scanf(%d,&i);scanf(%d,&i);do do sum=sum+i;sum=sum+i;i+;i+;while(i=10);while(i=10);printf(sum=%dn,sum);printf(sum=%dn,sum);运行结果如下:运行结果如下:请输入请输入i i:1 /1 /*用户输入用户输入*/sum=55sum=55请输入请输入i i:11 /11 /*用户输入用户输入*/sum=11sum=11从两段程序的运行结果可以看出:当输入从两段程序的运行结果可以看出:当输入i=1i=1

    12、时,时,sum=55sum=55,whilewhile语句和用语句和用do-whiledo-while语句的运行结语句的运行结果相同;但当输入果相同;但当输入i=11i=11时,也就是当第一次执时,也就是当第一次执行循环就不满足循环条件,行循环就不满足循环条件,whilewhile语句和用语句和用do-whiledo-while语句的运行结果不同,因此对于语句的运行结果不同,因此对于do-whiledo-while语句,先执行循环体,再判断是否满语句,先执行循环体,再判断是否满足循环条件,即不管是否满足循环条件均执行足循环条件,即不管是否满足循环条件均执行一次循环体。一次循环体。15 例例 用

    13、格里高利公式求圆周率的近似值,要求精确用格里高利公式求圆周率的近似值,要求精确到最后一项的绝对值小于到最后一项的绝对值小于10-4。分析:这是一个求累加和的问题。循环的算式为:分析:这是一个求累加和的问题。循环的算式为:sum=sum+sum=sum+第第i i项。第项。第i i项用变量项用变量itemitem表示。本题没有显式地表示。本题没有显式地给出循环次数,只是提出了精度要求。在反复计算累加的给出循环次数,只是提出了精度要求。在反复计算累加的过程中,一旦某一项的绝对值小于过程中,一旦某一项的绝对值小于10-410-4(即(即|item|10-4|item|10-4),),就达到了给定的精

    14、度,计算终止。这说明精度要求实际上就达到了给定的精度,计算终止。这说明精度要求实际上给出了循环的结束条件,还需要将其转换为循环条件给出了循环的结束条件,还需要将其转换为循环条件|item|10-4|item|10-4,换句话说,当,换句话说,当|item|10-4|item|10-4时,循环累加时,循环累加itemitem的值,直到的值,直到|item|10-4|item|10-4为止。为止。16#include#include main()main()int flag=1,denominator=1;int flag=1,denominator=1;float item=1.0,pi=0;f

    15、loat item=1.0,pi=0;while(fabs(item)=0.0001)while(fabs(item)=0.0001)item=flag item=flag*1.0/denominator;1.0/denominator;pi=pi+item;pi=pi+item;flag=-flag;flag=-flag;denominator=denominator+2;denominator=denominator+2;pi=pi pi=pi*4;4;printf(pi=%.4fn,pi);printf(pi=%.4fn,pi);174.2.4 4.2.4 实战演练实战演练1统计一个整数

    16、的位数。从键盘输入一个整数,统统计一个整数的位数。从键盘输入一个整数,统计该数的位数。例如,输入计该数的位数。例如,输入12345,输出,输出5;输入;输入-99,输出,输出2。184.3 for4.3 for语句语句问题:找出输入的问题:找出输入的5个整型数中的最大值。个整型数中的最大值。4.3.1 分析与设计分析与设计如输入数据:如输入数据:1,2,3,4,5方法是先设置第一个数为暂时最大,然后逐一比较和方法是先设置第一个数为暂时最大,然后逐一比较和交换。交换。maxi,max=i19例例 找最大数找最大数#include main()int max,x,i;scanf(“%d”,&max

    17、);for(i=1;imax)max=x;printf(“%d”,max);204.3.2 for4.3.2 for循环循环for语句的一般形式为:语句的一般形式为:for(表达式表达式1;表达式;表达式2;表达式;表达式3)语句;语句;for(初始表达式;结束表达式;修改表达式初始表达式;结束表达式;修改表达式)语句;语句;说明:说明:表达式表达式1 1:一般为赋值表达式,为循环控制变量:一般为赋值表达式,为循环控制变量赋初值。赋初值。表达式表达式2 2:一般为关系表达式或逻辑表达式,作:一般为关系表达式或逻辑表达式,作为控制循环结束的条件。为控制循环结束的条件。表达式表达式3 3:一般为赋

    18、值表达式,为循环控制变量:一般为赋值表达式,为循环控制变量增量或减量。增量或减量。21for语句的执行过程(1)(1)先求解表达式先求解表达式1 1。(2)(2)求解表达式求解表达式2 2,若其值为真,若其值为真(值为非值为非0)0),则执行,则执行forfor语句语句中指定的内嵌语句,然后执中指定的内嵌语句,然后执行下面第行下面第(3)(3)步。若为假步。若为假(值值为为0)0),则结束循环,转到第,则结束循环,转到第(5)(5)步。步。(3)(3)求解表达式求解表达式3 3。(4)(4)转回上面第转回上面第(2)(2)步骤继续执步骤继续执行。行。(5)(5)循环结束,执行循环结束,执行fo

    19、rfor语句下语句下面的一个语句。面的一个语句。22例例 唱歌赛有唱歌赛有7名评委评分名评委评分.记分规则为:去掉一个最记分规则为:去掉一个最高分,去掉一个最低分,再算平均分。设按百分制高分,去掉一个最低分,再算平均分。设按百分制计分,试设计一个算分程序。计分,试设计一个算分程序。方法:求出总和、最高分、最低分,然后从总和减去方法:求出总和、最高分、最低分,然后从总和减去最高分和最低分最高分和最低分23#include main()int i,sum=0,score,max=0,min=0;for(i=1;imax)max=score;if(scoremin)min=score;sum=sum

    20、+score;average=(sum-max-min)/(n-2);printf(最高分:最高分:%d,最低分:最低分:%d平均分:平均分:%dn,max,min,average);244.3.4 4.3.4 实战演练实战演练1马克思手稿里有一道有趣的数学问题:有马克思手稿里有一道有趣的数学问题:有30个个人,其中有男人、女人和小孩,在一家饭馆吃饭共人,其中有男人、女人和小孩,在一家饭馆吃饭共花了花了50先令:每个男人花先令:每个男人花3先令,每个女人花先令,每个女人花2先先令,每个小孩花令,每个小孩花1先令,问男人、女人和小孩各有先令,问男人、女人和小孩各有几人?几人?2有一对兔子,从出生

    21、后第三个月起每个月都生有一对兔子,从出生后第三个月起每个月都生一对小兔子,小兔子长到第三个月后每月又生一对一对小兔子,小兔子长到第三个月后每月又生一对小兔子,假如兔子都不死,问小兔子,假如兔子都不死,问20个月内每个月的个月内每个月的兔子总数为多少?兔子总数为多少?3输入一批学生的成绩,找出最高分。输入一批学生的成绩,找出最高分。254.4 循环嵌套输出由输出由“*”组成的组成的5行行5列的矩形,如图列的矩形,如图4-6所示。所示。#include stdio.h#include stdio.hvoid main()void main()int i,j;int i,j;for(i=1;i=5;

    22、i+)for(i=1;i=5;i+)for(j=1;j=5;j+)for(j=1;j=5;j+)printf(printf(*););printf(n);printf(n);274.4 4.4 循环嵌套循环嵌套在循环体内又包含另一个完整的循环结构称为循环嵌套。内层循环中再包含其它循环结构,称为多重循环嵌套。C语言中的三种循环语句(for、while、dowhile)可以互相嵌套,构成所需的多重循环结构。注意:循环嵌套时,内层循环必须被完全包含于外层循环内,不允许循环结构交叉。for(;)for(;)while()while()dodo for(;)for(;)while()while()do

    23、do while();while();for(;)for(;)for(;)for(;)28 例例 打印由打印由“*”组成的三角形。(图形如程序的运行结果所示)组成的三角形。(图形如程序的运行结果所示)分析:该程序要输出分析:该程序要输出5行,所以外层循环和例相同,但每行的列数不同。行,所以外层循环和例相同,但每行的列数不同。每行的列数比上一行多一个,符合外层循环每行的列数比上一行多一个,符合外层循环i的变化规律,可写为:的变化规律,可写为:for(i=1;j=i;j+),完整的程序如下:,完整的程序如下:#include stdio.h#include stdio.hvoid main()vo

    24、id main()int i,j;int i,j;for(i=1;i=5;i+)for(i=1;i=5;i+)for(j=1;j=i;j+)for(j=1;j=ch=A A&ch=&ch=|ch=a a&ch=&ch=if(ch=A A&ch=&ch=|ch=a a&ch=&ch5000)if(s5000)break;break;i+;i+;printf(s=%d,i=%d,s,i);printf(s=%d,i=%d,s,i);34breakbreak语句的使用说明:语句的使用说明:p只能在循环体内和只能在循环体内和switchswitch语句体内使用语句体内使用breakbreak语句。语句

    25、。p在多重嵌套循环中,在多重嵌套循环中,breakbreak语句只能跳出它所在的那一层循环结构,而语句只能跳出它所在的那一层循环结构,而不能同时跳出(或终止)多层循环。例如:不能同时跳出(或终止)多层循环。例如:for(;)for(;)while()while()if()if()break;break;printf(printf(“nn”););p程序运行时,程序运行时,breakbreak语句只能跳出语句只能跳出whilewhile循环结构,从输出语句开始继续循环结构,从输出语句开始继续往下执行程序,而不能跳出往下执行程序,而不能跳出forfor循环结构。循环结构。354.5.3 count

    26、iune语句语句continue语句的一般形式:语句的一般形式:continue;执行过程:终止本次循环的执行,即跳过循环体执行过程:终止本次循环的执行,即跳过循环体中中continuecontinue后面的语句,直接开始下一次循环体后面的语句,直接开始下一次循环体的执行。的执行。36例例 把把100200之间的能被之间的能被10整除的数输出。整除的数输出。分析:为了说明分析:为了说明continuecontinue语句的用法,将语句的用法,将“100100200200之间的能被之间的能被1010整除的数整除的数”设计为如下算法:如果设计为如下算法:如果n n不能被不能被1010整除,则执行整

    27、除,则执行continuecontinue语句结束本次循环,语句结束本次循环,即跳过即跳过continuecontinue语句后的语句后的printf()printf()函数的执行,也函数的执行,也就是不打印出那些不能被就是不打印出那些不能被1010整除的数;只有当整除的数;只有当n n能能被被1010整除时,才将整除时,才将n n打印出来。打印出来。#include stdio.h#include stdio.hvoid main()void main()int n;int n;for(n=100;n=200;n+)for(n=100;n=200;n+)if(n%10!=0)if(n%10!=0)continue;continue;printf(%d,n);printf(%d,n);384.6.4 4.6.4 实战演练实战演练打印出打印出110之间的偶数。之间的偶数。

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:程序设计语言第4章 循环结构.ppt
    链接地址:https://www.163wenku.com/p-7246762.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库