第6章 循环控制
C语言程序设计第六章课件

6.3嵌套循环
使用嵌套循环的注意事项 使用复合语句,以保证逻辑上的正确性 – 即用一对花括号将各层循环体语句括起来 内层和外层循环控制变量不能同名,以免造 成混乱 采用右缩进格式书写,以保证层次的清晰性
2017/9/7
27/62
选择三种循环的一般原则
如果循环次数已知,计数控制的循环 – 用for
1!, 2!, 3!, … , n!
2017/9/7
24/62
【例6.4】输入n值,计算并输出
1! + 2! + 3! + … + n!
利用前项 计算后项
2017/9/7
25/62
【例6.4】输入n值,计算并输出
1! + 2! + 3! + … + n!
每次单独计算 累加项
2017/9/7
26/62
counter<6 true input n sum ← sum + n counter++ output sum
n
2 3 5 6 4
counter-controlled 计数器每次增1
使用了3个变量
2017/9/7
end
6/62
6.2计数控制的循环
counter ← initial value
test counter true
2017/9/7
end
条件控制的循环
当 型 循 环
假 假 真 假
条 件P
A
条 件P
真
A
直 到 型 循 环
2017/9/7
10/62
while循环语句
第6章-循环

{…
{…
{
while( )
do
for(;;)
{…}
{… }
{… }
}
while( );
}
} while( );
6.5 循环的嵌套
(4) while( ) (5) for(;;)
{…
{…
do{…}
while( )
while( )
{}
{…}
…
}
}
(6) do {… for(;;){ } … } while( )
第六章
本章要点
循环的基本概念 不同形式的循环控制 多重循环问题
主要内容
6.1 概述 6.2 goto语句以及用goto语句构成循环 6.3 用while语句实现循环 6.4 用do-while语句实现循环 6.5 用for 语句实现循环 6.6 循环的嵌套 6.7 几种循环的比较 6.8 break语句continue和语句 6.9 程 序 举 例
}
的值为} “真”时,两种循环得到的结
果相同。否则,二者结果不相同。
6.4 用for 语句实现循环
❖ C语言中的for语句使用最为灵活,不仅可以用于循环次数已经确 定的情况,而且可以用于循环次数不确定而只给出循环结束条件 的情况,它完全可以代替while语句。
❖ 一般形式: for(表达式1;表达式2;表达式3) 语句
以赋初值,使循环变量自动增值等。
6.4 用for 语句实现循环
说明: (5) 3个表达式都可省略,如:
for(; ;) 语句 相当于
while(1) 语句 即不设初值,不判断条件(认为表达式2为真值), 循环变量不增值。无终止地执行循环体。
6.4 用for 语句实现循环
第六章 循环控制

第六章循环控制教案目的及要求:1)熟练掌握三种循环语句的运用;2)掌握break和continue语句的运用。
教案重难点:1)循环语句; 2)循环的嵌套; 3)break和continue语句。
主要教案环节的组织:结合习题、上机掌握循环语句的用法教案内容:§6.1 概述循环结构是程序中一种很重要的结构。
其特点是,在给定条件成立时,反复执行某程序段,直到条件不成立为止。
给定的条件称为循环条件,反复执行的程序段称为循环体。
C语言提供了多种循环语句,可以组成各种不同形式的循环结构。
b5E2RGbCAP§6.2 goto语句以及用goto 语句构成循环程序中的语句通常总是按顺序方向,或按语句功能所定义的方向执行的。
如果需要改变程序的正常流向,可以使用转移语句。
在C语言中提供了4种转移语句:goto,break, continue和return。
其中的return语句只能出现在被调函数中,用于返回主调函数,我们将在函数一章中具体学习。
p1EanqFDPwgoto语句也称为无条件转移语句,其一般格式如下: goto 语句标号;其中语句标号是按标识符规定书写的符号,放在某一语句行的前面,标号后加冒号(:>。
语句标号起标识语句的作用,与goto 语句配合使用。
如:label: i++;loop: while(x<7>; DXDiTa9E3dC语言不限制程序中使用标号的次数,但各标号不得重名。
goto语句的语义是改变程序流向,转去执行语句标号所标识的语句。
goto语句通常与条件语句配合使用。
可用来实现条件转移,构成循环,跳出循环体等功能。
但是,在结构化程序设计中一般不主张使用goto语句,以免造成程序流程的混乱,使理解和调试程序都产生困难。
RTCrpUDGiT例:#include"stdio.h" /*统计从键盘输入一行字符的个数 */5PCzVD7HxAvoid main(>{int n=0; printf("input a string\n">;loop: if(getchar(>!='\n'>{ n++;goto loop; }printf("%d",n>;}本例用if语句和goto语句构成循环结构。
6-1.第六章 循环控制

}
习题5: 1!+2!+…+n! 习题5: 求1!+2!+ +n! main() { int i,n; long s=1,sum=0; scanf(“%d”,&n) for(i=1;i<=n;i++) {s=s*i; sum=sum+s; } printf(“%ld”,sum); }
提示: 提示: 让变量s依次为 依次为: 让变量 依次为: 1!,2!,3!… ! ! 用Sum对s进行累加 对 进行累加
开始 Sum=1 i=1 i<=5 Y sum=sum*i i++ 结束 N
习题3: 1*2*3…*20 习题3: 求1*2*3 *20 main() { int i; long sum=1; for(i=1;i<=20;i++) sum=sum*i; printf(“%ld”,sum); }
开始 Sum=1 i=1 i<=20 Y sum=sum*i i++ 结束 N
第六章 循环控制
循环结构有两种形式:当型循环和直到型循环。 循环结构有两种形式:当型循环和直到型循环。
下面分别是当型循环结构的传统流程图和N-S流程图表示。 下面分别是当型循环结构的传统流程图和 当型循环结构的传统流程图和 流程图表示。 流程图表示
直到型循环结构的传统流程图和 直到型循环结构的传统流程图和N-S流程图表示 流程图表示: 的传统流程图和 流程图表示
思考: 1、 思考: 1、求 1 + 3 + 5 + 7 …前10项 前10项
12 + 2 2 + 32 + …… + n 2 2 、求
工学第6章循环控制课件

❖ while 语句 ❖ do-while 语句 ❖ for 语句
Page 2
C语言 程序设计
第6章 循环控制
第6章 循环控制
举例 求1—100之间所有整数的和
开始
当
型
0→sum
循
1→i
环
否
i<=100
是
sum+i→sum
i+1→i
printf("\n");
}
}
Page 20
C语言 程序设计
第6章 循环控制
6.6 循环结构程序设计举例
举例:累加、连乘算法
❖累加算法之累加通式:
累加和变量=累加和变量+累加项
❖连乘算法之连乘通式:
连乘积变量=连乘积变量*连乘项
算法举例:
❖求和、求平均
❖求π的近似值
❖求n!
❖求1!+2!+ … +n!
C语言 程序设计
举例
第6章 循环控制
从键盘上输入若干个整数,求总和及平均值,输入-1结束
#include <stdio.h>
void main( )
{ int x, i=0; float sum=0, aver;
scanf("%d",&x);
while ( x!=-1 )
{sum+=x;
或 for (; x!=-1;)
格式:do 语句 while (表达式) ;
语句 循环体
循环体 直到条件成立时
典型的 直到型 循环
表达式 假(0) 真(非0)
第六章 循环控制

循环条件
执行过程: (1)执行do后面循环体语句。 (2)计算while后面的表达式的值,如果其值为 “真”则 继续执行循环体,如果表达式的值为 假,退出此循环结构。
2014-6-30 1 13
C程序设计
第六章
循环控制
执行流程:
do 循环体 假(0)
While循环 expr 循环体
循环体 真(非0) while expr
2014-6-30
1
3
C程序设计
第六章
循环控制
while语句的执行流程
while 假(0)
expr 循环体
真(非0)
2014-6-30
1
4
C程序设计
第六章
循环控制
• 例:求1~100之间所有数之和
s=0;i=1;
while(i<=100)
• 循环结构的三个术语: • 1、循环条件:循环结构中的条件表达式如while (i<=100)其中,i<=100就是循环条件。 • 2、循环体:在每个循环周期均要执行一次的语句序列。 如while下用{ }括起来的语句序列。 • 3、循环控制变量:能够决定控制条件是真是假的量。 • 如while(i<=100)中的变量i
p=n*m;
while(m!=0) { r=n%m; n=m;m=r;} printf(―最大公约数:%d\n‖,n);
2014-6-30 1 printf(―最小公倍数:%d\n‖,p/n);} 12
C程序设计
第六章
循环控制
6.4 do-while循环语句
do~while语句
一般形式: do 循环体语句; while(表达式);
{s=s+i ; i++;}
第六章 循环控制

对下半部每一行:$数+空格数=列数(n) 行数 $数 空格数(单边) ㄩ$ $ $ $ $ 1 n-1*2 1 ㄩㄩ$ $ $ 2 n-2*2 2 ㄩㄩㄩ$ 3 n-3*2 3 i n-i*2 i
分析:分上下两部分考虑
上一页
5 下一页 返回上一级
#include <stdio.h> void main( ) { int n_blank, n_dollar, i, j, n, m; scanf(“%d”, &n);/*输入图案行数数目(奇数)*/ m=(n+1)/2; /*图案上半部的行数数目*/
循环嵌套
一个循环体内包含另一个完整的循环结构, 称为循环的嵌套。while循环、do-while循环和
for循环可以互相嵌套。
while() do do for(;;) { for(;;) {┋ while() {┋ {┋ do ┋ {┋ {┋ do while() for(;;) for(;;) {… } while() {… } {} while(); {} {┋ } while(); {… } ┋ } } ┋ } } } } while(); while();
上一页
下一页 返回上一级
for (i = 1; i < m; i++) /*下半部行控制,总共m-1行*/ { n_blank = i; /* i行的空格数目*/ n_dollar = n – 2 * i; /*i行的$数目*/ for (j = 0; j < n_blank; j++) putchar(‘ㄩ‘); /*输出i行空格*/ for (j = 0; j < n_dollar; j++) putchar(‘$’); /*输出i行$*/ putchar(‘\n’); /*换行*/ }
第六章循环控制PPT课件

环 while结构构成的。若图6.1中表达式值为真,则图6.1也与
一般形式:
图6.3
计
do
循环体语句
分号不能省
语句
while(表达式); 特点:先执行语句,后判断表达式。
非0
表达式
第 六
执行过程:先执行语句,再计算表达式,
0
章
为真时,继续执行语句,为假
循
时,退出循环。 (见图6. 3)
环
控
制
12
C
语 言
【例6.3 】求
100
i
传统流程图和N-S结构流程图如下:
i1
章
循
概况3
环
+ 您的内容打在这里,或者通过复制您的文本后。
控
制
C
语 言
6.1 概 述
程
序 设
在许多问题中需要用到循环控制。
计
例如,要输入全校学生成绩;求若干个数之和;
迭代求根等,几乎所有实用的程序都包含循环。
循环结构是结构化程序三种基本结构之一,它和
第 六
顺序结构、选择结构共同作为各种复杂程序的基
第 六
例如:goto
labeL1;是合法的。
章 而“goto l23;”是不合法的。
循
结构化程序设计方法主张限制使用goto语句,因为
环 滥用goto语句将使程序流程无规律、可读性差。但也不
控 制
是绝对禁止使用goto语句。
5
C
100
语 【例6.1 】用if和goto 语句构成循环,求 i。
言
i1
程
序
用do-while语句求对同一个问题可以用while语句处理,
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Page 10
C语言 语言 程序设计
第6章
循环控制
6.4 for 语句
语句求1~100之间的整数之和 例 用for语句求 语句求 之间的整数之和 #include <stdio.h> void main( ) { int i,sum; sum=0; for ( i=1; i<=100; i++ ) sum=sum+i; printf("i=%d,sum=%d\n",i,sum); }
C语言 语言 程序设计
第6章
循环控制
6.3 do-while 语句
例6.3 用do-while语句求 语句求100以内正整数的和 语句求 以内正整数的和 #include <stdio.h> void main( ) { int i,sum; sum=0; i=1; do 循环 { sum=sum+i; i++; 分号不可缺少 } while( i<=100 ); printf("i=%d,sum=%d\n",i,sum); }
Page 14
C语言 语言 程序设计
第6章
循环控制
6.6 break语句和 语句和continue语句 语句和 语句
break 语句 格式: 格式 break; 功能: 提前结束循环,从循环体中无条件跳转 功能 提前结束循环 从循环体中无条件跳转 到循环语句后面执行。 到循环语句后面执行。 可用于switch语句和循环结构中。 语句和循环结构中。 可用于 语句和循环结构中 continue语句 语句 格式: 格式 continue; 功能: 结束本次循环,即在本次循环中 即在本次循环中, 功能 结束本次循环 即在本次循环中,不再 执行循环体中continue后面的语句。 后面的语句。 执行循环体中 后面的语句 只能用于循环结构。 只能用于循环结构。
Page 18
C语言 语言 程序设计
第6章
循环控制
continue语句的使用 语句的使用
程序二: 程序二: #include <stdio.h> void main() {int i,sum=0; for(i=1;i<=10;) { if (sum>20) continue; sum=sum+i; i++;} printf("sum is %d\n",sum); } 结果为死循环
Page 16
C语言 语言 程序设计
第6章
循环控制
continue语句的使用 语句的使用
之间所有不能被3整除的整数 整除的整数。 例6.5 输出 1~7 之间所有不能被 整除的整数。 #include <stdio.h> void main( ) { int n; for( n=1 ; n<= 7 ; n++ ) { if ( n%3==0 ) continue; printf("%5d", n ); } }
Page 1
C语言 语言 程序设计
第6章
循环控制
第6章 循环控制 章
重点: 重点: while语句; 语句; 语句 do-while语句; 语句; 语句 for语句; 语句; 语句 循环结构的程序设计方法。 循环结构的程序设计方法。 难点: 难点: 循环条件的设计; 循环条件的设计; 循环入口的初始化工作; 循环入口的初始化工作; 多重循环结构的实现。 多重循环结构的实现。
C语言 语言 程序设计
第6章
循环控制
6.3 do-while 语句
格式: 表达式) 格式:do 语句 while (表达式 ; 表达式
语句 循环体 表达式 假(0)
循环体 当表达式为真
真(非0) 非
用dowhile 语句实 现直到 循环
循环体至少执行一次。 注:循环体至少执行一次。
Page 7
Page 12
C语言 语言 程序设计
第6章
循环控制
for 语句的灵活使用
表达式2可缺省,放在循环体之中, 表达式 可缺省,放在循环体之中,但for语句 可缺省 语句 中的两个分号都不能省略; 中的两个分号都不能省略;且判断与退出放在 循环体中。 循环体中。 { int i,sum; sum=0; for ( i=1; ; i++) if ( i<=100 ) sum=sum+i; else break; /*退出循环 退出循环*/ 退出循环 printf("i=%d,sum=%d\n",i,sum); }
Page 17
C语言 语言 程序设计
第6章
循环控制
continue语句的使用 语句的使用
程序一: 程序一:
例:分析以下两个程序 #include <stdio.h> void main() {int i,sum=0; for(i=1;i<=10;i++) { if (sum>20) continue; sum=sum+i; } printf("sum is %d\n",sum); } 结果输出 21
Page 13
C语言 语言 程序设计
第6章
循环控制
几种循环的比较
1)while循环、do while循环、for循环都可以用 ) 循环、 循环、 循环都可以用 循环 循环 来处理同一个问题,一般可以互相代替。 来处理同一个问题,一般可以互相代替。 2)在while和do-while循环的循环体中,应包括 循环的循环体中, ) 和 循环的循环体中 使循环趋于结束的语句。 使循环趋于结束的语句。 3)用while和do-while循环时,循环变量初始化 循环时, ) 和 循环时 的操作应在while和do-while语句之前完成, 语句之前完成, 的操作应在 和 语句之前完成 而for语句可以在表达式 中实现循环变量的 语句可以在表达式1中实现循环变量的 语句可以在表达式 初始化。 初始化。 4)三种循环均可用 语句跳出循环, )三种循环均可用break语句跳出循环,用 语句跳出循环 continue语句结束本轮循环。 语句结束本轮循环。 语句结束本轮循环 5)for语句功能最强。 语句功能最强。 ) 语句功能最强
Page 11
C语言 语言 程序设计
第6章
循环控制
for 语句的灵活使用
循环之前的赋初值语句可以放在表达式1中 循环之前的赋初值语句可以放在表达式 中, 中间用逗号间隔。 中间用逗号间隔。 表达式3可缺省(但其前的分号不能省略), 表达式 可缺省(但其前的分号不能省略), 可缺省 将表达式3作为语句放到循环体的末尾 作为语句放到循环体的末尾。 将表达式 作为语句放到循环体的末尾。 循环体中的内容可以放在表达式3中 循环体中的内容可以放在表达式 中,但要在 for语句圆括号的后面加一个分号。 语句圆括号的后面加一个分号。 语句圆括号的后面加一个分号 表达式1、表达式3可同时缺省 但表达式2前 可同时缺省, 表达式 、表达式 可同时缺省,但表达式 前 后的分号都不能省略。 后的分号都不能省略。
Page 20
C语言 语言 程序设计
第6章
循环控制
ห้องสมุดไป่ตู้
举例: 举例:输出一个图形
* ** *** ****
#include <stdio.h> void main( ) { int i, j; for( i=1 ; i<=4 ; i++ ) /*外循环控制输出图形的行数 */ 外循环控制输出图形的行数 { 内循环控制每行输出 for( j=1; j<=i ; j++ ) /*内循环控制每行输出 的字符*/ 的字符 printf("*"); printf("\n"); } }
C语言 语言 程序设计
第6章
循环控制
第6章 循环控制 章
掌握C 掌握C语言循环结构的格式 掌握while while、 while、 掌握while、do –while、for三种循环结构格式三 while for三种循环结构格式三 种和执行流程,掌握三种循环结构的区别。 种和执行流程,掌握三种循环结构的区别。
Page 9
C语言 语言 程序设计
第6章
循环控制
6.4 for 语句
语句中, 在for语句中,通常表达式 用来为循环 语句中 通常表达式1用来为循环 变量赋初值;表达式2一般用来设置循环 变量赋初值;表达式 一般用来设置循环 条件;表达式3一般用于循环变量增值。 条件;表达式 一般用于循环变量增值。 一般用于循环变量增值 for 语句的最常用格式: 语句的最常用格式:
Page 19
C语言 语言 程序设计
第6章
循环控制
§6.5 循环嵌套
一个循环体中又包含了另一个完整的循环结构, 一个循环体中又包含了另一个完整的循环结构, 叫做循环的嵌套。 叫做循环的嵌套。 三种循环结构可以互相嵌套。 三种循环结构可以互相嵌套。 循环嵌套的执行过程是:外循环执行一次, 循环嵌套的执行过程是:外循环执行一次,内 循环执行一个全过程。 循环执行一个全过程。
Page 5
C语言 语言 程序设计
第6章
循环控制
6.2 while 语句
语句求1—100之间整数和 例6.2 用while语句求 语句求 之间整数和 #include <stdio.h> 语句sum=sum+i;和语句 和语句i++;能否 语句 和语句 能否 改变位置?程序的哪些地方应作 改变位置? void main( ) 相应的改动? 相应的改动? { int i,sum; sum=0; i=1; 如果在while语句之前对变量 语句之前对变量sum 如果在 语句之前对变量 while( i<=100) 赋初值为1,是否可以? 赋初值为 ,是否可以?程序的哪 循 { sum=sum+i; 些地方应作相应的改动? 些地方应作相应的改动? 环 i++; } printf("i=%d,sum=%d\n",i,sum); } Page 6