2.2.8循环结构程序设计 - 循环结构程序设计-专题辅导课件_第1页
2.2.8循环结构程序设计 - 循环结构程序设计-专题辅导课件_第2页
2.2.8循环结构程序设计 - 循环结构程序设计-专题辅导课件_第3页
2.2.8循环结构程序设计 - 循环结构程序设计-专题辅导课件_第4页
2.2.8循环结构程序设计 - 循环结构程序设计-专题辅导课件_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

C程序设计专题辅导课

循环结构程序设计

内容提要:循环结构3.1for语句一般形式:

for(表达式1;表达式2;表达式3)

循环体语句注意:for语句是一个整体,中间不能被打断;循环体语句必须是一条语句(或复合语句)表达式1:初始化,循环开始之前执行1次表达式2:循环条件,每次循环前先判断其值3.1for语句表达式3:每次循环体语句执行后,执行1次3个表达式及循环体语句的执行顺序和书写顺序不同3个表达式都可以省略,但分隔符“;”不能省略表达式2省略表示循环条件永远成立for(;;)while(1)3.1for语句常用循环变量控制形式:sum=0;

for(i=1;i<=100;i++)sum=sum+i;注意:循环变量i的值变化与循环执行的次数循环体语句向右缩进对齐循环过程中务必确保循环条件最终不成立3.2while语句一般形式:

while(表达式)

循环体语句注意:while语句是一个整体,中间不能被打断;循环体语句必须是一条语句(或复合语句)表达式:可以是任意表达式每次循环开始前,都要先计算表达式的值3.3do-while语句一般形式:

do

循环体语句while(表达式)注意:do-while语句是整体,中间不能被打断;循环体语句必须是一条语句(或复合语句)表达式:可以是任意表达式先执行循环体语句,再判断表达式真假3.4三种循环语句的选择理论上:三者可以相互转换原则上:if(循环次数已知) 使用for语句else { /*循环次数未知*/

if(循环条件在进入循环时明确) 使用while语句

else /*循环条件需要在循环体中明确*/ 使用do-while语句}3.5break语句和continue语句作用:break结束循环,即使还剩有正常循环次数continue结束本次循环,提前进入到下一次循环适用范围:break可用于循环和switch语句中Continue只能用于循环语句中3.6嵌套循环一个循环语句的循环体也是循环语句:sum=0;/*求1!+2!+…+n!*/for(i=1;i<=n;i++){item=1;for(j=1;j<=i;j++)item=item*j;sum=sum+item;}i循环(外循环)/j循环(内循环)变化关系3.7循环结构程序设计要点循环体:归纳出哪些操作需要反复执行循环控制条件:这些操作在什么情况下重复执行选择循环结构for、while、do-while3.8举例(1)1.判断某个整数n是否“水仙花”数(即各位数字的立方和等于该数本身)。【分析】关键是求各位数字立方和:对整数n求第i位数字:bi=n%10,n=n/10求各位数字立方和:sum=∑bi*bi*bi循环体:bi=n%10,n=n/10,∑bi*bi*bi循环条件:n!=0

循环次数未知且至少做1次:用do-while3.8举例(2)#include<stdio.h>int

main(void){

intn,m,b,sum;

scanf(“%d”,&n);sum=0;m=n;/*m初始化为n*/do{b=m%10;m=m/10;sum=sum+b*b*b;}while(m!=0);if(sum==n)printf(“Yes!\n”);elseprintf(“No!\n”);return0;}

3.8举例(3)2.求1~10000之间所有的“水仙花”数。【分析】两重循环:外循环n(n=1~10000):已知循环次数-for循环条件:n<=10000循环体:判断n是否水仙花数,并打印内循环:判断n是否水仙花数3.8举例(4)#include<stdio.h>int

main(void){

intn,m,b,sum;for(n=1;n<=10000;n++){sum=0;m=n;/*m初始化为n*/do{b=m%10;m=m/10;sum=sum+b*b*b;}while(m!=0);if(sum==n)printf(“%d\n”,n);}return0;}

3.8举例(5)3.求两个整数m和n的最小公倍数。【分析】思路:先令最小公倍数lcm=m,然后判断lcm是否能被n整除,若是,则lcm即最小公倍数;否则,lcm=lcm+m,直到lcm能够被n整除。显然用循环:循环体:lcm=lcm+m;循环条件:lcm%n!=0循环选择:while3.8举例(6)#include<stdio.h>int

main(void){

intn,m,lcm;

scanf(“%d%d”,&m,&n);lcm=m;while(lcm%n!=0)lcm=lcm+m;

printf(“%d\n”,lcm);return0;}

3.8举例(7)4.猜价格游戏:在给定时间内猜出一件商品的价格(假设价格<=1000元,且是整数)。条件:当报出一个价格时,系统提示:高了、低了或正确。请编程实现。【分析】最简单的方法:从1开始,每次加1往上报——太慢!二分法:先把【1,1000】作为一个区间,报中间数,根据系统提示选择价格在哪个半区,然后重新设定新的区间—每次减少一半可能3.8举例(8)【分析-续】二分法原理:设一个区间的左右边界分别为low和high,假设价格为x,取区间中间值:mid=(low+high)/2;若x<mid,可知:x在左半区,则调整新区间边界:low不变,high=mid-1,在新区间继续找;若x>mid,可知:x在右半区,则调整新区间边界:low=mid+1,high不变在新区间继续找;若x==mid,则找到。循环体:mid取值,判断mid的高低循环条件:区间存在(low<=high),且还没找到!!循环选择:while语句3.8举例(9)#include<stdio.h>int

main(void){

int

low,high,mid,x;

scanf(“%d”,&x);low=1;high=1000;while(low<=high){mid=(low+high)/2;if(x<mid)high=mid-1;/*x在左半区*/elseif(x>mid)low=mid+1;/*x在右半区*/elsebreak;

温馨提示

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

评论

0/150

提交评论