版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,第六章,循环结构程序设计 (一),2,第六章 循环结构程序设计,思考,求1100的累加和。,分析,换一种思路:,sum=1+2+100;,首先设置一个累计器sum,其初值为0,利用sum += n来计算(n依次取1、2、100),只要解决以下3个问题即可: (1)将n的初值置为1; (2)每执行1次“sum += n;”后,n增1; (3)当n增到101时,停止计算。此时,sum的值就是1100的累计和。,sum=sum+n;,3,一、goto语句 二、while语句 三、do-while语句 四、for语句 五、break、continue语句 六、几种循环的比较,主要内容,第六章 循环
2、结构程序设计,4,格式,goto 语句标号,说明,(1) 与if 语句一起构成循环结构。 (2) 不符合结构化程序设计原则,一般不用。,P106,#include void main() int n=1, sum=0; loop: sum += n; n+; if (n=100) goto loop; printf(“sum=%dn”, sum); ,举例,使用goto语句与分语句配合构成循环结构,实现求1100的累加和。,作用:使系统转向标号所在的语句行执行。,标号的定名规则与变量名相同。,一、goto语句,第六章 循环结构程序设计,5,格式,while (表达式) 循环体语句,P107,说
3、明,1、循环体如果包含一个以上的语句,必须使用复合语句形式。 2、在循环体中,必须有使循环条件趋向于不满足(假)的语句。 3、先判断表达式,后执行语句。,?,含义,当表达式为真(非0值)时,执行while语句中的内嵌语句。,执行过程,二、while语句,第六章 循环结构程序设计,6,sum= 55,举例,求110的累加和。,include void main() int i,sum; i=1; sum=0; while (i=10) sum=sum+i; i+; printf(“sum=%5dn”,sum); ,思考,1、如果去掉循环体中的大括号,执行过程将会怎样变化? 2、在循环体中,使循环
4、条件趋向于不满足(假)的语句是哪条?,?,1 求15的累加和. 2 求110的奇数和. 3 求110的偶数和.,二、while语句,第六章 循环结构程序设计,7,格式,do 循环体语句 while (表达式);,P108,说明,1、循环体如果包含一个以上的语句,必须使用复合语句形式。 2、在循环体中,必须有使循环条件趋向于不满足(假)的语句。 3、先执行循环体语句,后判断表达式的值。,?,含义,执行do-while语句中的内嵌语句,直到表达式为假(0)才跳出循环。,执行过程,至少执行一次,三、do-while语句,第六章 循环结构程序设计,8,sum= 55,举例,求110的累加和。,incl
5、ude void main() int i,sum; i=1; sum=0; do sum=sum+i; i+; while (i=10); printf(“sum=%5dn”,sum); ,思考,1、如果去掉循环体中的大括号,执行过程将会怎样变化? 2、在循环体中,使循环条件趋向于不满足(假)的语句是哪条?,三、do-while语句,第六章 循环结构程序设计,9,举例,while和do-while循环的比较。,include void main() int i,sum; scanf(“%d”, ,include void main() int i,sum; scanf(“%d”, ,输入:1
6、,输入:11,sum=55,输出:,sum=55,sum=0,输出:,sum=11,此程序的功能?,什么情况下两者结果相同?,P109,第六章 循环结构程序设计,三、do-while语句,10,格式,for (表达式1;表达式2;表达式3) 语句,P110,for (循环变量赋初值;循环条件;循环变量增值) 语句,执行过程,(1)先求解表达式1; (2)求解表达式2,若其值为真,则 执行循环体语句,然后执行第(3)步;若为假,则结束循环,转到第(5)步; (3)求解表达式3; (4)转向步骤(2); (5)循环结束,执行for语句下面的一个语句。,四、for语句,第六章 循环结构程序设计,11
7、,sum= 55,举例,求110的累加和。,include void main() int i,sum; sum=0; for (i=1;i=10;i+) sum=sum+i; printf(“sum=%5dn”,sum); ,?,1 求15的累加和. 2 求110的奇数和. 3 求110的偶数和.,四、for语句,第六章 循环结构程序设计,12,for (表达式1;表达式2;表达式3) 语句,说明,三个表达式都可以省略。,四、for语句,第六章 循环结构程序设计,13,说明,1,i=1; for(; i=10;i+) sum=sum+i;,2,for (i=1; ;i+) sum=sum+i
8、;,?,3,for (i=1;i=10 ;) sum=sum+i; i+; ,for(i=1; i=10;i+) sum=sum+i;,表达式1可以省略,但其后的分号不可以省略。,没有循环结束条件,构成了死循环,for(i=1; i=10;i+) sum=sum+i;,四、for语句,第六章 循环结构程序设计,14,说明,4,5,for( ; ; ) sum=sum+i;,6,表达式1和表达式3可以是与循环变量无关的表达式。,for( ;i=10 ; ) sum=sum+i; i+; ,7,表达式2一般是关系表达式,也可以是数值或字符表达式。,while(i=10) sum=sum+i; i+
9、 ; ,while (1) sum=sum+i;,表达式1和表达式3可以同时省略,此时等同于while语句。,for(sum=0,i=1;i=100,i+) sum=sum+i;,建议:for语句中只放与 循环控制有关的语句。,四、for语句,第六章 循环结构程序设计,15,格式,while (表达式1) if (表达式2) break; ,举例, . sum=0; for (i=1;i5) break; sum=sum+i; printf(“sum=%5dn”,sum); .,while (表达式1) if (表达式2) conitue; ,结束整个循环,结束本次循环, . sum=0; f
10、or (i=1;i=10;i+) if (i=5) continue; sum=sum+i; printf(“sum=%5dn”,sum); .,五、breakcontinue语句,第六章 循环结构程序设计,16,说明,1、 三种循环语句在处理循环问题时,一般可以相互替代。,2、 对于循环次数固定的问题,用for语句实现比较简单。,3、 对于循环次数不确定的问题,可用while语句或do-while语句实现。,4、 while语句:先判断,后执行。 do-while语句:先执行,后判断。,六、几种循环语句的比较,第六章 循环结构程序设计,17,概念,一个循环体内又包含另一个完整的循环结构,称为
11、循环嵌套。,1 2 3 4 2 4 6 8 3 6 9 12 4 8 12 16,举例,打印乘法口诀表。,#include void main() int i,j; for (i=1;i=4;i+) for (j=1;j=4;j+) printf(“%4d”,i*j); printf(“n”); ,i=1, j=1 1*1 j=2 1*2 j=3 1*3 j=4 1*4 i=2, j=1 2*1 j=2 i=3 i=4,一、循环嵌套,第六章 循环结构程序设计,18,1 2 4 3 6 9 4 8 12 16,#include void main() int i,j; for (i=1;i=4;
12、i+) for (j=1;j=i;j+) printf(“%4d”,i*j); printf(“n”); ,一、循环嵌套,思考1,第六章 循环结构程序设计,19,#include void main() int i,j; for (i=1;i=4;i+) for (j=1;j=5-i;j+) printf(“%4d”,i*j); printf(“n”); ,一、循环嵌套,思考2,1 2 3 4 2 4 6 3 6 4,第六章 循环结构程序设计,20,#include void main() int i,j; for (i=1;i=4;i+) for (j=1;j=4-i;j+) printf(
13、“%4d”, ); for (j=5-i;j=4;j+) printf(“%4d”,i*j); printf(“n”); ,一、循环嵌套,思考3,4 6 8 6 9 12 4 8 12 16,第六章 循环结构程序设计,21,#include void main() int i,j; for (i=1;i=4;i+) for (j=1;j=i-1;j+) printf(“%4d”, ); for (j=i;j=4;j+) printf(“%4d”,i*j); printf(“n”); ,一、循环嵌套,思考4,1 2 3 4 4 6 8 9 12 16,第六章 循环结构程序设计,22,例1,利用公
14、式:/4=1-1/3+1/5-1/7+ 求 的近似值,直到某一项的绝对值小于10-6为止。,#include #include void main() int s; float n,t,pi; t=1;pi=0;n=1.0;s=1; while(fabs(t)1e-6) pi=pi+t; n=n+2; s=-s; t=s/n; pi=pi*4; printf(pi=%10.6fn,pi); ,思考:使用那一种循环控制语句?,二、程序举例,第六章 循环结构程序设计,pi=1-1/3+ 输出4* pi s=1(-1) n=1,3,5,7 t=s/n,23,例2,求Fibonacci数列的前40个数
15、。,#include void main() long int f1,f2; int i; f1=1;f2=1; for(i=1;i=20;i+) printf(%12ld%12ld,f1,f2); if(i%2=0) printf(n); f1=f1+f2; f2=f2+f1; ,特点:第1、2个数为1、1。从第三个数开始,该数是其前面两个数之和。 F1=1 (n=1) F2=2 (n=2) Fn=Fn-1+Fn-2 (n=3),P116,1 1 2 3 5 8 13 21 34 55 89 144 ,二、程序举例,第六章 循环结构程序设计,24,例3,判断m是否为素数。,素数(质数): 只
16、能被1和它本身整除的数。,判别方法: 57:若256之间的每一个数都除不开56,则56为素数,否则56不是素数。 m, k=m-1,i=2k : 若每一个 i 的值都除不开m,则m为素数,否则m不是素数。,flag=1; k=m-1; for (i=2;i=k;i+) if (m%i=0) flag=0; if (flag=1) printf(“yes!”); else printf(“no!”);,k=m-1; for (i=2;i=k+1) printf(“yes!”); else printf(“no!”);,k=m-1; k=m/2;(m+1)/2; k=sqrt(m);sqrt(m+1),二、程序举例,第六章 循环结构程序设计,25,例3,输出 101200之间的全部素数。,#include #include void main() int m,k,i,n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 化学发光检测技术
- 2026年急诊分诊评估标准与流程优化实训
- 2026年护理质量改进PDCA循环实操案例
- 2026年心理护理在肿瘤患者全程管理中应用
- 《GAT 2143-2024法庭科学 涉火案件现场勘查环境安全评估规程》专题研究报告
- 2026年美容院品牌代理协议
- 企业人力资源绩效管理指南(标准版)
- 企业质量管理处罚制度
- 医疗机构信息化建设规范(标准版)
- 餐饮业员工培训与绩效评估手册(标准版)
- 对招标文件及合同条款的认同声明
- 物业代收水电费委托书
- 2024至2030年高强度快硬硫铝酸盐水泥项目投资价值分析报告
- 制造业企业质量管理能力评估规范
- 13J933-2体育场地与设施(二)
- DL-T-710-2018水轮机运行规程
- 电机常见故障分析及处理措施
- HGT 20714-2023 管道及仪表流程图(P ID)安全审查规范 (正式版)
- 《叉车安全作业培训》课件
- 技术入股合作协议合同
- 建筑砌筑工(中级)理论考试题库及答案
评论
0/150
提交评论