第5章 循环结构
循环结构及其应用
【编程思路】
定义变量i表示圆的半径,使其从1递增到10。循环中计算并判断每个圆的面积 值是否大于100,不大于100时,输出圆面积,如果大于100,则使用break 跳出循环即可。
【程序代码】
#include "stdio.h"
#define PI 3.14159
main( )
{
int r;
float area;
{
sum=sum+i; /*累加*/
i++;
/*变为下一个加数*/
} printf("sum=%d\n",sum); /*输出计算结果*/
}
5.2.2 do-while语句
❖ do-while语句属于直到型循环,其一般形式为:
do {
循环体语句 }while (表达式);
❖ do-while语句的执行过程是:
printf("%d is a prime number\n”,m); /* m是素数 */
else printf("%d is not a prime number\n”,m); /* m不是素数 */
}
本例中用到了breakБайду номын сангаас句。在switch语句中我们已 经接触过break语句,它的功能是终止选择执行, 跳出switch语句,那么在循环结构中使用break 语句,其作用是终止循环的执行,即跳出循环语 句。
main( )
{
int n;
for (n=100;n<=200;n++)
{ if (n%3!=0) /*判断n是否能被3整除*/ printf("%d ”,n); /*不能整除时输出n的值 */
循环结构
第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; }}
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章 循环结构程序设计
输入学生2的三门课成绩,并计算平均值后输出
scanf(“%f,%f,%f”,&s1,&s2,&s3);
aver=(s1+s2+s3)/3;
printf(“aver=%7.2f”,aver); 要对50个学生进行相同操作
重复50次
大多数的应用程序都会包含循环结构
循环结构和顺序结构、选择结构是结构 化程序设计的三种基本结构,它们是各 种复杂程序的基本构造单元
(1) 先求解表达式1 (2) 求解表达式2,若其值为真,执行循环体, 然后执行下面第(3)步。若为假,则结束循环, 转到第(5)步 (3) 求解表达式3 (4) 转回上面步骤(2)继续执行 (5) 循环结束,执行for语句下面的一个语句
5.4用for 语句实现循环
for(i=1;i<=100;i++) sum=sum+i; 等价于 用for语句更简单、方便 i=1; while(i<=100) { sum=sum+i; i++; }
要向计算机输入全班50个学生的成绩
分别统计全班50个学生的平均成绩 求30个整数之和 教师检查30个学生的成绩是否及格
5.1为什么需要循环控制
例如:全班有50个学生,统计各学生 三门课的平均成绩。
输入学生1的三门课成绩,并计算平均值后输出 scanf(“%f,%f,%f”,&s1,&s2,&s3); aver=(s1+s2+s3)/3; printf(“aver=%7.2f”,aver);
n 1
100
5.3用do---while语句实现循环
解题思路:
sum=0 i=1 sum=sum+i i=i+1
C语言第5章
π
6
定义实型变量s=0; 整型变量n=1,k=-1;
1./(2*n-1)>=1e-4?
k=k*(-1); s=s+k*(1./(2*n-1)); n++; 输出4*s的值
程序如下: main() {int n=1,k=-1; float s=0; while(1./(2*n-1)>=1e-4) {k=-k; s=s+k/(2.*n-1); n++; } printf(“PI=%f”,s*4); } 运行结果为: PI=3.141397
1
一、什么是循环 所谓循环,就是重复执行某一程序段。 所谓循环,就是重复执行某一程序段。循环是所 有程序设计中都有的一种最重要的程序控制结构。 有程序设计中都有的一种最重要的程序控制结构。 正是有了循环,使得程序变得非常简单。 正是有了循环,使得程序变得非常简单。可用最 少的程序代码就可完成许多复杂的事情。 少的程序代码就可完成许多复杂的事情。同时循 环也是所有程序设计中最难的一种程序结构, 环也是所有程序设计中最难的一种程序结构,许 多同学对于其它程序结构都好理解, 多同学对于其它程序结构都好理解,但一遇到循 环就变糊涂了,不可理解了。 环就变糊涂了,不可理解了。这一点希望引起同 学们的极大注意。本书一共给出了三种循环: 学们的极大注意。本书一共给出了三种循环: 语句构成的循环; ⑴用while语句构成的循环; 语句构成的循环 语句构成的循环; ⑵用do-while语句构成的循环; - 语句构成的循环 语句构成的循环; ⑶用for语句构成的循环; 语句构成的循环
定义变量sum=0,i=1 接收用户的输入n sum=sum+i; i++; i<=n printf(“sum=%d\n”,sum); #include “stdio.h” main() { int i,sum,n; i=1;sum=0; printf(“\ninput n:”); scanf(“%d”,&n); do { sum=sum+i; i++; }while(i<=n); 9 printf(“sum=%d\n”,sum);}
第5章 循环结构程序设计
运行结果:
printf("%d\n",sum);
sum = 5050
}
while语句和用do-while语句的比较:
一般情况,用while循环语句和用do -while循环语句处理问 题时,若循环体部分一样,结果也一样。但是如果while循 环语句循环条件一开始为“假”,则循环结果不同。while 循环语句一次也不执行,而do -while循环语句不论条件是 否成立,先执行一次循环体语句。
循环变量不增值。无终止地执行循环体。
例5-7用for语句求1 + 2 + 3 + … + 100
#include <stdio.h> void main() {
int i,sum=0; /*将累加器sum初始化为0*/ for(i=1; i<=100; i++) sum += i;/*实现累加*/ printf("sum=%d\n",sum); } 程序运行的结果为: sum=5050 解析:先执行变量赋初值,然后判定循环继续条件, 如果为“真”,执行循环体语句,i 为运算项目和循 环变量,执行完一次,增加一次,最后累加和。
if(n%3!=0) /*循环体*/
printf("%5d",n);
}
§5.4 多重循环
• 当循环中的内嵌语句是循环语句时,称为循 环的嵌套使用。内嵌的循环中嵌套循环,称 为多重循环。
C语言程序设计技术基础
第5章 循环结构程序设计
第5章 循环结构程序设计
5.1 while 循环语句 5.2 do while循环语句 5.3 for循环语句 5.4 多重循环 5.5 break语句与continue语句 5.6 几种循环语句的比较 5.7 循环结构程序举例
5.循环结构
补充说明: 补充说明: (2) 如果表达式2省略,即不判断循环条件,循环无终 止地进行下去.也就是认为表达式2始终为真. 例如: 例如:for(i=1; ;i++) sum=sum+i; 表达式1是一个赋值表达式,表达式2空缺.它相当于: i=1; while(1) {sum=sum+1;i++;}
补充说明: 补充说明: (7) 表达式一般是关系表达式(如i<=100)或逻辑表达式 (如a<b && x<y),但也可以是数值表达式或字符表达 式,只要其值为非零,就执行循环体.
5.5 用for 语句实现循环
补充说明: 补充说明: ① for(i=0;(c=getchar())!=′\n′;i+=c); 在表达式2中先从终端接收一个字符赋给c,然后判 断此赋值表达式的值是否不等于′\n′(换行符),如 果不等于′\n′,就执行循环体.即不断输入字符, 将它们的ASC∏码相加,直到输入一个"换行"符为止. . 注意: 注意:此for语句的循环体为空语句,把本来要在循环 体内处理的内容放在表达式3中,作用是一样的.可见 for语句功能强,可以在表达式中完成本来应在循环体 内完成的操作.
5-5. 用for 语句实现循环
补充说明: 补充说明: (5) 3个表达式都可省略,如: 如 for(; ;) 语句 相当于 while(1) 语句 即不设初值,不判断条件(认为表达式2为真值), 循环变量不增值.无终止地执行循环体.
5-5. 用for 语句实现循环
补充说明: 补充说明: (6) 表达式1可以是设置循环变量初值的赋值表达式, 也可以是与循环变量无关的其他表达式.如: 如 for (sum=0;i<=100;i++) sum=sum+i; 表达式3也可以是与循环控制无关的任意表达式.
第5章 基本的控制结构(循环)
结束
图5-7
“九九乘法表”运行结果
结束
循环嵌套要注意以下事项: (1)在多重循环中,各层循环的循环控制变 量不能同名。但并列循环的循环控制变量名
可以相同,也可以不同。
(2)外循环必须完全包含内循环,不能交叉。
结束
下面的循环代码正确吗? For I=1 To 100 For I=1 To 100 For J=1 To 10 For I=1 To 10 „„ „„
结束
5.3.5 循环的退出
在某些情况下,为了减少循环次数或便 于程序调试,可能需要提前强制退出循 环。VB为For„Next和Do„Loop循环语句 提供了相应的强制退出循环的语句。
结束
Exit For语句:
用于For„Next循环,在循环体中可以出 现一次或多次。当系统执行到该语句时, 就强制退出当前循环。
结束
格式1的两种形式: Do {while} <条件> [<循环体>] Loop Do
当条件为真时, 执行循环体语句
{until} <条件> 当条件为真时,终 [<循环体>] 止执行循环体语句 Loop 说明: 格式1是先判断条件是否为真,然后执行。
结束
F
条件是否为真?
T
条件是否为真?
T
循环体
F
循环体
图2-3
Do While „Loop执行流程
图2-4
Do
Until „Loop执行流程
结束
格式2的两种形式: Do [<循环体>] Loop {while} <条件> Do
[<循环体>] Loop {until} <条件> 说明: 格式2是先执行循环体语句,然后判断条件。
C08第5章 循环结构
return
新编C语言程序设计教程
5.2.2 for循环结构用法
输出100以内奇数之和与偶数之和。 100以内奇数之和与偶数之和 例5-6 输出100以内奇数之和与偶数之和。
新编C语言程序设计教程
例5-7 输入两个正整数m和n , 求它们的最小公倍数。
分析:用穷举法。循环变量i的可能取值为: 分析:用穷举法。循环变量i的可能取值为:m, 2*m, n*m。 3*m, ..., n*m。
新编C语言程序设计教程
清华大学出版社
周二强
zeq@ 软件学院
计算机科学与工程系
配套视频: 配套视频: 博客: 博客:/stunt
第5章 循环结构
while循环结构 5.1 while循环结构
5.1.1 while循环结构分析 5.1.2 while循环结构用法
return
新编C语言程序设计教程
break语句和continue语句 语句和continue 5.3 break语句和continue语句
程序5 程序5-7出现逻辑错误的原因在于找到最小公倍数后没 有及时终止循环。 有及时终止循环。循环执行期间当满足了某种条件需要立 即终止循环的执行时可以采用多种方法,其中使用break 即终止循环的执行时可以采用多种方法,其中使用break 语句最方便。break语句在前面用来终止switch结构的执 语句最方便。break语句在前面用来终止switch结构的执 语句在前面用来终止switch 行,当循环执行到break语句时循环结构也将立即退出执 当循环执行到break语句时循环结构也将立即退出执 break 行。 在程序5 的循环结构中加一条break语句就可以排除逻 在程序5-7的循环结构中加一条break语句就可以排除逻 break 辑错误。 辑错误。
第5章 循环结构
第5章循环结构1、有以下程序#include <stdio.h>main(){ int y=10;while(y--); printf("y=%d\n", y);}程序执行后的输出结果是A) y=0B) y=-1C) y=1D) while构成无限循环参考答案:B【解析】执行y - -直到值为0,由于y - -是先用再减,所以退出循环时,y的值为-1。2、有以下程序#include <stdio.h>main(){ int k=5;while(--k) printf("%d",k -= 3);printf("\n");}执行后的输出结果是A) 1B) 2C) 4D) 死循环参考答案:A【解析】--k先自减在使用,所以第一次判断条件即为while(4),条件为真执行打印k的值k=4-3,结果为1,第二次判断条件即为while(0),条件为假,结束循环,打印回车换行符。所以选择A选项。3、关于"while(条件表达式)循环体",以下叙述正确的是A) 循环体的执行次数总是比条件表达式的执行次数多一次B) 条件表达式的执行次数总是比循环体的执行次数多一次C) 条件表达式的执行次数与循环体的执行次数一样D) 条件表达式的执行次数与循环体的执行次数无关参考答案:B【解析】while循环是先判断条件,满足条件后执行循环体,执行完后接着判断条件,执行,直到最后一次判断条件后不成立,跳出循环,所以最后一次执行了条件表达式,但是没有执行循环体,所以选择B选项。4、设有以下代码do {while (条件表达式1)循环体A;} while (条件表达式2);while (条件表达式1){do {循环体B;} while (条件表达式2);}其中,循环体A与循环体B相同,以下叙述正确的是A) 循环体A与循环体B的执行次数相同B) 循环体A比循环体B的执行次数多一次C) 循环体A比循环体B的执行次数少一次D) 循环体A与循环体B的执行次数不确定参考答案:A【解析】while循环语句一般形式为:while(表达式){循环体},执行过程为:首先判断表达式,成立(非0)则执行循环体,不成立(0)则退出循环。
c语言 第5章循环结构(while do-while for)
第1次运行: Input data: 11 22 33 44 55 66 77 88 99 0 1 2 11 22 33 44 55 66 77 88 99 0 sum=495 第1次运行: Input data: 0 0 sum=0 sum的初值与0的和
5.4 for语句
#include <stdio.h> int main() { int i=1,sum=0; while (i<=100) { sum=sum+i; i++; } printf("sum=%d\n",sum); return 0; for (i=1;i<=100;i++) } #include <stdio.h> int main() { int i=1,sum=0; do { sum=sum+i; i++; }while(i<=100); printf("sum=%d\n",sum); return 0; }
i++ for ( i = 1; i <= 100; i = i + 1 ) printf ( “**********\n” );
语句是?
【例1】在3~100之间所有3的倍数中,找出个位 数为2的数。
编程点拨 3~100内3的倍数有3 6 9 … 99 for ( i=3; i<=100; i=i+3 )
第1次运行: Input data: 11 22 33 44 55 66 77 88 99 0 1 2 11 22 33 44 55 66 77 88 99 sum=495 第2次运行: Input data: 0 (空一行) sum的初值 sum=0
C语言程序设计教程(第5版)_第5章_循环结构
b(a<b),求它们之间的几何级数的和,数学表达式
为
:i b
i
ia
分析:
①所求级数和的初值和终值由键盘任意输入;
②题目要求初值a<b,并且a>0,b>0;
③如果a>b,或者输入的值为负数,则程序提示输 入错误,不进行任何计算,直接退出程序。
5.1 for语句
程序流程图: 程序:example5_2.c 思考: ①该算法的缺点; ②设计更好的算法。 ③假如输入的数可以为任意整数,
2.判断<条件表达式>的值。该表达式就是循环条件,若该 表达式的值为“真”,则执行<循环体语句>; 若该表达式的值为“假”,则退出循环,执行循环结构外 的语句。
3.计算<循环表达式>的值。该表达式更新循环控制变量的 值。
4.转第2步。
5.1 for语句
for语句的流程图:
注意: ①若<循环体语句>中有多
ib
如果a≤b,计算i; ia ia
如果a>b,则计算i 。 ib
请设计算法并编写程序验证。
5.1 for语句
例3:编写程序,从键盘输入m和n的值,用符号“*”在屏幕 上打印出如下所示具有m行n列的矩形图案。 ******* ******* ******* ******* ******* ******* ******* *******
5.1 for语句
程序算法流程图如图所示: 程序:example5_4.c 程序特别处理:如果(a>b),
计算(a−b);否则计算(b−a)。 思考: 1.如果每次测试的题目不止10个,
需要怎样修改算法和程序? 2.如果要求程序在结束了一组测
试之后,可以继续进行测试,需 要怎样修改算法和程序? 3.如果要加入两位数的除法计算, 需要怎样修改算法和程序?
C语言程序设计教程(第4版)_第5章_循环结构
5.1 for语句
程序流程图: 程序:example5_2.c 思考: ①该算法的缺点; ②设计更好的算法。 ③假如输入的数可以为任意整数, 如果a≤b,计算 i ; 如果a>b,则计算 i 。 请设计算法并编写程序验证。
i b ia ia i b
5.1 for语句
例3:编写程序,从键盘输入m和n的值,用符号“*”在屏幕 上打印出如下所示具有m行n列的矩形图案。 ******* ******* ******* ******* ******* ******* ******* ******* 分析: ①图案有规律,共有m行,每行有n个*号。 ②可采用循环嵌套的方式: 第1层(外层)控制行数,用i来表示,输出m行“*” ; 第2层(内层)控制列数,用j来表示,输出n列“*” 。
100
5.1 for语句
for语句所具有的特性。 1.<初始表达式>可以省略,但须保留分号(;),同时在for之 前必须给循环控制变量赋值,形式为: <初始表达式>; for(;<条件表达式>;<循环表达式>) <循环体语句> 2.<条件表达式>一般不可省略,否则为无限循环。 例如: for(i=1;; i++) sum =sum+i; 相当于条件总为真,程序会一直不停地执行直到“数据溢出”。
5.2 while语句
例7:编写程序,统计从键盘输入的字 符个数(回车换行符也是一个字符) ,当遇到结束标志时程序结束。 分析:关键是循环计数。
开始 count=0
(ch=getchar())!=EOF
F
设置一个累加器count(初值为0),
每次从键盘输入一个字符,只要该字 符的值不等于结束标志,累加器的值 就增1:count=count+1; 算法流程图如图所示。 程序: example5_7.c
精品课件-C程序设计(第三版)(荣政)-第5章
第五章 循环结构的C程序设计
(2) 循环体由多个语句组成时,必须用左、右花括号括 起来,使其构成一复合语句。
如下例: void main() {
int i,sum; i=5;sum=0;
while (i>0) { sum=sum+i; i--; }
}
第五章 循环结构的C程序设计
若其中的循环体无{ },即循环语句写成: while (i>0) sum=sum+i; i--;
第五章 循环结构的C程序设计
运行结果: Input n:6 ↙ 12 34 2 11 9 5 ↙ sum is:73
第五章 循环结构的C程序设计
图 5.2 求n个数的和
第五章 循环结构的C程序设计
例 5.2 从键盘连续输入字符,直到输入“回车”符为止, 统计输入的字符个数。
分析:算法由图5.3所示的流程图描述。
#include <stdio.h> void main() {
int i,n,k,sum; i=1;sum=0; printf("Input n:"); scanf("%d",&n);
while(i<=n) { scanf("%d",&k); sum=sum+k; i++; }
printf("\nsum is:%d\n",sum); }
第五章 循环结构的C程序设计
(3) 若do-while语句的循环体部分由多个语句组成时,必 须用左、右花括号括起来,使其形成复合语句。例如:
do {
sum+=i; i--; } while(i>0); (4) C语言中的do-while语句是在表达式的值为“真”时 重复执行循环体的,这一点同别的语言中的类似语句有区别, 在程序设计中应引起注意。
《C语言程序设计》课件 《C语言程序设计》课件 第5章-循环结构程序设计
Page 28
参考代码
#include<stdio.h> void main() {
char ch; int char_num=0,int_num=0,other_num=0; while((ch=getchar())!=‘\n’) //回车键结束输入 {
if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z') char_num++;
printf("************\n ");
printf("************\n ");
printf("************\n ");
printf("************\n "); printf("************\n "); 等价 for(int i=1;i<=8;i++)
{ s=s+i;
i++; //表达式3移至循环体末尾
}
printf("s=%d",s);
}
<<C语言程序设计>>
Page 19
随堂练习
例 编程计算n的阶乘。
n!=1 2 3 ……〔n-1〕 n
思路:
类似于累加求和,每一次循环乘上一个数字,求和 将和初始化为0,这里应把积初始化为?
<<C语言程序设计>>
#include "stdio.h" void main( ) { int i,sum=0;
C语言程序设计教程(第4版)_第5章_循环结构
void main()
{ int i,sum=1,n;
printf("please input the value of n:");
scanf("%d:",&n);
if (n>=0)
{ i=1;
while(i<=n)
{sum=sum*I; i++;}
printf("%d\n",sum);}
else
printf("wrong\n"); }
5.2 while语句
例6:编写程序,从键盘输入一个正整
数n,求n!。
分析:n!=n*(n−1)*(n−2)*…*2*1 (约定:n≥0,0!=1) 用i代表循环变量,s代表n!的结
果值,则循环计算表达式:s=s*i, 即可求得n!。 思考:能否用for循环实现?
#include<stdio.h>
2.判断<条件表达式>的值。该表达式就是循环条件, 若该表达式的值为“真”,则执行<循环体语句>; 若该表达式的值为“假”,则退出循环,执行循环结 构外的语句。
3.计算<循环表达式>的值。该表达式更新循环控制变 量的值。
4.转第2步。
5.1 for语句
for语句的流程图:
注意: ①若<循环体语句>中有多
sum=0; for(i=1; i<=100; i=i+2) 7.for循环也可以嵌套,执行时是先执行最里层的循环,再 执行其外一层的循环。
5.1 for语句
例2:编写程序,从键盘输入两个不等于零的正整数a、
b(a<b),求它们之间的几何级数的和,数学表达式
北京航空航天大学《C语言程序设计》课件-第五章循环结构程序设计
2023/4/2
5.3 do-while语句
15
语句一般格式
do
{语句组} while (表达式);
功能:
– 先执行内嵌语句(循环体),之后计算 表达式的值,不为0(逻辑真)时,再 执行循环体并判断条件,直到表达式的 值为 0 结束循环,转去执行while下面 的语句。
2023/4/2
do-while循环的算法
for(n=100;n<=200;n++) {
if (n%7!=0) continue;
printf("%6d",n); j++; if (j%10==0)
printf("\n"); } printf(" \n j=%d\n",j); }
29
2023/4/2
5.5.2 循环中break的应用
30
功能:
}
无循环体
} 循环体
2023/4/2
5.5 循环结构中的跳转语句
25
有如下三种语句实现跳转: – continue语句 – break语句 – goto语句
功能:在循环语句的循环体中使用,可 以进行循环的流程控制
2023/4/2
5.5.1 continue语句及应用
26
功能:
– 中断循环体的本次执行(即跳过循环体中尚未 执行的语句),立即开始执行下一次循环。
– 利用break语句能够强迫终止本层循环, 转到后续语句执行。
while语句
表达式? N
Y
… break;
…
do-while语句
… break;
…
表达式? N
Y
cyu第5章循环(新)
for( ; ; ) { printf("这将一直进行下去 这将一直进行下去"); 这将一直进行下去 i = getchar(); if(i == 'X' || i == 'x') break; }
int i=1;s=0; while(i<1) ( ) { s=s+i; i=i+1; } printf("s=%d\n",s); ( ) }
17
int i=1,s=0; do { s=s+i; i=i+1; } while(i<1); printf("s=%d\n",s);
左边的程序结果为:s=0,而右边的程序结果为 而右边的程序结果为:s=1。 左边的程序结果为 而右边的程序结果为 。
折扣(y) 无 1% 2% 5% 10%
3
本章目标
理பைடு நூலகம்为什么使用循环结构 熟练掌握while循环的使用 熟练掌握do-while循环的使用 理解while 和 do-while 循环的区别
4
循环的必要性
int a1,a2,a3, a4,a5; a1 = 1 * 10; printf("1 × 10 = %d a2 = 2 * 10; printf("2 × 10 = %d a3 = 3 * 10; printf("3 × 10 = %d a4 = 4 * 10; printf("4 × 10 = %d a5 = 5 * 10; printf("5 × 10 = %d \n",a1); \n",a2); \n",a3); \n",a4); \n",a5);
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
a
循环体
do { 循环体语句; }while (表达式);
其执行过程为:先执行一次循 环体语句,然后计算表达式的值,如 果表达式的值“真”(非 0),则再 次执行循环体,同时修改相应的变量 后,再计算表达式,重复该过程,直 到表达式的值为“假”( 0)时退出 循环。流程图如图5-3所示。
真
表 达 式 假 b
第三种:
#include<stdio.h> void main() { int n; int i=1,s=0; printf("Please input a positive integer: "); scanf("%d",&n); for(;;) { s+=i; i++; if(i>n) break; } printf("The result is %d\n",s); }
假
表 达 式
真 循环体
b 图5-2 while语句流程-1.编程实现:从键盘输入n,计算n!(本例不考虑溢出问题)。 分析:先从键盘输入n,先判断n是否大于0,若小于0则提示用户正确输入,若等于0或1,则输出 结果 为1,若大于1则利用公式 计算n!的值,然后输出即可。 程序代码如下: #include<stdio.h> void main() { int n; int i=1,sum=1; printf("Please input a number: "); scanf("%d",&n); if(n<0) { printf("Error!Enter again: "); scanf("%d",&n); } if(n==0||n==1) printf("The result of %d! is :%d\n",n,sum); if(n>1) { while(i<=n) { sum*=i; i++; } printf("The result of %d! is :%d\n",n,sum); } }
while 与 do-while 的最大区别在于: do-whlie 循环先执行 循环体语句,后判断表达式,也就是说不管其表达式的值是 否总为“假”(0),其循环体语句总能够被执行。
5.4 for 循环结构
5.4.1 for语句的基本形式
1. 形式 for(表达式1; 表达式2; 表达式3) 语句 计算表达式1 求表达式2值 0(真) 语句 计算表达式3 结束for语句 =0(假)
5.2 while 循环结构
5.2.1 while语句的基本形式
a
while语句是循环结构程序中很常用的 语句,该语句通常用于构成“当型”循环 结构。while语句的一般形式为: while (表达式) { 循环体语句; } 其执行过程为:先计算表达式的值, 如果表达式的值为“真”(非0),则执行 循环体语句,同时修改相应的变量后,再 计算表达式,重复该过程,直到表达式的 值为“假”(0)时退出循环。流程图如图 5-2所示。
本章重点:
While循环结构、do-while循环结构、
for循环结构、转向语句。
教学内容:
分析为何运用循环结构
while循环结构
do-while 循环结构 for 循环结构 转向语句 应用程序
问题的提出
小明C语言考试成绩只有80分,没有达到自己的目标。为了 表明自己勤奋学习C语言的决心,他决定写100遍: “好好学习,天天向上!” 在日常生活中,有很多循环的例子:打印50份试卷;在400米 跑道上进行万米赛跑。 我们可以从循环条件和循环操作两个角度考虑,即明确一句话 “在什么条件成立时不断做什么事情”。
第一种: #include<stdio.h> void main() { int n; int i,s; s=0; printf("Please input a positive integer: "); scanf("%d",&n); for(i=1;i<=n;i++) { s+=i;} //循环体语句 printf("The result is %d\n",s); }
while(0) { sum*=i; i++; }
(4)循环表达式的值为“1”或者“永真”的时候,可以通过if语句对循环进行控制。 例5-1中的语句:
while(i<=n) { sum*=i; i++; } 可以写成: while(8) { sum*=i; if(i<=n) i++; else break; }
2.执行过程 首先计算表达式 1, 接着执行
表达式 2, 若表达式 2 的值 0, 则执 行语句,接着计算表达式3,再判断 表达式2的值.依此重复下去,直到 表达式2的值=0(假)。
3. 流程:
5.4.2 for句的应用
例5-6 编程实现:从键盘输入正整数n,计算s=1+2+3+…+n。 分析:从键盘输入正整数n,利用公式计算s=1+2+3+…+n,然 后输出s。 程序代码如下:
打印50份试卷: 循环条件:只要打印的试卷分数不足50份就继续打印 循环操作:打印一份试卷,打印总份数加1。 在400米跑道上进行万米赛跑。 循环条件:跑过的距离不足10000米就继续跑。 循环操作:跑1圈,跑过的距离增加400米。
5.1 问题的提出
在许多问题中需要用到循环结构,我们先看两个实际问题。第一个问题 是打印如图5-1所示图案。另外一个问题是计算从键盘输入n的阶乘(先不考虑 溢出问题)。 * *** ***** ******* ********* ******* ***** *** * 如图 :菱形图案
第四种: #include<stdio.h> void main() { int n; int i=1,s=0; printf("Please input a positive integer: "); scanf("%d",&n); for(;i<=n;i++) s+=i; printf("The result is %d\n",s); }
到第10天早上,猴子发现只剩一个桃子了",
说明第九天只有4个桃子(吃掉一半加1,也 就是吃掉3个,到第十天就只剩下1个了嘛) ,所以第八天只有桃子(4+1)乘以2,也就 是10个桃子(吃掉一半加1,也就是6个就只 剩下4个)…… ……找到规律就可以计算了 。
for循环结构的运用:
编程解决猴子吃桃问题。猴子吃桃问题的描述:猴子第一天摘下 若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第二天又将剩 下的桃子吃掉了一半,又多吃了一个。以后每天将前一天剩下的桃子吃 掉一半,再多吃一个。直到第十天只剩下一个桃子了,求第一天共摘了 多少个桃子。 分析:依照题目意思容易知道,第十天剩下一个桃子,假设为x,第 九天的桃子就是 2*(x+1) ,第八天的桃子就是 2*(2*(x+1)+1) ,依次类推。 可以得到最后的值,并输出即可。 程序代码如下: #include<stdio.h> void main() { int i,x=1; for(i=1;i<10;i++) x=2*(x+1); printf("Total is %d\n",x); }
(1)循环体若包含一个以上的语句,则要用花括弧把这些语句括起来,以复合语 句形式出现,否则,可能与程序要求不符,因为while语句的范围只到while后面的第一 个分号处。 while(c!='*') { putchar(c); c=getchar(); } 的花括弧去掉,写成: while(c!='*') putchar(c); c=getchar(); 则程序显然不能完成题目要求,并且会陷入死循环。 (2)在循环体中一定要有使循环趋向结束的操作。比如:i++,否则,循环将永不 结束,形成死循环。 (3)如果循环表达式的值为“0”或者假,则循环体语句一次也不执行。例如:
图5-3
do-while语句流程图
5.3.2 do-while语句的应用
例5-4 编程实现:从键盘输入正整数n,计算s=1+2+3+…+n(用do-while语句实 现)。 分析:从键盘输入正整数n,利用公式计算s=1+2+3+…+n,然后输出s。 程序代码如下: #include<stdio.h> void main() { int n; int i=0,s=0; printf("Please input a positive integer: "); scanf("%d",&n); do { s+=i; i++; }while(i<=n); /*i的值为n+1时,停止循环*/ printf("The result is %d\n",s); }
第5章 循环结构
上一章我们学习了选择结构,使用它可以解
决判断逻辑的问题。但在实际问题中,我们 会遇到需要多次重复执行的操作,仅仅使用 选择结构不容易解决。在本章中我们将利用 循环结构,让程序帮助我们完成繁重的计算 任务,同时可以简化程序编码。
教学目的:
熟练掌握while循环结构、do-while 循环结构、 for 循环结构、 转向语句,能运用循环结构编写程序。