c程序设计9循环结构程序设计2

上传人:cl****1 文档编号:570161098 上传时间:2024-08-02 格式:PPT 页数:61 大小:751.50KB
返回 下载 相关 举报
c程序设计9循环结构程序设计2_第1页
第1页 / 共61页
c程序设计9循环结构程序设计2_第2页
第2页 / 共61页
c程序设计9循环结构程序设计2_第3页
第3页 / 共61页
c程序设计9循环结构程序设计2_第4页
第4页 / 共61页
c程序设计9循环结构程序设计2_第5页
第5页 / 共61页
点击查看更多>>
资源描述

《c程序设计9循环结构程序设计2》由会员分享,可在线阅读,更多相关《c程序设计9循环结构程序设计2(61页珍藏版)》请在金锄头文库上搜索。

1、C 程序设计授课教师授课教师 孙向群孙向群循环结构程序设计循环结构程序设计专业名称:食品质量与平安第第5章章 循环结构程序设计循环结构程序设计5.1 为什么需要循环控制5.2 用while语句实现循环5.3 用do-while语句实现循环5.4 用for 语句实现循环5.5 循环的嵌套5.6 几种循环的比较5.7 改变循环执行的状态5.8 循环程序举例程序设计程序设计Programming in CProgramming in C5.7 改变循环执行的状态改变循环执行的状态5.7.1 用break语句提前终止循环5.7.2 用continue语句提前结束本次循环5.7.3 break语句和co

2、ntinue语句的区别程序设计程序设计Programming in CProgramming in C5.7.1 用用break语句提前终止循环语句提前终止循环vbreak语句可以用来从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句。程序设计程序设计Programming in CProgramming in Cv 例5.4 在全系1000学生中,征集慈善募捐,当总数到达10万元时就结束,统计此时捐款的人数,以及平均每人捐款的数目。5.7.1 用用break语句提前终止循环语句提前终止循环程序设计程序设计Programming in CProgramming in Cv编程思路:v

3、循环次数不确定,但最多循环1000次v在循环体中累计捐款总数v用if语句检查是否到达10万元v如果到达就不再继续执行循环,终止累加v计算人均捐款数5.7.1 用用break语句提前终止循环语句提前终止循环程序设计程序设计Programming in CProgramming in Cv编程思路:变量amount,用来存放捐款数变量total,用来存放累加后的总捐款数变量aver,用来存放人均捐款数定义符号常量SUM代表1000005.7.1 用用break语句提前终止循环语句提前终止循环程序设计程序设计Programming in CProgramming in C#include #defi

4、ne SUM 100000int main() float amount,aver,total; int i; for (i=1,total=0;i=SUM) break; 指定符号常量指定符号常量SUM代表代表1000005.7.1 用用break语句提前终止循环语句提前终止循环程序设计程序设计Programming in CProgramming in Caver=total / i ; printf(“num=%dnaver=%10.2fn“,i,aver); return 0;5.7.1 用用break语句提前终止循环语句提前终止循环程序设计程序设计Programming in CPr

5、ogramming in C#include #define SUM 100000int main() float amount,aver,total; int i; for (i=1,total=0;i=SUM) break; 应该执行应该执行1000次次5.7.1 用用break语句提前终止循环语句提前终止循环程序设计程序设计Programming in CProgramming in C aver=total / i ; printf(“num=%dnaver=%10.2fn“,i,aver); return 0;5.7.1 用用break语句提前终止循环语句提前终止循环程序设计程序设计

6、Programming in CProgramming in C#include #define SUM 100000int main() float amount,aver,total; int i; for (i=1,total=0;i=SUM) break; 到达到达10万,提前结束循环万,提前结束循环5.7.1 用用break语句提前终止循环语句提前终止循环程序设计程序设计Programming in CProgramming in C aver=total / i ; printf(“num=%dnaver=%10.2fn“,i,aver); return 0;5.7.1 用用bre

7、ak语句提前终止循环语句提前终止循环程序设计程序设计Programming in CProgramming in C#include #define SUM 100000int main() float amount,aver,total; int i; for (i=1,total=0;i=SUM) break; 5.7.1 用用break语句提前终止循环语句提前终止循环程序设计程序设计Programming in CProgramming in C aver=total / i ; printf(“num=%dnaver=%10.2fn“ ,i,aver); return 0;实际捐款人数

8、实际捐款人数5.7.1 用用break语句提前终止循环语句提前终止循环程序设计程序设计Programming in CProgramming in C#include #define SUM 100000int main() float amount,aver,total; int i; for (i=1,total=0;i=SUM) break; 只能用于循环语句和只能用于循环语句和switch语句之中,而不能语句之中,而不能单独单独使用使用5.7.1 用用break语句提前终止循环语句提前终止循环程序设计程序设计Programming in CProgramming in C aver=t

9、otal / i ; printf(“num=%dnaver=%10.2fn“,i,aver); return 0;5.7.1 用用break语句提前终止循环语句提前终止循环程序设计程序设计Programming in CProgramming in C5.7.2 用用continue语句提前结束本次循环语句提前结束本次循环v有时并不希望终止整个循环的操作,而只希望提前结束本次循环,而接着执行下次循环。这时可以用continue语句程序设计程序设计Programming in CProgramming in C 例5.5 要求输出100200之间的不能被3整除的数。编程思路:对100到200之

10、间的每一个整数进行检查如果不能被3整除,输出,否那么不输出无论是否输出此数,都要接着检查下一个数(直到200为止)。5.7.2 用用continue语句提前结束本次循环语句提前结束本次循环程序设计程序设计Programming in CProgramming in CNn=100n200Yn能被能被3整除整除Nn=n+1输出输出nYfor(n=100;n=200;n+) if (n%3=0) continue; printf(%d ,n); 5.7.2 用用continue语句提前结束本次循环语句提前结束本次循环程序设计程序设计Programming in CProgramming in C5

11、.7.3 break语句和语句和continue语句的区别语句的区别vcontinue语句只结束本次循环,而不是终止整个循环的执行vbreak语句结束整个循环过程,不再判断执行循环的条件是否成立程序设计程序设计Programming in CProgramming in CN表达式表达式1Y表达式表达式2NYN表达式表达式1Y表达式表达式2NYbreak语句语句continue语句语句强行退出循环强行退出循环只结束本次循环只结束本次循环程序设计程序设计Programming in CProgramming in C例5.6 输出以下4*5的矩阵。 1 2 3 4 5 2 4 6 8 10 3

12、6 9 12 15 4 8 12 16 205.7.3 break语句和语句和continue语句的区别语句的区别程序设计程序设计Programming in CProgramming in Cv解题思路:可以用循环的嵌套来处理此问题用外循环来输出一行数据用内循环来输出一列数据按矩阵的格式(每行5个数据)输出5.7.3 break语句和语句和continue语句的区别语句的区别程序设计程序设计Programming in CProgramming in C#include int main() int i,j,n=0; for (i=1;i=4;i+) for (j=1;j=5;j+,n+)

13、if (n%5=0) printf (“n); printf (%dt,i*j); printf(n); return 0;累计输出数据的个数累计输出数据的个数控制控制一行内一行内输输出出5个数据个数据5.7.3 break语句和语句和continue语句的区别语句的区别程序设计程序设计Programming in CProgramming in C#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); r

14、eturn 0;双重循环双重循环5.7.3 break语句和语句和continue语句的区别语句的区别程序设计程序设计Programming in CProgramming in C#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行行5.7.3 break语句和语句和continue语句的区别语句的区别程序设计程序设计Programming in CProgram

15、ming in C#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个数据个数据5.7.3 break语句和语句和continue语句的区别语句的区别程序设计程序设计Programming in CProgramming in C#include int main() int i,j,n=0; for (i=1;i=4;i+) for (j=1;j=5;

16、j+,n+) if (n%5=0) printf (“n); printf (%dt,i*j); printf(n); return 0;i=1时时j由由1变到变到5i*j的值是的值是1,2,3,4,55.7.3 break语句和语句和continue语句的区别语句的区别程序设计程序设计Programming in CProgramming in C#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); r

17、eturn 0;i=2时时j也也由由1变到变到5i*j的值是的值是2,4,6,8,10如何修改程序,不输如何修改程序,不输出第一行的空行?出第一行的空行?5.7.3 break语句和语句和continue语句的区别语句的区别程序设计程序设计Programming in CProgramming in C#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 & j=1) b

18、reak; 遇到第遇到第3行第行第1列,列,终止内循环终止内循环5.7.3 break语句和语句和continue语句的区别语句的区别程序设计程序设计Programming in CProgramming in C#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 & j=1) continue; 原来第原来第3行第行第1个个数据数据3没有输出没有输出5.7.3 bre

19、ak语句和语句和continue语句的区别语句的区别程序设计程序设计Programming in CProgramming in C5.8 循环程序举例循环程序举例 例5.7用 公式求 的近似值,直到发现某一项的绝对值小于10-6 为止(该项不累计加)。程序设计程序设计Programming in CProgramming in Cv解题思路:v求 近似值的方法很多,此题是一种v其他方法:5.8 循环程序举例循环程序举例程序设计程序设计Programming in CProgramming in Cv每项的分子都是1v后一项的分母是前一项的分母加2v第1项的符号为正,从第2项起,每一项的符号与

20、前一项的符号相反5.8 循环程序举例循环程序举例程序设计程序设计Programming in CProgramming in Csign=1,pi=0,n=1,term=1当当term 10-6pi=pi+termn=n+1sing=-signterm=sign/npi=pi*4输出输出pi5.8 循环程序举例循环程序举例程序设计程序设计Programming in CProgramming in C#include #include int main() int sign=1; double pi=0,n=1,term=1; while(fabs(term)=1e-6) pi=pi+term

21、; n=n+2; sign=-sign; term=sign/n; pi=pi*4; printf(pi=%10.8fn,pi); return 0;求绝对值的函数求绝对值的函数只保证前只保证前5位小数是准确的位小数是准确的5.8 循环程序举例循环程序举例程序设计程序设计Programming in CProgramming in C#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;

22、pi=pi*4; printf(pi=%10.8fn,pi); return 0;改为改为1e-85.8 循环程序举例循环程序举例程序设计程序设计Programming in CProgramming in C 例5.8 求费波那西(Fibonacci)数列的前40个数。这个数列有如下特点:第1、2两个数为1、1。从第3个数开始,该数是其前面两个数之和。即:5.8 循环程序举例循环程序举例程序设计程序设计Programming in CProgramming in Cv这是一个有趣的古典数学问题:有一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假设所有

23、兔子都不死,问每个月的兔子总数为多少?5.8 循环程序举例循环程序举例程序设计程序设计Programming in CProgramming in C第几个月小兔子对数中兔子对数老兔子对数兔子总数1100120101310124111352125632387535135.8 循环程序举例循环程序举例程序设计程序设计Programming in CProgramming in C输出输出f1,f2For i=1 to 38f3=f1+f2输出输出f3f1=f2f2=f3f1=1,f2=15.8 循环程序举例循环程序举例程序设计程序设计Programming in CProgramming in

24、C#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;代码可改进代码可改进5.8 循环程序举例循环程序举例程序设计程序设计Programming in CProgramming in C#include int main() int f1=1,f2=1; int i; for(i=1; i=20; i+) printf(%12d %12d ,f1,f2); if(i%

25、2=0) printf(n); f1=f1+f2; f2=f2+f1; return 0; 5.8 循环程序举例循环程序举例程序设计程序设计Programming in CProgramming in C 例5.9输入一个大于3的整数n,判定它是否素数(prime,又称质数)。解题思路:让n被i整除(i的值从2变到n-1)如果n能被2(n-1)之中任何一个整数整除,那么表示n肯定不是素数,不必再继续被后面的整数除,因此,可以提前结束循环注意:此时i的值必然小于n5.8 循环程序举例循环程序举例程序设计程序设计Programming in CProgramming in CNNYn=i+1输入输

26、入ni=2i n-1Yn被被i整除整除i a输出不是素数输出不是素数Y输出是素数输出是素数N程序设计程序设计Programming in CProgramming in C#include int main() int n,i; printf(“n=?); scanf(%d,&n); for (i=2;i=n-1;i+) if(n%i=0) break; if(in) printf(%d is notn,n); else printf(%d isn,n); return 0;5.8 循环程序举例循环程序举例程序设计程序设计Programming in CProgramming in C#inc

27、lude int main() int n,i; printf(“n=?); scanf(%d,&n); for (i=2;i=n-1;i+) if(n%i=0) break; if(in) printf(%d is notn,n); else printf(%d isn,n); return 0;k=sqrt(n);5.8 循环程序举例循环程序举例程序设计程序设计Programming in CProgramming in C#include int main() int n,i,k; printf(“n=?); scanf(%d,&n); for (i=2; i=k; i+) if(n%i

28、=0) break; if(in) printf(%d is notn,n); else printf(%d isn,n); return 0;k=sqrt(n);#include 5.8 循环程序举例循环程序举例程序设计程序设计Programming in CProgramming in C#include int main() int n,i,k; printf(“n=?); scanf(%d,&n); for (i=2; i=k; i+) if(n%i=0) break; if(i=k) printf(%d is notn,n); else printf(%d isn,n); retur

29、n 0;k=sqrt(n);#include 5.8 循环程序举例循环程序举例程序设计程序设计Programming in CProgramming in C 例5.10 求100200间的全部素数。v解题思路:使用例5.9的算法在例5.9程序中只要增加一个外循环,先后对100200间的全部整数一一进行判定即可5.8 循环程序举例循环程序举例程序设计程序设计Programming in CProgramming in C for(n=101;n=200;n=n+2) k=sqrt(n); for (i=2;i=k+1) printf(%d ,n); m=m+1; if(m%10=0) prin

30、tf(“n); 只对奇数进行检查只对奇数进行检查控制每行输出控制每行输出10个数据个数据5.8 循环程序举例循环程序举例程序设计程序设计Programming in CProgramming in C5.8 循环程序举例循环程序举例 例5.11 译密码。为使电文保密,往往按一定规律将其转换成密码,收报人再按约定的规律将其译回原文。A B C D E F G W X Y Zv非字母字符保持原状不变v输入一行字符,要求输出其相应的密码程序设计程序设计Programming in CProgramming in Cv解题思路:问题的关键有两个:v (1) 决定哪些字符不需要改变,哪些字符需要改变,如

31、果需要改变,应改为哪个字符v处理的方法是:输入一个字符给字符变量c,先判定它是否字母(包括大小写),假设不是字母,不改变c的值;假设是字母,那么还要检查它是否W到Z的范围内(包括大小写字母)。如不在此范围内,那么使变量c的值改变为其后第4个字母。如果在W到Z的范围内,那么应将它转换为AD(或ad)之一的字母。c=getchar(); 程序设计程序设计Programming in CProgramming in Cv解题思路:问题的关键有两个:v (1) 决定哪些字符不需要改变,哪些字符需要改变,如果需要改变,应改为哪个字符v处理的方法是:输入一个字符给字符变量c,先判定它是否字母(包括大小写)

32、,假设不是字母,不改变c的值;假设是字母,那么还要检查它是否W到Z的范围内(包括大小写字母)。如不在此范围内,那么使变量c的值改变为其后第4个字母。如果在W到Z的范围内,那么应将它转换为AD(或ad)之一的字母。if(c=a & c=A & c=W & c=w & c=a & c=A & c=W & c=w & c=A & c=a & c=Z & cz) c=c-26; printf(%c,c); 不能少不能少5.8 循环程序举例循环程序举例程序设计程序设计Programming in CProgramming in C告诉我,我会忘掉。教导我,我会记告诉我,我会忘掉。教导我,我会记住。让我参与,我会掌握。住。让我参与,我会掌握。本杰明本杰明富兰克林富兰克林Benjamin Franklin

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号