第5章 循环结构程序设计《C语言程序设计(第三版)》-电子教案
C语言第5章-循环结构程序设计PPT课件

当i<=10 (直到i>10) 输出sum
#include "stdio.h" int main() {
int i,sum; i=1; sum=0; do { sum=sum+i; i++; }while(i<=10);
至少执 行一次
循环体语句
真 表达式 假
说明
printf("sum=%5d\n",sum); return 0;
7
举例
例5.2 设s=1×2×3×……×n,求s不大于400000时 最大的n。
#include <stdio.h>
int main( )
{ int n=1; long int s=1;
前n项的乘积
P81
while(s<=400000)
{
n=n+1;
s=s*n;
}
printf("不大于400000时的最大n为:%d\ns值为:%ld\n",n-1,s/n);
输入:1 输出:sum=55 输入:11 输出:sum=0
sum=55 sum=11
什么情况下两 者结果相同?
11
§5.3 for语句
P87
格式 for (表达式1;表达式2;表达式3) 语句
for (循环变量赋初值;循环条件;循环变量增值) 语句
执行 过程
求解表达式1
假 表达式2
真 循环体语句
求解表达式3
一、实现循环结构的控制语句 二、循环嵌套 三、循环结构程序举例
1
• while语句 • do-while语句 • for语句 • break、continue语句 • 几种循环的比较
C语言程序设计 第三版 第5章 循环结构程序设计

if(n % i==0) flag=1;
else i=i+1;
if(!flag)
printf("%d is a prime
number.\n",n);
else
printf("%d is not a prime
number.\n",n);
}
12
返回本章首页
5.2 用while语句实现循环结构程序设计
4
返回本章首页
5.2 用while语句实现循环结构程序设计
2.While语句的功能
循环初始化部分
不成立 判断表达式
成立 循环体语句
循环初始化部分 当表达式为真时
循环体语句 循环修改部分
循环修改部分
5
返回本章首页
5.2 用while语句实现循环结构程序设计
【例5_1】用while语句求p=5!
p=1 i=1 当 i<=5 时
10
返回本章首页
5.2 用while语句实现循环结构程序设计
【例5_3】给一个正整数n(n≥2),用while循环结构 判断它是否素数。
输入 n
k= n ,i=2,flag=0
当 i≤k 和 flag=0 时
n 被 i整除
真
假
flag=1
i=i+1
flag=0
真
假
输出 n 是素数 输出 n 不是素数
p=p*i; i++; 输出 p
6
返回本章首页
5.2 用while语句实现循环结构程序设计
【例5_1】用while语句求p=5!
#include<stdio.h>
int main()
C语言程序设计-电子教案- 单元5 循环结构

内容摘要
while语句 do-while语句 for语句的应用 循环结构的嵌套 break语句在循环结构中的用法
学习目标
熟练掌握while语句、do-while语句和for语句的 基本格式 理解while语句、do-while语句和for语句的执行 过程 掌握循环嵌套的应用 掌握循环结构的常用算法
任务1 while语句
任务1:任务引导
循环结构是结构化程序设计的三种基本结构之一,它
们分别是while语句、do-while语句及for语句。这三种 循环语句主要用于完成程序中需要重复执行的操作。 例如:求数的阶乘、累加求和、求x的n次方等问题。
任务1:知识点介绍
1、while语句的形式 while语句是实现“当型”结构循环的语句,其一般形
一次指定的循环体语句,然后判断表达式的值。其流程图如图 5-3所示。具体执行过程如下: 执行do后面的循环体语句。 计算while后面括号中的表达式的值,当表达式的值为非0时, 返回执行过程(1);如此反复,直到表达式的值等于0时,退 出do-while循环。 说明:(1)do-while语句的特点是:先执行语句,后判断表达 式的值。 因此,do-while循环至少要执行一次循环语句。 (2)如果do-while语句的循环体部分是多个语句组成,则必须 用左右大括号括起来,使其形成复合语句。 (3)while圆括号后面有一个分号“;”,书写时不要忘记。
任务2 do-while语句
任务2:任务引导
前面我们用while语句求2+4+6+…+100的值,学会 了while语句的使用方法。除了while语句以外, C语言还提供了do-while语句来实现循环结构。对同一个问
C电子教案第5章

第5章循环结构程序设计5.1 概述在C语言中,构成循环的语句有4种:1 用goto和if语句;2 用while语句;3 用do-while语句;4 用for语句。
5.2 goto语句以及用goto语句构成循环格式:goto 语句标号;功能:无条件转到语句标号指定的语句中去执行。
注意:(1)语句标号应是合法的标识符,可放在任何语句的前面。
(2)用goto语句构成循环不是一种很好的方法。
例5.1用if语句和goto语句构成循环,求∑100n=1n。
此问题的算法是比较简单的,可以直接写出程序:main( ){int i,sum=0;i=1;looP: if(i<=100){ sum=sum+i;i++;goto loop;}printf("%d",sum);}运行结果如下:5050这里用的是“当型”循环结构,当满足“i<=100”时执行花括弧内的循环体。
请学生自己画出流程图。
5.3 while语句格式:while (表达式)循环体;功能:当表达式为真时执行循环体的语句,直到表达式为假时退出循环。
例5.2求∑100n=1n。
用传统流程图和N S结构流程图表示算法,见图5.2(a)和图5.2(b)。
根据流程图写出程序:main(){int i,sum=0;i=1;while (i<=100){sum=sum+i;i++;}printf("%d",sum);}需要注意:(1) 循环体如果包含一个以上的语句,应该用花括弧括起来,以复合语句形式出现。
如果不加花括弧,则while语句的范围只到while后面第一个分号处。
例如,本例中while语句中如无花括弧,则while语句范围只到“sum=sum+i;”。
(2) 在循环体中应有使循环趋向于结束的语句。
例如,在本例中循环结束的条件是“i>100”,因此在循环体中应该有使i增值以最终导致i>100的语句,今用“i++;”语句来达到此目的。
C语言程序设计:第5章-循环结构-课件教案

C语言程序设计课件教案第五章循环结构教学目的掌握循环结构中的while语句、dowhile语句、for语句的用法,掌握中断语句中break和continue语句的用法。
教学要求1.熟练掌握while语句、dowhile语句、for语句2.熟练掌握break语句、continue语句重点和难点1.while语句、dowhile语句、for语句的使用2.break语句、continue语句的使用教学支撑环境与教学资源:1.笔记本电脑2.VC20103.投影仪教学方法讲授法、练习法、讨论法授课课时6课时教学过程AM一、课程引入计算1+2+3+...+n有几种方法,需要多少步骤?、循环结构语句什么时候用到循环结构:处理重复的问题的时候。
循环结构的三大语句:while语句、dowhile语句、for语句。
1.while语句while(循环条件表达式)循环体语句;执行过程:只有循环条件表达式的值为真就执行循环体语句,先判断后执行。
1.输出1---n之间的数intmain(void){inti=1;intn=0;printf("请输入n的值:");scanf("%d",&n);//1015while(i<=n)15printf("%d\n",i);i++;}return0;}2.计算m+...+n 的值intmain(void){inti=1;intn=0;intm=0;intsum=0;printf("请依次输入m 和n 的值:");scanf("%d%d",&m,&n);//m+...n10while(m<=n){sum=sum+m ;m++;}printf("sum=%d\n",sum);return0;}2.do...while 语句do循环体语句;}while(循环条件表达式);执行过程:先执行循环体语句,再检查循环条件表达式的值是否为真,如果为真则继续执行循环体语句,否则结束循环。
c语言第5章循环结构程序设计课件

第五章 循环结构程序设计
典型例题(例5-8) :求两个整数的最大公约数、最小公倍数
12 8 4 mn r
84
0
mn r
最大公约数 4 最小公倍数 12*8/4=24
求最大公约数的N-S流程图
辗转相除法
7
第五章 循环结构程序设计
void main( )
{ int n, m, nm, r, t; printf( " Enter m, n= ? " ) ; scanf( " % d% d" , & m, & n) ; nm= n* m; if ( m< n)
例如: for(i=1;i<=n;) { t=t*i; i++; } (4)可以省略表达式1和表达式3,只有表达式2 , 即只给循环条件。
i=1; for(;i<=n;)
{t=t*i; i++;}
14
第五章 循环结构程序设计
(5) 3个表达式都可省略。 例如: for(;;) 语句 相当于 while(1)语句。
3
第五章 循环结构程序设计
例: 编程序求: s=1+2+3+……+100
main()
{ int s=0,i=1;
while (i<=100) { s=s+i;
思考:如何求n!
i++; }
printf("S=%d",s); }
4
第五章 循环结构程序设计 二、 do...while语句
Do-while语句的一般形式为:
(1) while( ) {… while( ) {…}
Visual Basic程序设计(第3版)-电子教案第5章

While p < 1000 I = I + 1 p = p * I
p = p / I n = I - 1 Print "N="; n, n; "!="; p End Sub
【例5.5】假设我国现有人口12亿,若 年增长率为1.5%,试计算多少年后我国人 口增加到或超过20亿。 人口计算公式为:p=y(1+r)n y为人口初值,r为年增长率,n为年数。
循环次数=Int((终值-初值)/步长) +1
(2)循环控制变量通常用整型数, 也可以用单精度数或双精度数。值得 注意的是,无论初值、终值和步长值 是什么数值类型,最后都要转换成循 环控制变量的类型。
【例5.1】求N!(N为自然数)。 分析:由阶乘的定义,我们可以得出N! =1*2*„*(N-2)*(N-1)*N=(N-1)!*N,也就 是说,一个自然数的阶乘,等于该自然数 与前一个自然数阶乘的乘积,
5.4 Do循环
与前面介绍的While循环相比,Do循环 具有更强的灵活性,它可以根据需要决定 是条件满足时执行循环体,还是一直执行 循环体直到条件满足。Do循环有两种语法 形式。
格式1: Do
{while|until} <条件> [<循环体>]
Loop 说明: 格式1是先判断,后执行。其执行过程 如图5-8、5-9所示。
我们前面学过的For循环、While循环、 Do循环都可以互相嵌套。 二重循环的执行过程是外循环执行一 次,内循环执行一遍,在内循环结束后, 再进行下一次外循环,如此反复,直到外 循环结束。
【例5.8】打印九九乘法表。 分析:打印九九乘法表,只要利用循 环变量作为乘数和被乘数就可以方便的解 决。
C语言程序设计-电子教案 第5章 循环结构程序设计

(2)在for语句中,表达式1和表达式3都可以是一项或是多项, 多于一项时,各项之间用“,”分隔,形成逗号表达式。
第5章 循环结构程序设计
5.1 for 语句
5.1.3 for语句的用法 【例5-1】编程计算s=1+2+3+...+100,用for语句实现。 依照此程序,请读者自行完成下列编程题: ① 计算:s=1+3+5+...+99 ② 计算:s=1+2+3+...+n
第5章 循环结构程序设计
5.2 while语句
【例5-6】将输入的正文复制到输出,每次一个字符。 分析:以 E0F 为结束标志的字符流称为一个正文,可以包含空白
字符,例如空格' '和换行字符'\n'。键入 Ctrl+z则 getchar 函数返 回文件结束字符 EOF。 程序中:c=getchar(); while(c!=EOF) { putchar(c); c=getchar(); } 可简化为:while((c=getchar())!=EOF)
for语句的执行过程流程图如图5-1所示。
第5章 循环结构程序设计
5.1 for 语句第5章 循环结构程序计5.1 for 语句
说明: (1)for语句的使用非常灵活,它的三个表达式可以省略1个或2 个,也可以3个都省略,但间隔符“;”必须保留。
例如:下列程序段把i=1提到for语句之前,省略了表达式1。 int i=1;s=0; for( ;i<=100 ;i++) s=s+I; 例如:下列两个程序段均为死循环,因为表达式2的值永远为真。
第5章 循环结构程序设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第5章 循环结构程序设计
掌握循环结构的基本特点 掌握3种循环语句:for语句、while语句和dowhile语句 学会利用for语句、while语句和do-while语句 设计简单的循环程序 了解goto语句构成的循环
5.1 循环的基本概念
【问题】如何计算1+2+3+4+…+100
5.1.2 循环结构语句
for 循环 while 循环 do-while 循环
5.2 while循环
while循环通过while语句实现。while循环又 称为“当型”循环。 一般格式为:
while (表达式) 语句 其中,括号后面的语句可以是一条语句,也可以是 复合语句。它们都称为循环体。
s = s + i; /* 投入i 枚硬币到s中*/ i = i + 1; /* 计算下次投币数 */
5.1.1 方法的探索
s=0; /* 盒子开始为空*/ i=1; /* 第1次投币*/ while(i<=100) /* 100次投币*/ { s=s+i; /* 投入i 枚硬币到s中*/ i=i+1; /* 计算下次投币数 */ }
do { 语句 } while(表达式);
do-while语句的执行过程为: 先执行循环体语句再判断表达式的值。若值 为0,则结束循环,退出do-while语句;若值 为非0,则继续执行循环体。
5.3 do-while循环
流程图
【例5-3】计算s=1+2+3+…+100。
#include <stdio.h> void main() { int i,s; i=1;s=0; do { s=s+i; i=i+1; } while(i<=100); printf("s=%d\n",s); }
循环变量的功能
控制循环 作为循环体中算法的引用变量
for(i=0;i<100;i++) s=s+i; for(i=1,j=1;i<=100;i++) { s=s+j; j=j+1; } for(i=2,j=1;i<=200;i=i+2) { s=s+j; j=j+1; }
控 制 + 引 用
0+1+2+…+99
【例5-5】计算 1+1.5+2.0+2.5+3.0+3.5+…+10。
#include <stdio.h> void main() { float i, s; /*i,s需要定义为float型 */ for(i=1,s=0;i<=10;i=i+0.5) s = s + i; printf("s=%f\n",s); }
for(i=0;i<100;i++) s=s+i+1;
控 制
1+2+3+…+100
for(i=1;i<=100;i++) s=s+i;
1+2+3+…+100
1+2+3+…+100
【例5-9】打印图形。
分析
for(i=1;i<=4;i++) /*控制输出4行*/ { for(j=1;j<=i-1;j++) printf("□"); /*输出i-1个空格*/ for(j=1;j<=2*i-1;j++) printf("*");/*输出2*i-1个星号*/ printf("\n"); /*输出一行后换行*/ }
以上程序中j<=i-1也可以改成j<=i/2或j<=sqrt(i)。
判断方法与实现
7
i
2~6 7%2 == 0 ?否 7%3 == 0 ?否 7%4 == 0 ?否 7%5 == 0 ?否 7%6 == 0 ?否 于②始终为真值,从而构 成无条件循环,循环将不能终止,需要采取其他措施。 表达式③也可以省略,但作为循环变量的调整功能不 能缺少,可以在循环体中完成,例如下面的for循环。 for (i=1,s=0;i<=100;) s = s + i++; 如果表达式①和③都省略的话,相当于while循环, 例如下面的程序形式: i=1,s=0; for (;i<=100;) /*相当于 while(i<=100)*/ s = s + i++;
5.4 for循环
流程图
【例5-4】计算s=1+2+3+…+100。
#include <stdio.h> void main() { int i,s; for(i=1,s=0;i<=100;i++) s = s + i; printf("s=%d\n",s); }
注意
for循环可以用以下while循环代替: ①; while (②) { ④; ③;} 表达式①可以是多个表达式构成的逗号表达式,例如 i=1,s=0;。 ①、②、③构成循环的控制部分,3个表达式之间用 分号分隔。 表达式①可以放在for循环的前面,但后面的分号不 能少,例如: ①;for(;②; ③)④;
左边的程序运行结果为:s=0 右边的程序运行结果为:s=1。
5.4 for循环
for循环是循环的一种标准形式,通过for语句实现,其 语法如下:
for(①;②;③) ④ ①表达式,通常用于循环的初始化。包括循环变量的赋 初值、其他变量的准备等; ②表达式,循环的条件判断式,如果为空则相当于真值; ③表达式,通常设计为循环的调整部分,主要是循环变 量的变化部分; ④循环体,由一条或多条语句构成,多条语句需要用一 对花括号括起来。
【注意】
循环体包括一条或多条语句,多条语句必须用 一对花括号“{}”括起来。 合理的循环是有限次循环。如果循环不能退出, 则称为“死循环”,在程序设计中应该避免出 现。 控制循环执行的次数因素包括循环中的循环条 件、控制循环的主要变量的初值和终值以及每 次变化的幅度等。
例如,上例中i有效地控制了循环的运行,i从1 循环到100,每次加1,循环运行了100次,i也 可以称为循环变量。
注意
①、②、③均省略,即: for (;;) ④; 相当于while (1) ④;。循环的所有控制和计算功能 都必须在循环体④中完成,这样的循环适合于随机 退出循环程序的情况。 表达式④也可以省略,但必须至少保留一个分号, 即: for (①;②;③) ; 一个分号即是一条空语句。 如果①、②、③、④均省略,即如以下形式: for (;;); 这将构成一个死循环。
#include <stdio.h> void main() { int i,s; i=3;s=0; while(i<=99) { s=s+i; i=i+3; } printf("s=%d\n",s); }
5.3 do-while循环
do-while循环,又称为“直到型”循环,用dowhile语句来实现,其一般格式为:
变量跟踪表
5.6 break语句、continue语句和 goto语句
5.6.1 break语句
switch结构中可以用break语句跳出结构去执 行switch语句的下一条语句。实际上,break 语句也可以用来从循环体中跳出,常常和if语 句配合使用。例如: for(i=1;i<100;i++) if(i>100)break; 当变量i>100时退出循环。 break语句不能用于循环语句和switch语句之 外的任何其他语句中。
5.5 循环嵌套
(1)while ()
{… while () … }
(4)while ()
{…
for (;;)
… }
(2)for (;;)
{ … for (;;) … }
(5)for (;;)
{ …
while (;;)
(3)do{
… do{ … }while (); … }while ();
… }
【注意】
如果只有一个循环变量,而且循环变量每次有 固定的增加和减少,则循环的次数可以用以下 公式计算:
循环次数 = (终值-初值)/ 步长 + 1
步长为循环变量每次增加或减少的值,例如, 上例循环次数为:(100–1)/1 + 1,即100次。 步长可以为负数。
【例5-2】计算1到100之间所有3 的倍数的和。
5.7 程序举例
【例5-8】计算s=1×2×3×4×…×8。
#include <stdio.h> void main() { int i; long s; for(i=1,s=1;i<=8;i++) s = s * i; printf("s=%ld\n",s); }
【例5-9】打印图形。
#include <stdio.h> void main() { int i,j; for (i=1;i<=5;i++) { for (j=1;j<=i;j++) printf("*"); printf("\n"); /* 每输出一行需要换行 */ } }