17-循环嵌套.ppt_第1页
17-循环嵌套.ppt_第2页
17-循环嵌套.ppt_第3页
17-循环嵌套.ppt_第4页
17-循环嵌套.ppt_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、第4章 循环控制,C语言程序设计,课程讲义,上一章节课程回顾,1、break、continue语句,Break 结束整个循环,并退出。 Continue结束当次循环,继续下一次循环。,本次课内容:,循环的嵌套(多重循环),4.6 循环嵌套,当循环体中又包含了另一个完整的循环语句时 称为循环的嵌套。,for循环,while 循环,do-while 循环,注意: 1、三种循环可互相嵌套,层数不限。 2、外层循环可包含两个以上内循环,但不能相互交叉。,这种在一个循环体内又包含循环结构称为循环嵌套。内层循环体中再包含新循环结构称为多重循环嵌套。,i=1; while(i=1000) k=1; whil

2、e(k=5) prinf(“w”); k+; i+; ,(2) do do while( ); . while( );,(3) while() do do while( ); while( ); . ,(4) for( ; ;) do while(); while() . ,但以下循环:,while ( ) while ( ) ,for (; ; ) for (; ; ) ,不能理解为正确的形式。要注意语句的包含关系。,例1 编写程序:在一行内输出整数1到20,并连续输出5行。 #include stdio.h main() int i,j; for (i=1;i=5;i+) /* 一共五行

3、*/ for (j=1;j=20;j+) /*每一行输出的内容*/ printf(%d ,j); printf(“n”); /*输完一行,换另一行*/ ,4.6 多重循环,例2 编写程序输出下列图形: 1 22 333 4444 55555 666666 7777777 88888888 999999999,#include stdio.h main() int i,j; for (i=1;i=9;i+) for (j=1;j=i;j+) printf(%d,i); printf(n); ,【例3】 在屏幕上输出下三角九九乘法表。 程序如下: main() int i,j; for(i=1;i

4、=9;i+) for(j=1;j=i;j+) printf(%d*%d=%d , i,j,i*j); printf(n); ,运行结果如下: 1*1=1 2*1=2 2*2=4 3*1=3 3*2=6 3*3=9 4*1=4 4*2=8 4*3=12 4*4+16 5*1=5 5*2=10 5*3=15 5*4=20 5*5=25 6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36 7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49 8*1=8 8*2=16 8*3=24 8*4=32 8*5=40 8*6=48 8*7

5、=56 8*8=64 9*1=9 9*2=18 9*3=27 9*4=36 9*5=45 9*6=54 9*7=63 9*8=72 9*9=81,真,真,外循环初始条件,内循环初始条件,内循环体,外循环条件,假,内循环条件,假,内循环循环条件,外循环循环条件,循环结束,二重循环嵌套结构执行流程,例4:输出图形:,* * * *,编程分析:,采用双重循环,一行一行输出。,图形题目,输出步骤:一般3步。 1)确定行数 for(k=1;k=4;k+),3)每输完一行光标换行(n),2)输出每行的图形。主要是确定每行中的图形个数i与行号k的关系。 例如本题:共4行,若行号用k表示,则每一行有2*k-1

6、个*号。 for(i=1;i= 2*k-1 ;i+) printf(“*”);,#include stdio.h main() int k,i; for(k=1;k=4;k+) for(i=1;i=4-k;i+) putchar( ); for(i=1;i= 2*k-1;i+) printf(“*”); printf(“n”); ,【例5】使用二重for循环编程打印下列图形。 ,main() int i,j,k; for(i=1;i=i;j-) printf( ); /*打印一个空格*/ for(k=1;k=2*i-1;k+) printf(); printf(n); ,打印由“*”号组成的三

7、角形。,main() int k=1, j; while(k=5) j=1; while(j=k) printf(“*”); j+; printf(“n”); k+; ,多重循环的执行过程为: 外循环跨一步,内循环转一圈 k=1时,j=1 输出1个*号 k=2时,j=12 输出2个*号 k=3时,j=13 输出3个*号 k=4时,j=14 输出4个*号 k=5时,j=15 输出5个*号,【例6】,#include “stdio.h” main() int sum=0; char ch; while(1) ch=getchar(); if(ch=*)break; if(ch=A,编程:从键盘上连

8、续输入字符,并统计其中大写字母的个数,直到输入“*”字符结束。,出口:当输入的字符是“*”号时,退出循环,是大写字母就计数,例【7】,练习,给定n的值,求 1+(1+2)+(1+2+3)+(1+2+n)的和。 分析:本例是一个数列求和,要认真观察数列中数列项变化的规律,在此例中,数列项是一个不断变化的求和,所以数列项的求取必须使用循环语句,整个数列的求和也需要一个循环,所以此例必须使用循环的嵌套。,练习,输出如下的图形: # # # # # # #,练习,判断下面程序的运行结果,并说明原因。 main() int i; for(i=1;i=5;i+) switch(i) case 1: printf(“i=1n”); continue; case 2: i=1; case 3: printf(“i=3n”); i+=2; continue; case 4: printf(“i=%dn”,i+); break; printf(“i=%dn”,i+); ,练习,输出如下图形: 1 22 333 4444 55555,练习,输出如下图形: 1 2 2 3 3 3 4 4

温馨提示

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

评论

0/150

提交评论