第5章 循环结构程序设计(第一次课)[详版课资]

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

5.2 用while语句和do-while语句实现循环
5.2.1 用while语句实现循环
while语句用来实现“当型”循环结 构
一般形式: while (表达式)
语句
当表达式为非0值时,执行while 语句中的内嵌语句。其特点是:先判 断表达式,后执行循环体。
5.2.1 用while语句实现循环
5.2.1 用while语句实现循环
#include <stdio.h> void main()
运行结果: 5050
{ int i,sum=0;
i=1;
w{ hsiulem(i=<s说=u1m明0+0:)i; i++; (1)循环体如果包含一个以上的语句,
}
应该用花括号括起来,以复合语句
printf(″%形d\式n″出,现s.um);
printf(″sum=%d\n″,sum); }
例题 5.11 程序2 #include <stdio.h> void main() { int sum=0 , i; scanf(“%d”,&i) do { sum=sum+i;
i++; } while(i<=10); printf(″sum=%d\n″,sum); }
运行结果: 5050
说明:可以看到,结果和例5.1完全相同。
补充例题:求1+3+5+…+99的和。
#include <stdio.h> void main() { int i,sum=0;
i=1; do { sum=sum+i; i=i+2; } while(i<=100); printf(″%d\n″,sum); }
C语言中的for语句使用最为灵活,不仅可 以用于循环次数已经确定的情况,而且可以 用于循环次数不确定而只给出循环结束条件 的情况。
一般形式:
for(表达式1;表达式2;表达式3) 语句
5.3.1 for语句的一般形式和执行过程
for语句的执行过程:
(1) 先求解表达式1。 (2) 求解表达式2,若其值为真(值为非0),则执
p=p*(1+r); printf(“年份=%d,人口总数=%e\n",y-1,p); }
由于在结束循环前y又加了1,因此在输出年份时应输出y-1的值。
5.3.2 for循环程序举例
例题5.5说明:
注意区分变量p在不同阶段中的不同含义。 y代表年份。循环体中只有一个语句,用来计算 从2006年开始的各年的人口数。在for语句中设定的 循环条件是p<15亿,当某一年的p达到或超过15亿, 就停止循环,输出年份和当年的人口数。由于在最 后结束循环前y又加了1,因此在输出年份时应输出 y-1的值而不是y的值。
思考题:求2+6+8+…+100的和。
讨论题:编写程序求100以内5的倍数的和。
while和do-while循环的比较
例题 5.11 程序1 #include <stdio.h> void main() { int sum=0 , i; scanf(“%d”,&i) while(i<=10); { sum=sum+i; i++; }
while和do-while循环的比较
运行结果: 1↙ sum=55 再运行一次: 11↙ sum=0
运行结果: 1↙ sum=55 再运行一次: 11↙ sum=11
说明:当while后面的表达式的第一次的值为“真” 时,两种循环得到的结果相同。否则,二者结果 不相同。
5.2 用while语句和do-while语句实现循环
i=1; while (i<=100) { sum=sum+i;
i++; } printf(″%d\n″,sum); }
5.2.2 用do-while语句实现循环
例题 5.2 求1+2+3+…+100的和。 #include <stdio.h> void main() { int i,sum=0; i=1; do { sum=sum+i; i++; } while(i<=100); printf(″%d\n″,sum); }
5.5 提前结束循环
5.5.1 用break语句提前退出循环
• break语句可以用来从循环体内跳出循 环体,即提前结束循环,接着执行循环 下面的语句。
• 一般形式: break;
说明: break语句不能用于循环语句和switch 语句之外的任何其他语句中。
运行结果:
麦子总粒数=1.844674e+019
double p=1, t=1, v;
麦子总体积=1.299066e+011
int i;
for(i=1; i<64; i++) {
1立方米小麦约有1.42*108
p = p * 2;
t = t + p;
}
v = t / 1.42e8;
printf(“麦子总粒数=%e\n”,t);
void main() { int i,sum=0;
for (i=1;i<=100;i++)
sum=sum+i; printf(″%d\n″,sum);
相当于: i=1; while(i<=100) { sum=sum+i;
i++; }
}
5.3.2 for循环程序举例
例题 5.4
国王的小麦。相传古代印度国王舍罕要褒赏他的 聪明能干的宰相达依尔(国际象棋的发明者),国王 问他要什么?达依尔回答说:“国王只要在国际象
5.3.2 for循环程序举例
总结:
一个变量开始时有一初值,通过一定的运算, 可以推算出一个新的值,再从这个新值又推出下一 个新值,即不断用计算出的新值去取代原有的值, 这种方法称为迭代。上面的计算公式p*(1+r)称为迭 代公式。迭代算法一般是用循环来实现的。迭代是 一种常用的算法,用人工实现很麻烦,而用计算机 实现却十分方便。
第五章
主要内容
5.1 程序中需要用循环结构 5.2 用while语句和do-while语句实现循环 5.3 用for 语句实现循环 5.4 循环的嵌套 5.5 用break语句和continue语句改变循环状态 5.6 几种循环的比较 5.7 程序举例
5.1 程序中需要用循环结构
100
问题1: y n
什么是循环? 为什么要使用循环?
n1
来自百度文库
问题2:求学生平均成绩 分数相加后除以学生数
• 在许多问题中需要用到循环控制。循环结构就 是用来处理需要重复处理的问题的,所以又称 重复结构。它和顺序结构、选择结构共同作为 各种复杂程序的基本构造单元。
• 循环分为两种:无休止循环和有终止循环
• 构成有效循环的条件:循环体和循环结束条件
sum=sum+i后sum的值变为3。再使i的值加1,i的值变为3。流程再返回菱 形框。 (6)再次检查“i≤100”条件是否满足……,如此反复执行矩形框中的操作,直到 i的值变成了100,把i加到sum中,然后i又加1变成101了。当再次返回菱形 框检查“i≤100”条件时,由于I已是101,大于100,“i≤100” 的值为假, 不再执行矩形框中的操作,循环结构结束。
行for语句中指定的内嵌语句,然后执行下 面第(3)步。若为假(值为0),则结束循环, 转到第(5)步。 (3) 求解表达式3。 (4) 转回上面第(2)步骤继续执行。 (5) 循环结束,执行for语句下面的一个语句。
用FOR语句实现 S=1+2+3+4+‥‥‥100
#include <stdio.h>
例题 5.3
募集慈善基金10000元,有若干人捐款,每输 入一个人的捐款数后,计算机就输出当时的捐款总 和。当某一次输入捐款数后,总和达到或超过
10000 元时,即宣告结束,输出最后的累加值。
解题思路
解此题的思路是设计一个循环结构,在其中输入捐 款数,求出累加值,然后检查此时的累加值是否达 到或超过预定值,如果达到了,就结束循环操作。
while语句和do-while语句的关系:同一个问题既可
以用while循环处理,也可以用do-while循环来处理 。
二者是可以互相转换的。
5.2.2 用do-while语句实现循环
一般形式: do 循环体语句
while(表达式);
用while语句实现
#include <stdio.h> void main() { int i,sum=0;
printf(“麦子总体积=%e\n",v);
}
5.3.2 for循环程序举例
例题5.4说明: 变量i用来控制循环的次数,开始时
i=1,在完成第1次循环后,i的值加1变 为2,由于2<64,所以执行第2次循环, 依此类推,当i变到63时,执行最后一次 循环,i再变为64,由于i不再小于64了, 不再执行循环。接着计算体积,输出结 果。
5.2 用while语句和do-while语句实现循环
运行结果:
#include <stdio.h>
1000↙ (输入捐款额)
void main()
1850↙
{ float amount,sum=0;
1500↙
do
2600↙
{ scanf("%f",&amount); 2500↙
sum=sum+amount;
口,每算出一年的人口后就检查一下是否达到或超
过15亿?如果未达到或超过15亿,就再计算下一 年
的人口,直到某一年的人口达到或超过15亿为止。
5.3.2 for循环程序举例
运行结果:
#vionidclumdaein<(s)tdio.h>年份=2019,人口总数=1.503007e+009 {
double p=1.30756e9,r=0.01; int y; for(y=2006; p<1.5e9; y++)
5.3.2 for循环程序举例
例题 5.5
人口增长预测。据2005年末统计,我国人口为 130756万人,如果人口的年增长率为1%,请计算
到 解哪题一思年路中国总人口超过15亿。
计算人口增长和计算存款利息的公式是相同的。 假设原来人口为p0 ,则一年后的人口:
p p0 (1 r)
其中r是年增长率。用此公式依次计算出每年的人
棋 的棋盘第1个格子中放1粒麦子,第2个格子中放2粒 麦子,第3个格子中放4粒麦子,以后按此比例每一 格加一倍,一直放到第64格(国际象棋的棋盘
8*8=64 格),我感恩不尽,其他什么都不要了。”国王想, 这有多少!还不容易!让人扛来一袋小麦,但不到 一会儿全用没了,再来一袋很快又用完了。结果全 印度的粮食全部用完还不够。国王纳闷,怎样也算 不清这笔账。现在我们用计算机来算一下。
,这是为下一次加2作准备。流程返回菱形框。 (4)再次检查“i≤100”条件是否满足,由于i的值为2,小于100,因此“i≤100”
的值仍为真,所以应执行其下面矩形框中的操作。 (5) 执 行 sum=sum+i , 由 于 sum 的 值 已 变 为 1,i 的 值 已 变 为 2 , 因 此 执 行
5.3.2 for循环程序举例
解题思路
麦子的总粒数是:
1 2 22 23 263
分别计算出每一格的麦子粒数,把它们加起来,就 得到总粒数。据估算,1 小麦约有1.42 粒,可以 计算出小麦的体积。 可以用for语句实现循环。
5.3.2 for循环程序举例
#include <stdio.h> void main() {
1200↙
p}rwinhtfil(e"(ssuumm=<%1说09明0.02:0f\)n设; "计,su循m环);结s构un=,1要065考0.虑00 两个问题
}
:一是循环体,二是循环结束条件。
注意while循环中判断的条件是循环
继续的条件,而不是结束条件。
5.3 用for语句实现循环 5.3.1 for语句的一般形式和执行过程
例题 5.1
求1+2+3+…+100的和
解题思路
(1)开始时使sum的值为0,被加数i第一次取值为1。开始进入循环结构。 (2)判别“i≤100”条件是否满足,由于i小于100,因此“i≤100”的值为真。所
以应当执行其下面矩形框中的操作。 (3)执行sum=sum+i,此时sum的值变为1了,然后使i的值加1,i的值变为2了
}
(2)在循环体中应有使循环趋向于结束
的语句。
5.2.2 用do-while语句实现循环
do-while语句的特点:先 一般形式: do
执行循环体,然后判断
循环体语句
循环条件是否成立。
while(表达式);
执行过程:先执行一次指定的循环体语句,然后判别 “表达式”,当表达式的值为非0(“真”) 时,返回 重新执行循环体语句,如此反复,直到表达式的值 等于0 (“假”)为止,此时循环结束。
相关文档
最新文档