ImageVerifierCode 换一换
格式:PPT , 页数:62 ,大小:830KB ,
资源ID:8010021      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-8010021.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第5章 循环结构程序设计--4.ppt)为本站会员(tkhy51908)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

第5章 循环结构程序设计--4.ppt

1、第5章 循环结构程序设计,本章内容,三种循环语句whiledowhilefor 循环嵌套 改变循环执行状态: break continue,5.1为什么需要循环控制,在程序所处理的问题中常常遇到需要重复处理的问题 要向计算机输入全班50个学生的成绩 分别统计全班50个学生的平均成绩 求30个整数之和 教师检查30个学生的成绩是否及格,5.1为什么需要循环控制,例如:全班有50个学生,统计各学生三门课的平均成绩。,scanf(“%f,%f,%f”,输入学生1的三门课成绩,并计算平均值后输出,scanf(“%f,%f,%f”,输入学生2的三门课成绩,并计算平均值后输出,要对50个学生进行相同操作,

2、重复50次,大多数的应用程序都会包含循环结构 循环结构和顺序结构、选择结构是结构化程序设计的三种基本结构,它们是各种复杂程序的基本构造单元,5.2用while语句实现循环,全班有50个学生,统计各学生三门课的平均成绩。,i=1,i50,输入一个学生成绩,求一个学生平均成绩,输出一个学生平均成绩,i增1,Y,N,用while循环结构实现,while(i=50) scanf ;aver= ;printf ;i+; ,while语句的一般形式如下:while (表达式) 语句,循环体,while语句的一般形式如下:while (表达式) 语句,“真”时执行循环体语句 “假”时不执行,循环条件表达式,

3、while循环的特点是: 先判断条件表达式,后执行循环体语句,例5.1求1+2+3+100,即,#include int main() int i=1,sum=0; while (i=100) sum=sum+i; i+; printf(“sum=%dn“,sum); return 0; ,复合语句,不能少,#include int main() int i=1,sum=0; while (i=100) sum=sum+i; i+; printf(“sum=%dn“,sum); return 0; ,不能丢,否则循环永不结束,5.3用do-while语句实现循环,do-while语句的特点:先

4、无条件地执行循环体,然后判断循环条件是否成立 do-while语句的一般形式为:do语句while (表达式);,表达式,Y,N,循环体语句,5.3用do-while语句实现循环,例5.2 用dowhile语句求: 1+2+3+100,即,#include int main() int i=1,sum=0;do sum=sum+i;i+;while(i=100);printf(“sum=%dn“,sum);return 0; ,例5.3 while和do-while循环的比较。,int i,sum=0; printf(“i=?”); scanf(“%d”,int i,sum=0; printf

5、(“i=?”); scanf(“%d”,当while后面的表达式的第一次的值为“真”时,两种循环得到的结果相同;否则不相同,5.4用for 语句实现循环,for语句不仅可以用于循环次数已经确定的情况,还可以用于循环次数不确定而只给出循环结束条件的情况 for语句完全可以代替while语句,printf(“%d “, i );,i+,i=100,i=1,5.4用for 语句实现循环,for (i=1;i=100;i+) printf(“%d “, i ); ,i 100,Y,N,i=i+1,i=1,输出i,5.4用for 语句实现循环,for语句的一般形式为for(表达式1;表达式2;表达式3)

6、 语句,设置初始条件,只执行一次。可以为零个、一个或多个变量设置初值执行,5.4用for 语句实现循环,for语句的一般形式为for(表达式1;表达式2;表达式3) 语句,循环条件表达式,用来判定是否继续循环。在每次执行循环体前先执行此表达式,决定是否继续执行循环,5.4用for 语句实现循环,for语句的一般形式为for(表达式1;表达式2;表达式3) 语句,作为循环的调整器,例如使循环变量增值,它是在执行完循环体后才进行的,5.4用for 语句实现循环,for(i=1;i=100;i+) sum=sum+i; 等价于 i=1; while(i=100) sum=sum+i;i+; ,用fo

7、r语句更简单、方便,5.4用for 语句实现循环,for(表达式1;表达式2;表达式3) 语句,一个或两个或三个表达式均可以省略,5.4用for 语句实现循环,for (sum=0 ; i=100; i+) sum=sum+i;,与循环变量无关 合法,5.4用for 语句实现循环,for(sum=0,i=1 ; i=100; i+) sum=sum+i;,逗号表达式 合法,for(i=0,j=100 ; i=j; i+,j- ) k=i+j;,5.4用for 语句实现循环,for(i=0; (c=getchar()!=n; i+=c);,合法,for( ; (c=getchar()!=n; )

8、printf(%c,c);,5.5循环的嵌套,一个循环体内又包含另一个完整的循环结构,称为循环的嵌套 内嵌的循环中还可以嵌套循环,这就是多层循环 3种循环(while循环、dowhile循环和for循环)可以互相嵌套,5.7 改变循环执行的状态,5.7.1 用break语句提前终止循环 5.7.2 用continue语句提前结束本次循环 5.7.3 break语句和continue语句的区别,5.7.1 用break语句提前终止循环,break语句可以用来跳出循环体,即提前结束循环,接着执行循环下面的语句,5.7.1 用break语句提前终止循环,例 超市促销某件商品,有100人在排队,每个人

9、购买数量不限,当购买总数达到1000时促销结束,统计此时购买到商品的人数,以及平均每人购买的数目。,#include # define M 100 # define N 1000 int main() int i,amount,total=0; float ave;for (i=1;i=N) total=N;break; aver=total / i ; printf(“%dnaver=%10.2fn“,i,aver); return 0; ,指定符号常量M代表100,5.7.2 用continue语句提前结束本次循环,有时并不希望终止整个循环的操作,而只希望提前结束本次循环,而接着执行下次循

10、环。这时可以用continue语句,5.7.2 用continue语句提前结束本次循环,例:接上例,如果某个人购买数量超过所能提供的总数,就直接去大宗购物,接着下个人买。, int main() int i,j,amount,total=0;for (i=1,j=0;iN) j+=1;continue;total+=amount;if (total=N) total=N;break; printf(“%d个人购买n每个人平均购买%.2fn“,i-j,total*1.0/(i-j); ,5.7.3 break语句和continue语句的区别,continue语句只结束本次循环,而不是终止整个循环

11、的执行 break语句结束整个循环过程,不再判断执行循环的条件是否成立,例5.6 输出以下4*5的矩阵。1 2 3 4 52 4 6 8 103 6 9 12 154 8 12 16 20,#include int main() int i,j,n=0;for (i=1;i=4;i+) for (j=1;j=5;j+,n+) if (n%5=0) printf (“n”); printf (“%dt“,i*j); printf(“n“); return 0; ,累计输出数据的个数,控制一行内输出5个数据,#include int main() int i,j,n=0;for (i=1;i=4;

12、i+) for (j=1;j=5;j+,n+) if (n%5=0) printf (“n”); printf (“%dt“,i*j); printf(“n“); return 0; ,双重循环,#include int main() int i,j,n=0;for (i=1;i=4;i+) for (j=1;j=5;j+,n+) if (n%5=0) printf (“n”); printf (“%dt“,i*j); printf(“n“); return 0; ,控制输出4行,#include int main() int i,j,n=0;for (i=1;i=4;i+) for (j=1

13、;j=5;j+,n+) if (n%5=0) printf (“n”); printf (“%dt“,i*j); printf(“n“); return 0; ,控制每行中输出5个数据,#include int main() int i,j,n=0;for (i=1;i=4;i+) for (j=1;j=5;j+,n+) if (n%5=0) printf (“n”); printf (“%dt“,i*j); printf(“n“); return 0; ,i=1时,j由1变到5 i*j的值是1,2,3,4,5,#include int main() int i,j,n=0;for (i=1;

14、i=4;i+) for (j=1;j=5;j+,n+) if (n%5=0) printf (“n”); printf (“%dt“,i*j); printf(“n“); return 0; ,i=2时,j也由1变到5 i*j的值是2,4,6,8,10,如何修改程序,不输出第一行的空行?,#include int main() int i,j,n=0;for (i=1;i=4;i+) for (j=1;j=5;j+,n+) if (n%5=0) printf (“n”);printf (“%dt“,i*j); printf(“n“); return 0; ,if (i=3 ,遇到第3行第1列,

15、终止内循环,#include int main() int i,j,n=0;for (i=1;i=4;i+) for (j=1;j=5;j+,n+) if (n%5=0) printf (“n”);printf (“%dt“,i*j); printf(“n“); return 0; ,if (i=3 ,原来第3行第1个数据3没有输出,5.8循环程序举例,例5.7用 公式求 的近似值,直到发现某一项的绝对值小于10-6 为止(该项不累计加)。,#include #include int main() int sign=1; double pi=0,n=1,term=1;while(fabs(te

16、rm)=1e-6) pi=pi+term;n=n+2; sign=-sign; term=sign/n; pi=pi*4; printf(“pi=%10.8fn“,pi); return 0; ,求绝对值的函数,只保证前5位小数是准确的,#include #include int main() int sign=1; double pi=0,n=1,term=1;while(fabs(term)=1e-6) pi=pi+term;n=n+2; sign=-sign; term=sign/n; pi=pi*4; printf(“pi=%10.8fn“,pi); return 0; ,改为1e-8

17、,例5.8 求费波那西(Fibonacci)数列的前40个数。这个数列有如下特点:第1、2两个数为1、1。从第3个数开始,该数是其前面两个数之和。即:,这是一个有趣的古典数学问题: 有一对兔子,从出生后第3个月起每个月都生一对兔子。 小兔子长到第3个月后每个月又生一对兔子。 假设所有兔子都不死,问每个月的兔子总数为多少?,#include int main() int f1=1,f2=1,f3; int i;printf(“%12dn%12dn“,f1,f2);for(i=1; i=38; i+) f3=f1+f2;printf(“%12dn“,f3);f1=f2;f2=f3;return 0

18、; ,例5.9输入一个大于3的整数n,判定它是否素数(prime,又称质数)。 解题思路: 让n被i整除(i的值从2变到n-1) 如果n能被2(n-1)之中任何一个整数整除,则表示n肯定不是素数,不必再继续被后面的整数除,因此,可以提前结束循环 注意:此时i的值必然小于n,#include int main() int n,i;printf(“n=?“); scanf(“%d“, ,#include int main() int n,i;printf(“n=?“); scanf(“%d“, ,k=sqrt(n);,#include int main() int n,i,k;printf(“n=

19、?“); scanf(“%d“, ,k=sqrt(n);,#include ,#include int main() int n,i,k;printf(“n=?“); scanf(“%d“, ,k=sqrt(n);,#include ,例5.11 译密码。为使电文保密,往往按一定规律将其转换成密码,收报人再按约定的规律将其译回原文。A B C D E F G W X Y Z非字母字符保持原状不变 输入一行字符,要求输出其相应的密码,解题思路:问题的关键有两个:(1) 决定哪些字符不需要改变,哪些字符需要改变,如果需要改变,应改为哪个字符(2) 怎样使c改变为所指定的字母?,char c; c=getchar(); while(c!=n) if(c=a ,可以改进程序,char c; while(c=getchar()!=n) if(c=A ,不能少,

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报