第5章 循环结构1


说明:
(3)最简单的应用形式: for(循环变量赋初值;循环条件;循环变量增值) 例如:for(i=1;i<=10;i++) sum=sum+i; (4)三个表达式均可缺省,但起分割作用的两个分号 不可省略。 例如:for( ; ; ) i=1;for(;i<=10;i++) sum=sum+i; 或 for(i=1;i<=10;) {sum=sum+i;i++;} • 表达式1省略,应在for之前对循环变量赋初值 • 表达式2省略,则不判断条件,循环无终止进行下去 • 表达式3省略,则应另设法保证循环的结束
5.4
循环的嵌套
一个循环体内又包含另一个完整的循环结构称为循 环的嵌套。
① while() {… while() {…} } ② do {… do {…} while(); } while() ; ③ for(;;) { for(;;) {…} }
5.4
④ while() {… do {…} while(); … } 说明:
在许多问题中都需要用到循环结构,如
要求计算全校每个学生的平均成绩,计算两 个正整数的最大公约数和最小公倍数等都需
要用到循环控制。C语言中有三种循环语句, 分别是while语句、do…while语句和for语 句。
5.1 while循环语句
while循环语句是用来实现“当型”循环结构的。 它的特点是先判断表达式,后执行语句。 格式: while(表达式) 语句; 该语句的执行顺序是:先计算表达式的值,再判 断其值是否为“真”(即非0)。若结果为“真”, 则执行语句;此过程重复执行,直到表达式的值为 “假”(即为0)时,结束循环。其流程图和N-S图 分别如图5-1和5-2所示。
1. 首先考虑求一个学生各门课的平均成绩,
2. 设置循环控制变量i控制课程数,其变化从1到5 ,每次增量为1。 3. 每个学生的处理过程都一样,因此只需对上述 流程重复执行20遍即可。
4. 设置循环变量j控制学生人数,其变化从1到20 ,每次增量也为1。
#include "stdio.h" main() { int i,j,score,sum; float aver; j=1; while(j<=20) { sum=0; for(i=1;i<=5;i++) { printf("Enter No.%d the score %d:",j,i); scanf("%d",&score); sum=sum+score; } aver=sum/5.0 printf("No.%d aver=%f\n",j,aver); 注意:外层循环应“完全包含”内层循环,不能发生交叉。 j++; } }
运行结果:the result is i=105
【例5.10】找出100~200之间第一个能被16整除 的数。 程序如下: 运行结果:112 #include "stdio.h" main() { int i=100; while(i<=200) { if(i%16==0) { printf("%d ",i); break; } else i++; } }
for(表达式1;表达式2;表达式3)语句;
计算表达式1 表达式2 假
计算表达式1 表达式2为真 语句

语句 计算表达式3
计算表达式3
图5-5
for循环结构流程图
图5-6
for循环结构N-S图
5.3
for循环语句
【例5.5】计算n!的值。 运行程序并输入:5↙ 运行结果: mup=120 程序如下: #include "stdio.h" main() { int mup=1,i,n; scanf("%d ",&n); for(i=1;i<=n;i++)mup*=i; printf(“mup=%d”,mup); }
【例5.9】在200以内的正整数中,找出既是15 的倍数又是7的倍数的最大值。 程序如下: #include "stdio.h" main() { int i;
注意:等于号“==”和 赋值号“=”的区别。
for(i=200;i>=0;i--)
if(i%15==0&&i%7==0)break; printf("the } result is i=%d",i);
例5.11 输入5个学生的百分制成绩,分别输出其对应 的等级(90~100为A,89~70为B,69~60为C,低于 60为D)。
#include "stdio.h" main() { int a,i=1; char y; while(i<=5) { scanf("%d",&a); switch(a/10) case 10: case 9:y='A';break; case 8: case 7:y='B';break; case 6:y='C';break; default:y='D';break; } printf("y=%c\n",y);i++;} }
【例5.6】输出Fibonacci数列的前20个数 。
该数列第1、第2两个数都是1;由第3个数开始, 其后每个数都是其前两个数之和。 F1=1 (n=1) F2=1 (n=2) Fn=Fn-1+Fn-2 (n>=3)
【例5.6】输出Fibonacci数列的前20个数 。 #include "stdio.h"
【例5.8】在1~5中取出3个整型数,输出其和能被 4整除的个数。 程序如下:
#include "stdio.h" void main() { int i,j,k,n=0; for(i=1;i<=5;i++) for(j=i+1;j<=5;j++) for(k=j+1;k<=5;k++) if((i+j+k)%4==0) {n++; printf("i=%d j=%d k=%d \n",i,j,k);} printf("n=%d\n ",n); }
do…while循环语句的特点是先执行,后判断。 格式: do 语句; while(表达式); 该语句的执行顺序是:首先执行一次循环语句, 然后计算表达式的值。若结果为“真”(即非0), 则再次执行循环体。此过程重复执行,直到表达式 的值为“假”(即为0)时,循环结束。其流程图和 N-S图分别如图5-3和5-4所示。
5.1 while循环语句
例[5-1]求1-100之间所有奇数和 #include <stdio.h> void main() 循环条件 { int i, sum=0; i = 1; while (i<=100) { sum+=i; sum=sum+i i=i+2; } printf(“\n%d”, sum); }
5.1 while循环语句
表达式 真 语句

表达式为真
语句
图5.1 while循环结构流程图
图5.2 while循环结构N-S图
5.1 while循环语句
While语句格式: while(表达式) 语句;
说明: (1)重复执行的语句被称为循环体,表达式被称为循 环表达式。 (2)因为while循环语句是当型循环结构,所以循环 体有可能一次也不执行。 (3)循环体可以是任何语句,但应有使循环趋于结束 的语句。
C程序设计语言
主讲教师:刘玉秀
第5章 循环结构程序设计
Hi, everyone!
第5章 循环结构程序设计
5.1 while循环语句
5.2 do…while循环语句
5.3 for循环语句
5.4 循环的嵌套
5.5 循环的退出
5.6 用goto语句构成循环
5.7 循环结构程序设计举例
第5章 循环结构程序设计
5.5
循环的退出
循环的退出有 break语句、continue语句和 goto语句,这是三种常见的循环退出语句。
5.5.1 break语句
5.5.2 continue语句
5.5.1 break语句
break语句可以用来实现从循环体内跳出的功能,即 提前结束循环。 格式:break; 该语句的功能是: 执行break语句,结束整个包含它的最内层循环。 说明: (1)break语句只能用于switch语句或循环语句中。 (2)在嵌套的循环结构中使用时,break语句只能跳 出包含它的最内层循环,不能同时跳出多层循环。
5.2 do…while循环语句
语句 语句

表达式 假
表达式为真
图5-3 do…while循环结 构流程图
图5-4 do…ile循环 结构N-S图
5.2 do…while循环语句
比较: ① do…while语句最后的分号不可少,但while 语句花括号后不可有分号。 ② 当循环条件第一次判断条件就为真时,while 和do…while语句在执行过程中没有什么区别;而 当循环条件第一次判断条件就为假时,while语句 一次也不执行,而do…while语句至少执行一次。
该语句的执行顺序是: 先计算表达式1,接着计算表达式2,若表达式2的值 为非0,则执行循环体;然后计算表达式3,再计算表达 式2。若表达式2的值仍为非0,则继续执行循环体,否则 退出循环。 其流程图和N-S图分别如图5-5和5-6所示。 说明: (1)当表达式1或表达式2省略时,其后的分号不能省略 (2)循环体中要有使循环趋于结束的语句。
合集下载

第5章C语言程序设计的循环结构

第5章C语言程序设计的循环结构
20
5.8 循环结构程序设计实例
【例5-15】计算1-1/2+1/3+…-1/n-1+1/n的结果。 【例5-16】求1+2+3+…+n<m中最大的n值,并求和。 【例5-17】是一个按照规律翻译密码的例子。程序描述:翻译密
码的规律是将每一个字母变成它后面的字母,如将A变成B,Z变成 A,非字母字符不变,‘!’作为电文结束标志。例如,有一电文 “right”,翻译成“sjhiu”。 【例5-18】 花100块钱买100斤蔬菜。程序描述:西红柿每斤5元, 黄瓜每斤3元,白菜3斤一元,问100块钱买100斤蔬菜有几种解法。
(2)用while和do-while循环时,循环变量初始化的操作应在while和 do-while语句之前完成。而for语句可以在< expression-1>中实现循环 变量的初始化。
(3)for、while属“当型”循环,先判断,后执行循环体。因此当条件 一开始就不成立时,循环体就一次也不执行。这两种循环可以互相取代。 而do–while循环属“直到型”循环,先执行循环体,后判断。因此无论 条件是否成立,循环体至少要执行一次。
5.2.1 while循环的基本语法 5.2.2 while循环的使用实例
3
5.2.1 while循环的基本语法
while循环语句用来实现“当型”循环结构。while循环的一般格 式如下所示: while(<condition>) { <可执行语句序列> }
4
5.2.2 while循环的使用实例
21
5.9 小结
循环结构是C语言程序设计中一种非常重要的编程结构,用于让计 算机反复执行,完成大量类同的计算。主要包括while结构、dowhile结构、for结构和goto语句实现的循环结构,这4种结构可以 嵌套使用。本章主要讲述了这4种循环结构的语法和使用,并对这 4种循环结构进行了对比。

循环结构

循环结构

第5章 循环----三类循环
for语句的一般形式为: for (<初始表达式>;<条件表达式>;<循环表达式>) { <循环体语句> } 1.计算<初始表达式>的值。该表达式是对循 环控制变量进行初始化。 2.判断<条件表达式>的值。该表达式就是循 环条件,若该表达式的值为“假”,则退出循 环,执行循环结构外的语句;若该表达式的值 为“真”,则执行<循环体语句>。 3.计算<循环表达式>的值。该表达式更新循 环控制变量的值。 4.转第2步。
课堂练习: 求1,1+2,1+2+3...... 数列中前n项的值
第5章 循环---数列问题
【例5-3】编写程序,从键盘输入x的值, x x , 直到最后一项 求 sin x x x 3! 5! 7! 绝对值小于le−7(即10−7)为止 (注:x为弧度值)。
3 5 7
开始
计算机导论A
第5讲 循环结构
第5章循环结构
1. for循环语句结构 2. while循环语句结构 3. do-while循环结构 4. break和continue语句的作用 5. 循环结构的嵌套 6. 案例分析
第5章 循环----导引
例5-1:计算10道简单的加、减、乘、除和取余的运算题
/*6-1 分支程序-----循环*/ #include<stdio.h> main() { int a,b,i,n; char op; printf("please input express:"); scanf("%d%c%d",&a,&op,&b); switch(op) { case '+':printf("%d+%d=%d\n",a,b,a+b); break; case '-':printf("%d-%d=%d\n",a,b,a-b); break; case '*':printf("%d*%d=%d\n",a,b,a*b); break; case '%':printf("%d%%%d=%d\n",a,b,a%b); break; case '/':if(b!=0) printf("%d/%d=%d\n",a,b,a/b); else printf("error\n"); break; }}

第5章-循环结构程序设计PPT优秀课件

第5章-循环结构程序设计PPT优秀课件
17
5.3.1 前测型Do…Loop循环语句
格式:
Do [While | Until <条件表达式>] <语句块> [Exit Do] <语句块>
Loop
18
5.3.1 前测型Do…Loop循环语句
前测型Do…Loop循环的流程图
Do While…Loop流程图
Do Until…Loop流程图
条件表达式 值为真?
格式:
Do <语句块> [Exit Do] <语句块>
Loop [While | Until <条件表达式>]
23
5.3.1 后测型Do…Loop循环语句
说明:
后测型Do…Loop循环语句与前测型Do…Loop循环语句的主 要区别在于:
后测型要先执行一次循环体,再判断条件;而前测型要 先判断条件,然后根据判断结果决定是否执行循环体。因此 对于后测型,不管条件是否满足,循环体至少有一次执行机 会。
16
5.3 Do…Loop循环语句
导入:
Do…Loop循环也属于条件型循环,即根据条件的 成立与否来决定是否执行循环。Do…Loop循环的应 用具有很强的灵活性,主要体现在:它既能指定循环 开始条件,又能指定循环结束条件;既能构成前测型 Do…Loop循环语句,又能构成后测型Do…Loop循 环语句。
25
5.3.1 后测型Do…Loop循环语句 【例5-10】将400~600间能够被3整除的数 输出(上机练习)
【例5-11】(略)
26
5.4 循环嵌套
介绍:
一个循环结构中又包含一个或多个循环结构被称为 循环嵌套,或称多重循环。 多重循环对嵌套的层数没有限制。有几层嵌套,就 称为几重循环,如二重循环、三重循环、四重循环 等。一般地,把嵌套在一个循环体内部的另一个循 环结构称为内循环;这样,嵌套了其他内循环部分 的循环结构就称为外循环。 为了使多重循环结构具有较好的可读性,通常用缩 进方式书写相应的源代码。

C语言程序设计:第5章 循环结构

C语言程序设计:第5章 循环结构
执行过程: 先执行循环体语句,再检查 循环条件表达式的值是否为真, 如果为真则继续执行循环体语句, 否则结束循环。
12
do...while语句(cont...)
课堂练习: 1.输出1---n之间的数,其中n从键盘输入。
int main(void) {
//1.定义变量i和n //2.输入n的值 //3.思考循环的开始条件:i从1开始 //4.思考循环的结束条件:i++,i > n //5.循环的条件:i<=n //6.循环要做的事情:输出i的值 return 0; }
} 相当于 while(1) {
}
26
小结
❖for(i=m;i<n;i++)//循环次数:n-m次 ❖for(i=m;i<=n;i++)//循环次数:n-m+1次
27
循环语句的练习
课堂练习: 1.输出n---1之间的数,其中n>1且n从键盘输入。 2.计算1*2*3*...*n的值(n的阶乘n!), 其中n从键盘输入。 3.计算10- 1/2 - 1/3 -....1/n的值 以上练习分别以while、do...while、for语句实现
int main(void) {
//1.定义变量i,n,sum //2.输入n的值 //3.思考循环的开始条件:i从1开始 //4.思考循环的结束条件:i++,i > n //5.循环的条件:i<=n //6.循环要做的事情:累加i的值 //7.输出计算结果 return 0; }
24
for语句(cont...)
{
sum = sum + i;
if(sum > 100)break;

第5章循环结构

第5章循环结构
格式: while (< 表达式 >) 语句A;
流程图:
0 (假) 表达式
非 0 (真) 语句 A
若表达式(条
件)的值为真,则 执行内嵌语句A, 再判断表达式(条 件)···,当表达式 的值为假时,执行 while后面的语句。
while语句的说明:
(1) while语句属当型循环,即先 判断条件(表达式),再执行循环体。
}
五、循环的嵌套
一个循环体内又包含另一个完整的循环结构,称 为循环的嵌套,内嵌的循环中还可以嵌套循环即 为多层循环。
说明:
⑴ 嵌套的原则: 不允许交叉 ⑵ 循环与分支可以相互嵌套但不允许交叉。
for(i=1;i<=4;i++) {for(j=1;j<=8;j++) printf(“*”); printf(“\n”); }
1) S=1 2) S=1+2 3) S=1+2+3
······ 100) S=1+2+ ···+100
S0 = 0
S1 = S0 + 1 S2 = S1 + 2 S3 = S2 + 3 ······ S100 = S99+100
求和表达式:
S=S+i
初值:
S=0
循环次数 i :
1~100
流程图:
上面的例子中: 外循环由外循环控制变量i控制,i由1递增到4。 每1次的外循环中,都要执行由内循环控制变 量j控制的8次内循环操作和1次换行操作。 由此:每次内循环输出一个星号,外循环输出一行(8 个)星号,4次外循环,输出了4行8列星号。
六、goto语句
格式: goto 语句标号 ; ······

C语言循环结构一章 ppt课件

C语言循环结构一章 ppt课件

}while(i<n); /* i<n 表示条件成立,循环执行 */
printf("s=%d\n",s);
} 2020/11/13
13
while和do-while循环的比较
main( ) { int i,s=0;
scanf(“%d”,&i); do {s=s+i; i++; }while(i<=10); printf(“s=%d”,s);
件转向使程序结构无规律、可读性差。一般应避 免使用goto语句,但如果能大大提高程序的执行 效率,也可以使用。
2020/11/13
2
精品资料
• 你怎么称呼老师?
• 如果老师最后没有总结一节课的重点的难点,你 是否会认为老师的教学方法需要改进?
• 你所经历的课堂,是讲座式还是讨论式? • 教师的教鞭
} 2020/11/13
10
do while语句
一般格式: do 语句(循环体) while(表达式);
特点:
“直到型”循环结构。先执行一次“语 句”,判“表达式”,当“表达式” 非0,再执行“语句”,直到“表达式” 为0,循环结束。
2020/11/13
11
do while 注意点
do后面没有分号; 语句的位置上只能到第一个分号处,也就是
6. if( x<20 )
7.
goto ab;
8. printf("%d\n",x);
9. }
2020/11/13
5
while 语句
一般形式: while(表达式) 语句
作用:实现“当型”循环。 当“表达式”非0(真) 时,执行“语句”。“语 句”是被循环执行的程序, 称为“循环体”。

第五章循环结构

第五章循环结构教学目的和要求:掌握循环结构程序设计的几种方法,掌握利用循环结构进行程序设计。

教学重点:FOR 语句课时安排:6+2(上机)一、循环结构12、直到型循环二、循环语句1、while (e) se是条件,s是循环体,由一条或多条语句组成,当由多条语句组成时应写成复合语句形式。

当e条件非0时,执行s,为0时退出循环体。

2、do s while (e)s是循环体,e是条件一直执行循环体s,一直到条件e成立,退出循环。

3、(面向问题)形式:for (e1;e2;e3)s说明:e1为表达式1、,通常是赋值语句。

用来实现循环结构的初始化。

e2 为表达式2,通常是关系表达式或逻辑表达式,但也可以是数值表达式或字符表达式,只要其值为非零,就执行循环体。

e3为表达式3,一般是表达式语句,他描述循环变量的变化,常用自增、自减运算。

E1,e3可以是简单的表达式,也可以是逗号表达式,即包含一个以上的简单表达式,中间用逗号间隔。

S循环体。

执行过程:1、计算e1,给循环变量赋以初值,继续。

2、计算e2的值。

3、若e2值为非0,执行第四步,否则执行第6步。

4、执行循环体,继续。

5、计算e3,调整循环控制变量的值,回到第2步。

6、退出循环。

一、循环的中断和继续1、break 语句使循环立即停止,转而执行循环体后的语句。

2、continue 语句使本次循环结束,转而执行下一次循环,在循环体任何位置,只要使用continue 语句就回转到循环的首部。

3、goto 语句无条件转换语句,可以使程序无条件的转移到该函数内的任意地方执行。

形式:goto labellabel 为标号,形式:label:s二、程序举例例1、公鸡每只5元。

母鸡3元,小鸡每3只1元。

用100元钱买100只鸡,问公鸡、母鸡、小鸡各买多少只。

Main ( ){int cocks,hens,chicks;cocks=0;while (cocks<=20){hens=0;while (hens<=33){chicks=100-cocks-hens;if (5*cocks+3*hens*+1.0/3*ckicks==100)printf(“cocks=%d,hens=%d,chicks=%d\n”,cocks,hens,chicks);hens++;}cocks++;}}设计2main ( ){int cocks,hens,chicks;for(cocks=0;cocks<+20;cocks++){for(hens=0;hens<=33;hens++){chicks=100-cocks-hens;if (5*cocks+3*hens+1.0/3*chicks==100)printf(“cocks=%d,hens=%d,chicks=%d\n”,cocks,hens,chicks);}}}例2、把输入的整数的各位数颠倒。

C语言程序设计第5章-循环结构程序设计ppt课件

分析:循环进行的条件是:i≤k和flag=0。因为在i>k时, 显然不必再去检查n是否能被整除,此外如果flag=1, 就表示n已被某一个数整除过,肯定是非素数无疑, 也不必再检查了。只有i≤k和flag=0两者同时满足才 需要继续检查。循环体只有一个判断操作:判断n 能否被i整除,如不能,则执行i=i+1,即i的值加1, 以便为下一次判断作准备。如果在本次循环中n能 被i整除,则令flag=1,表示n已被确定为非素数了, 这样就不再进行下一次的循环了。如果n不能被任 何一个i整除,则flag始终保持为0。因此,在结束 循环后根据flag的值为0或1,分别输出n是素数或非 素数的信息。
while(i<=k && !flag)
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);
}
.
返回本章首页
第5章 循环结构程序设计
【例5_1】用while语句求p=n!
#include<stdio.h>
int main()
{ int i=1,p=1; //循环初始化部分 while(i<=5) //循环控制部分
{ p=p*i; //循环体语句 i++; //循环修改部分
}
printf("5!=%d\n",p);
return 0;
10-3,则再执行循环体,把 term 值赋给term1.然后再累加 到s中去。可以看出:程序中 term1代表当前要累加的项, term代表下一项,如果这两项 之差未超过10-3,就将下一项 加到s 中。

第五章 循环

第5章循环结构(一)本章学习的目的和要求(二)本章学习的重点(三)复习题1.1单选题1.以下说法正确的是( )。

A.不能使用do-while语句构成的循环B.do-while语句构成的循环必须用break语句才能退出C.do-while语句构成的循环,当while语句中的表达式值为假时结束循环D.do-while语句构成的循环,当while语句中的表达式值为真时结束循环C语言支持的循环语句有:()A for循环B while循环C do while循环D以上都是1.2多选题1.3判断题1.continue语句用于循环语句内部中。

当遇到continue语句之后,循环体中continue语句后面的语句将被跳过,计算机将接着开始执行下一次循环。

()2.for(表达式1;表达式2;表达式3){},其中表达式1只执行一次。

3.若int i=0,k=8;while(i=8) i=k--;则while循环体的执行次数为0.4.多重循环是指循环语句的循环体中,又嵌套了另一个或多个循环语句,多个内层循环可以相互交叉嵌套。

5.在复合语句中定义的变量可在该复合语句所在的函数的其它地方使用。

6.在函数体内定义的变量称全局变量,可以被程序中的所有函数引用。

7.continue语句用在循环体中,可使整个循环不结束。

8.continue语句可以用于switch结构中。

9.break语句只能用于循环语句中。

10.do......while循环语句至少要执行一次循环体。

11.语句while(!E);中的条件!E等价于E==0。

12.语句for(;;){循环体}和while(1){循环体}是等价的。

13.在C语言中,for语句既可以用于计数类型循环又可以用于条件类型循环。

14.在while循环中允许使用嵌套循环,但只能是嵌套while循环。

15.在实际编程中,do-while循环完全可以用for循环替换。

16.continue语句只能用于三个循环语句中。

第五章循环结构

7/44 12:28
C
程序设计基础教程
第五章 循环结构
⑥ 初始表达式、循环表达式可以是逗号表达式 如:for (sum=0, i=1; i<=100; i++, i++) 相当于:sum=0; for(i=1; i<=100; i=i+2)
⑦ for循环也可以嵌套,执行时是由外向里,逐层进行, 先执行外层循环,再进入内层循环;退出时相反,由 里向外逐层退出,先退出内层循环,然后退到上一层 循环。 【 P97: 例 5-2 】任意从键盘输入两个整数 a 、 b(a<b) ,求 它们之间的几何级数的和,数学表达式为 i b 。
循环的意思就是让程序重复地执行某些语句 。 C语言提供的循环结构有三种:for语句、while语句和 do_while语句。 for 语句既可以用于循环次数已知的情况,也可用于循 环次数预先不知道的情况。
for语句的一般形式为:
2/44
12:28
C
程序设计基础教程
第五章 循环结构
for (<初始表达式>;<条件表达式>;<循环表达式>) <循环体语句> 功能:先计算<初始表达式>的值, for语句的流程图如图 : 然后判断<条件表达式>的值,若该 值为“假”,则退出循环,执行循 环体下面的语句;若该值为“真”, 则执行<循环体语句>,然后计算< 循环表达式>的值,再判断<条件表 达式>的值,重复以上的操作。 一般情况下,<循环体 语句>是由一对花括括 起来的复合语句。
§5.2 while语句
While语句也是一种用于产生循环动作的语句, 一般形式为: while(<表达式>) <循环体语句>
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档