C语言程序设计课件(北理工李凤霞)第六章-循环结构的程序设计_第1页
C语言程序设计课件(北理工李凤霞)第六章-循环结构的程序设计_第2页
C语言程序设计课件(北理工李凤霞)第六章-循环结构的程序设计_第3页
C语言程序设计课件(北理工李凤霞)第六章-循环结构的程序设计_第4页
C语言程序设计课件(北理工李凤霞)第六章-循环结构的程序设计_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

语句YN条件节目录2000年1月25日1北京理工大学语句YN条件节目录2000年1月25日1北京理工大学面向过程程序设计的任务:

上章小结内存分配指令分配数据描述过程描述顺序访问第三章第四、五章

解决的问题:当过程中出现选择结构问题时,针对问题的类型,可有三种不同的条件判定方法来描述过程。本章新问题2000年1月25日2北京理工大学面向过程程序设计的任务:上章内存分配指令分配数据过程顺序第循环的基本概念不同形式的循环控制多重循环问题

本章要点当问题中需要多次使用同一过程时,用循环的方法来描述过程。3循环的基本概念本章当问题中需要多次使用同一过程时,用循环返回主目录第1节第2节第3节第4节第5节循环的基本概念当型循环控制直到型循环控制循环的嵌套循环应用4返回主目录第1节循环的基本概念4什么是循环?为什么要使用循环??§6-1

循环的基本概念循环是有规律的重复操作。将复杂问题分解为简单的操作过程,程序只对简单过程描述,这些过程的多次重复就可完成对问题的求解。重复的频繁性决定了循环在程序设计中必不可少!一、循环问题问题1:问题2:求学生平均成绩分数相加后除以课数做99次加法问题3:找出数x中能同时被3和7整除的数找数问题分解循环控制下页节末页结束5什么是循环??§6-1循环的基本概念循环是有规律的重复操作§6-1

循环的基本概念

if--goto循环

while循环

for循环

dowhile循环先判断后循环(当型循环)先循环后判断(直到型循环)特点:难点:循环嵌套

C提供四种循环控制:首页上页下页节末页结束6§6-1循环的基本概念if--goto循环先判断后循§6-1

循环的基本概念(续)二、循环结构循环结构有两种形式:当型循环结构直到型循环结构循环体N条件Y当型循环直到型循环条件NY循环体先判断后循环先循环后判断入口出口区别?循环体中是一个过程,该过程的复杂程度取决于问题及对问题的分解首页上页下页节末页结束7§6-1循环的基本概念(续)二、循环结构循环结构有两种形式§6-1

循环的基本概念(续)三、循环的执行过程循环体N条件Y当型循环条件循环次数Y循环体?Y执行1Y执行3Y执行2N结束

循环体Y?循环体Y

??N3次在循环入口处判断当条件为真时执行循环首页上页下页节末页结束8§6-1循环的基本概念(续)三、循环的执行过程循环体N条件§6-1

循环的基本概念(完)直到型循环在循环出口处判断,当条件为真时继续执行循环,直到条件为假时为止。条件NY循环体条件循环次数执行1Y

执行3Y

执行2N

结束

3次Y条件循环体Y条件循环体Y条件循环体Y

执行4条件循环体N4次循环至少执行一次首页上页下页节末页结束9§6-1循环的基本概念(完)直到型循环在循环出口处判断,当§6-2

当型循环控制语句一、结构与语句循环体N条件Y形式1:标号:if(条件){语句组}

goto标号形式2:while(条件){语句组}形式3:for(初值;条件;增量){语句组}循环入口语句}}循环终端语句当型循环首页上页下页节末页结束当条件为真时执行循环体goto标号10§6-2当型循环控制语句一、结构与语句循环体N条件Y形式1§6-2

当型循环控制语句(续)首页上页下页节末页结束例C5-1求:s=s+nn++语句s=1+2+3…+n分析问题被简化为做加法:最基本的执行语句就是循环体内的语句。其次要考虑在进入循环之前和结束循环之后计算机应该完成的操作。用流程图描述整个过程二、三种语句的应用11§6-2当型循环控制语句(续)首页上页下页节末页结束例C5§6-2

当型循环控制语句(续)

/*C5-1.C*/main(){intn=1,S=0,x;scanf("%d",&x);loop:if(n<=x)

{s=s+n;n++;goto

loop;}printf("s=%d\n",s);}开始初始化n,s,x输入xn<=xs=s+nYn加1首页上页下页节末页结束N输出s结束10s=55100s=5050255s=32640运行while(n<=x)}for(;n<=x;)}if-gotoWhile(n<=x)for(;n<=x;)循环结束区别?12§6-2当型循环控制语句(续)/*C5-1.C*§6-2

当型循环控制语句(续)首页上页下页节末页结束三、for语句执行过程计算e1初值;计算e2并判断,0则跳出循环,非0执行循环;当e2非0,执行循环到终端语句,计算e3增量;自动转到第二步继续执行。

For语句格式:for(初值e1;条件e2;增量e3){语句组}13§6-2当型循环控制语句(续)首页上页下页节末页结束三、§6-2

当型循环控制语句(续)首页上页下页节末页结束1.e1、e2、e3均可缺省for(;n<100;n++)缺省e1,n应在循环之前赋初值

for(n=0;;n++)缺省e2,造成死循环,不可使用!for(n=0;n<100;)缺省e3,n增量应在循环体内进行for(;;)缺省e1,e2,e3死循环!for(;n<100;)缺省e1,e3分号始终不能缺省!讨论不可用

14§6-2当型循环控制语句(续)首页上页下页节末页结束§6-2

当型循环控制语句(续)首页上页下页节末页结束for(初值;判断;增量)语句;for(初值;判断;增量)

{复合语句;}for(初值;判断;增量);2.e1和e3可是与初值、增量无关的逗号表达式for(s=0,n=1;n<=100;s=s+n,printf(“%d”,s))n++;for(s=0;n<100;s=s+n,n++){printf(“%d”,s);}求累加和n的初值在for之前完成增量在for之外完成For语句的形式:15§6-2当型循环控制语句(续)首页上页下页节末页结束for§6-2

当型循环控制语句(续)首页上页下页节末页结束/*C5-2.C*/main(){intn=1,s=0,x;scanf("%d",&x);for(;n<=x;n++)s=s+n;printf("s=%d\n",s);}while(n<=x){s=s+n;n++;}/*C5-2-1.C*/main(){intn,s,x;scanf("%d",&x);

for(n=1,s=0;n<=x;n++)s=s+n;printf("s=%d\n",s);}例C5-2缺省e1赋初值语句

16§6-2当型循环控制语句(续)首页上页下页节末页结束/*C§6-2

当型循环控制语句(完)首页上页下页节末页结束/*C5-4.C*/main(){intn,s;for(n=1;n<=10;n+=2)printf("n=%d\n",n);}/*C5-3.C*/main(){intn,s;for(n=1;n<=10;n+=2);printf("n=%d\n",n);}以下程序的输出结果输出结果:n=11输出结果:n=1n=3n=5n=7n=9?无循环体

循环体;特点:先判断后循环17§6-2当型循环控制语句(完)首页上页下页节末页结束/*C§6-3

直到型循环控制语句首页上页下页节末页结束一、结构与语句形式1:if(条件)goto标号形式2:do语句

while(条件);循环出口语句直到型循环条件NY循环体例C5-5求:流程图直到条件为假时结束循环18§6-3直到型循环控制语句首页上页下页节末页结束一、结构与n<=xs=s+nYn加1§6-3直到型循环控制语句(续)

/*C5-5.C*/main(){intn=1,S=0,x;scanf("%d",&x);loop:s=s+n;n++;if(n<=x)goto

loop;printf("s=%d\n",s);}开始初始化n,s,x输入x首页上页下页节末页结束do{s=s+n;n++;}

while(n<=x);if-gotodowhileN输出s结束二、两种语句的应用19n<=xs=s+nYn加1§6-3直到型循环控制语句(续)/*C5-6-1.C*/main(){ints=0,x;scanf("%d",&x);

while(x<=10)

{s=s+x;x++;}printf("s=%d\n",s);}/*C5-6.C*/main(){ints=0,x;scanf("%d",&x);

do

{s=s+x;x++;}

while(x<=10);printf("s=%d\n",s);}§6-3直到型循环控制语句(完)首页上页下页节末页结束输入:12输出:s=12例C5-6循环至少执行一次循环没有被执行输入:12输出:s=0三、whilw与dowhile的比较20/*C5-6-1.C*//*C5-6.C*/§6-3直到§6-4

循环的嵌套首页上页下页节末页结束一、循环嵌套的概念123456789---------------------------------12436948121651015202561218243036714212835424981624324048566491827364554637281在循环体中,又包含有循环结构。可以构成循环嵌套。行循环中包含了列循环。问题:双重循环21§6-4循环的嵌套首页上页下页节末页结束一、循环嵌套的概§6-4

循环的嵌套(续)首页上页下页节末页结束二、嵌套结构规则外循环内循环交叉循环三、break语句与continue语句

外循环入口内循环出口内循环出口外循环出口22§6-4循环的嵌套(续)首页上页下页节末页结束二、嵌套结§6-4

循环的嵌套(续)首页上页下页节末页结束break语句格式break;break语句的功能1.在switch语句中结束case子句,使控制转到switch语句之外。2.在循环语句的循环体中使用,结束循环过程,使控制转移到整个循环语句之外的下一条语句处。23§6-4循环的嵌套(续)首页上页下页节末页结束break语§6-4

循环的嵌套(续)首页上页下页节末页结束continue语句格式:continue;continue语句的功能:continue语句仅能在循环语句中使用。它的作用不是结束循环,而是开始一次新的循环。对于for语句,将控制转到执行增量和条件测试部分。对于while和do-while语句,将控制转到条件测试部分。24§6-4循环的嵌套(续)首页上页下页节末页结束contin§6-4

循环的嵌套(续)首页上页下页节末页结束例C5-7打印边长为m的正方型要求:从键盘输入m值,输出m行每行m个*号。

例:输入m=4,输出的图形如下:算法分析与设计:1.输入m,2.重复打印m行,每行打印m个*;****************1.输入m;2.for(k=1;k<=m;k++)

打印一行中的m个

*;行控制25§6-4循环的嵌套(续)首页上页下页节末页结束例C5-7打§6-4

循环的嵌套(续)首页上页下页节末页结束例C5-7细化:1.输入m;2.for(k=1;k<=m;k++)

{打印m个

*;换新行;}细化:1.输入m;2.for(k=1;k<=m;k++)

{for(j=1;j<=m;j++)printf(“*”);

printf(“\n”);}行控制列控制26§6-4循环的嵌套(续)首页上页下页节末页结束例C5-7细§6-4

循环的嵌套(续)首页上页下页节末页结束例C5-7#include<stdio.h>main(){intk,m,j;scanf(“%d”,&m);for(k=1;k<=m;k++)/*控制打印m行*/

{for(j=1;j<=m;j++)/*打印一行中的m个*号*/

printf(“*”);

printf(“\n”);}

}整理,得到程序如下:27§6-4循环的嵌套(续)首页上页下页节末页结束例C5-7#§6-4

循环的嵌套(完)首页上页下页节末页结束分析方法逐步求精法。对于复杂问题,不可能一下得到程序,可以先将简单的部分明确出来,再逐步对复杂部分进行细化,一步一步推出程序。28§6-4循环的嵌套(完)首页上页下页节末页结束分析方法28§6-5

循环应用例题C5-8求1413数的最后三位数。1.问题分析将14累乘13次后截取最后三位数?因为14的13次方已经超出了计算机所能表示的整数范围乘法规律:乘积的最后三位的值只与乘数和被乘数的后三位有关C语言中最长的整数是:无符号长整型数:0--429496729510位1410=28925465497612位首页上页下页节末页结束29§6-5循环应用例题C5-8求1413数的最后三位数。1.§6-5循环应用(续)2.解题方法设计求xy末尾三位数的通用程序。设一累乘器A,使A与X相乘后取末尾三位数,即:a=a*x%1000,如此循环y次。问题被简化为求三位数乘法。3.程序流程图首页上页下页节末页结束30§6-5循环应用(续)2.解题方法设计求xy末尾§6-5循环应用(续)开始初始化i,x,y,a输入x,yN输出结果结束main(){inti=1,x,y,a=1;printf("InputXandY:");scanf("%d**%d",&x,&y);

while(i<=y){a=a*x%1000;i++;}printf("3digitsis:");printf("%d\n",a%1000);}InputXandY:14**133digitsis:144InputXandY:15**123digitsis:625i<=ya=a*x%1000Yi加1首页上页下页节末页结束31§6-5循环应用(续)开始初始化i,x,y,a输入x,yN§6-5循环应用(完)首页上页下页节末页结束#include<stdio.h>main(){inti=1,j;/*i:行计数器j:列计数器*/

while(i<=9)/*控制打印表头*/

printf("%4d",i++);

printf("\n----------------------------------\n");

for(i=1;i<=9;i++)

/*行循环入口*/

{j=1;

/*列计数器置1*/

while(j<=i)/*嵌套的内循环。输出第i行*/ {printf(“%4d”,i*j);/*输出乘积*/

j++;}/*列计数器+1*/

printf("\n");}

/*一行输出结束后,输出\n*/}例题C5-9打印乘法九九表内循环终值与外循环变量有关32§6-5循环应用(完)首页上页下页节末页结束#includ语句YN条件节目录2000年1月25日33北京理工大学语句YN条件节目录2000年1月25日1北京理工大学面向过程程序设计的任务:

上章小结内存分配指令分配数据描述过程描述顺序访问第三章第四、五章

解决的问题:当过程中出现选择结构问题时,针对问题的类型,可有三种不同的条件判定方法来描述过程。本章新问题2000年1月25日34北京理工大学面向过程程序设计的任务:上章内存分配指令分配数据过程顺序第循环的基本概念不同形式的循环控制多重循环问题

本章要点当问题中需要多次使用同一过程时,用循环的方法来描述过程。35循环的基本概念本章当问题中需要多次使用同一过程时,用循环返回主目录第1节第2节第3节第4节第5节循环的基本概念当型循环控制直到型循环控制循环的嵌套循环应用36返回主目录第1节循环的基本概念4什么是循环?为什么要使用循环??§6-1

循环的基本概念循环是有规律的重复操作。将复杂问题分解为简单的操作过程,程序只对简单过程描述,这些过程的多次重复就可完成对问题的求解。重复的频繁性决定了循环在程序设计中必不可少!一、循环问题问题1:问题2:求学生平均成绩分数相加后除以课数做99次加法问题3:找出数x中能同时被3和7整除的数找数问题分解循环控制下页节末页结束37什么是循环??§6-1循环的基本概念循环是有规律的重复操作§6-1

循环的基本概念

if--goto循环

while循环

for循环

dowhile循环先判断后循环(当型循环)先循环后判断(直到型循环)特点:难点:循环嵌套

C提供四种循环控制:首页上页下页节末页结束38§6-1循环的基本概念if--goto循环先判断后循§6-1

循环的基本概念(续)二、循环结构循环结构有两种形式:当型循环结构直到型循环结构循环体N条件Y当型循环直到型循环条件NY循环体先判断后循环先循环后判断入口出口区别?循环体中是一个过程,该过程的复杂程度取决于问题及对问题的分解首页上页下页节末页结束39§6-1循环的基本概念(续)二、循环结构循环结构有两种形式§6-1

循环的基本概念(续)三、循环的执行过程循环体N条件Y当型循环条件循环次数Y循环体?Y执行1Y执行3Y执行2N结束

循环体Y?循环体Y

??N3次在循环入口处判断当条件为真时执行循环首页上页下页节末页结束40§6-1循环的基本概念(续)三、循环的执行过程循环体N条件§6-1

循环的基本概念(完)直到型循环在循环出口处判断,当条件为真时继续执行循环,直到条件为假时为止。条件NY循环体条件循环次数执行1Y

执行3Y

执行2N

结束

3次Y条件循环体Y条件循环体Y条件循环体Y

执行4条件循环体N4次循环至少执行一次首页上页下页节末页结束41§6-1循环的基本概念(完)直到型循环在循环出口处判断,当§6-2

当型循环控制语句一、结构与语句循环体N条件Y形式1:标号:if(条件){语句组}

goto标号形式2:while(条件){语句组}形式3:for(初值;条件;增量){语句组}循环入口语句}}循环终端语句当型循环首页上页下页节末页结束当条件为真时执行循环体goto标号42§6-2当型循环控制语句一、结构与语句循环体N条件Y形式1§6-2

当型循环控制语句(续)首页上页下页节末页结束例C5-1求:s=s+nn++语句s=1+2+3…+n分析问题被简化为做加法:最基本的执行语句就是循环体内的语句。其次要考虑在进入循环之前和结束循环之后计算机应该完成的操作。用流程图描述整个过程二、三种语句的应用43§6-2当型循环控制语句(续)首页上页下页节末页结束例C5§6-2

当型循环控制语句(续)

/*C5-1.C*/main(){intn=1,S=0,x;scanf("%d",&x);loop:if(n<=x)

{s=s+n;n++;goto

loop;}printf("s=%d\n",s);}开始初始化n,s,x输入xn<=xs=s+nYn加1首页上页下页节末页结束N输出s结束10s=55100s=5050255s=32640运行while(n<=x)}for(;n<=x;)}if-gotoWhile(n<=x)for(;n<=x;)循环结束区别?44§6-2当型循环控制语句(续)/*C5-1.C*§6-2

当型循环控制语句(续)首页上页下页节末页结束三、for语句执行过程计算e1初值;计算e2并判断,0则跳出循环,非0执行循环;当e2非0,执行循环到终端语句,计算e3增量;自动转到第二步继续执行。

For语句格式:for(初值e1;条件e2;增量e3){语句组}45§6-2当型循环控制语句(续)首页上页下页节末页结束三、§6-2

当型循环控制语句(续)首页上页下页节末页结束1.e1、e2、e3均可缺省for(;n<100;n++)缺省e1,n应在循环之前赋初值

for(n=0;;n++)缺省e2,造成死循环,不可使用!for(n=0;n<100;)缺省e3,n增量应在循环体内进行for(;;)缺省e1,e2,e3死循环!for(;n<100;)缺省e1,e3分号始终不能缺省!讨论不可用

46§6-2当型循环控制语句(续)首页上页下页节末页结束§6-2

当型循环控制语句(续)首页上页下页节末页结束for(初值;判断;增量)语句;for(初值;判断;增量)

{复合语句;}for(初值;判断;增量);2.e1和e3可是与初值、增量无关的逗号表达式for(s=0,n=1;n<=100;s=s+n,printf(“%d”,s))n++;for(s=0;n<100;s=s+n,n++){printf(“%d”,s);}求累加和n的初值在for之前完成增量在for之外完成For语句的形式:47§6-2当型循环控制语句(续)首页上页下页节末页结束for§6-2

当型循环控制语句(续)首页上页下页节末页结束/*C5-2.C*/main(){intn=1,s=0,x;scanf("%d",&x);for(;n<=x;n++)s=s+n;printf("s=%d\n",s);}while(n<=x){s=s+n;n++;}/*C5-2-1.C*/main(){intn,s,x;scanf("%d",&x);

for(n=1,s=0;n<=x;n++)s=s+n;printf("s=%d\n",s);}例C5-2缺省e1赋初值语句

48§6-2当型循环控制语句(续)首页上页下页节末页结束/*C§6-2

当型循环控制语句(完)首页上页下页节末页结束/*C5-4.C*/main(){intn,s;for(n=1;n<=10;n+=2)printf("n=%d\n",n);}/*C5-3.C*/main(){intn,s;for(n=1;n<=10;n+=2);printf("n=%d\n",n);}以下程序的输出结果输出结果:n=11输出结果:n=1n=3n=5n=7n=9?无循环体

循环体;特点:先判断后循环49§6-2当型循环控制语句(完)首页上页下页节末页结束/*C§6-3

直到型循环控制语句首页上页下页节末页结束一、结构与语句形式1:if(条件)goto标号形式2:do语句

while(条件);循环出口语句直到型循环条件NY循环体例C5-5求:流程图直到条件为假时结束循环50§6-3直到型循环控制语句首页上页下页节末页结束一、结构与n<=xs=s+nYn加1§6-3直到型循环控制语句(续)

/*C5-5.C*/main(){intn=1,S=0,x;scanf("%d",&x);loop:s=s+n;n++;if(n<=x)goto

loop;printf("s=%d\n",s);}开始初始化n,s,x输入x首页上页下页节末页结束do{s=s+n;n++;}

while(n<=x);if-gotodowhileN输出s结束二、两种语句的应用51n<=xs=s+nYn加1§6-3直到型循环控制语句(续)/*C5-6-1.C*/main(){ints=0,x;scanf("%d",&x);

while(x<=10)

{s=s+x;x++;}printf("s=%d\n",s);}/*C5-6.C*/main(){ints=0,x;scanf("%d",&x);

do

{s=s+x;x++;}

while(x<=10);printf("s=%d\n",s);}§6-3直到型循环控制语句(完)首页上页下页节末页结束输入:12输出:s=12例C5-6循环至少执行一次循环没有被执行输入:12输出:s=0三、whilw与dowhile的比较52/*C5-6-1.C*//*C5-6.C*/§6-3直到§6-4

循环的嵌套首页上页下页节末页结束一、循环嵌套的概念123456789---------------------------------12436948121651015202561218243036714212835424981624324048566491827364554637281在循环体中,又包含有循环结构。可以构成循环嵌套。行循环中包含了列循环。问题:双重循环53§6-4循环的嵌套首页上页下页节末页结束一、循环嵌套的概§6-4

循环的嵌套(续)首页上页下页节末页结束二、嵌套结构规则外循环内循环交叉循环三、break语句与continue语句

外循环入口内循环出口内循环出口外循环出口54§6-4循环的嵌套(续)首页上页下页节末页结束二、嵌套结§6-4

循环的嵌套(续)首页上页下页节末页结束break语句格式break;break语句的功能1.在switch语句中结束case子句,使控制转到switch语句之外。2.在循环语句的循环体中使用,结束循环过程,使控制转移到整个循环语句之外的下一条语句处。55§6-4循环的嵌套(续)首页上页下页节末页结束break语§6-4

循环的嵌套(续)首页上页下页节末页结束continue语句格式:continue;continue语句的功能:continue语句仅能在循环语句中使用。它的作用不是结束循环,而是开始一次新的循环。对于for语句,将控制转到执行增量和条件测试部分。对于while和do-while语句,将控制转到条件测试部分。56§6-4循环的嵌套(续)首页上页下页节末页结束contin§6-4

循环的嵌套(续)首页上页下页节末页结束例C5-7打印边长为m的正方型要求:从键盘输入m值,输出m行每行m个*号。

例:输入m=4,输出的图形如下:算法分析与设计:1.输入m,2.重复打印m行,每行打印m个*;****************1.输入m;2.for(k=1;k<=m;k++)

打印一行中的m个

*;行控制57§6-4循环的嵌套(续)首页上页下页节末页结束例C5-7打§6-4

循环的嵌套(续)首页上页下页节末页结束例C5-7细化:1.输入m;2.for(k=1;k<=m;k++)

{打印m个

*;换新行;}细化:1.输入m;2.for(k=1;k<=m;k++)

{for(j=1;j<=m;j++)printf(“*”);

printf(“\n”);}行控制列控制58§6-4循环的嵌套(续)首页上页下页节末页结束例C5-7细§6-4

循环的嵌套(续)首页上页下页节末页结束例C5-7#include<stdio.h>main(){intk,m,j;scanf(“%d”,&m);

温馨提示

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

评论

0/150

提交评论