项目04 循环结构程序设计
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如:
for(x=1000;x<=9999;) { „ x++; }
第一部分
任 务 学 习
4) 表达式1可以是设置循环变量初值的表达式(常用), 也可以是与循环变量无关的其他表达式;表达式1,表达式3
可以是简单表达式,也可以是逗号表达式。
如: for(i=0, j=100; i<=j; i++, j--) 5) 表达式2一般为关系表达式或逻辑表达式,也可以是 数值表达式或字符表达式,事实上只要是表达式就可以。
for(x=1000;x<=9999;x++)
先给x赋初值1 000,判断x是否小于等于9 999,若是则 执行循环体语句,之后值增加1。再重新判断x是否小于等于 9 999,直到条件为假时,结束循环。如循环体有多条语
第一部分
任 务 学 习
句,要加大括号括起来。 (3) 特点:先判断表达式,后执行语句。
第一部分
任 务 学 习
图4-2
while语句执行过程
第一部分
任 务 学 习
(5) 使用while语句时,需注意如下几个问题。
1)
while语句的特点是先判断表达式的值,然后根据
表达式的值决定是否执行循环体中的语句。因此,如果表达 式的值一开始就为“假”,则循环体将一次也不执行。 2) 当循环体为多个语句组成时,必须用“{}”括起来, 形成复合语句。如果不加花括号,则while 语句的范围只到
}
第一部分
任 务 学 习
程序运行结果如图4-4所示。
图4-4
循环结构程序运行结果
第一部分
任 务 学 习
【技能训练3】
计算近似值。
编写程序计算数学式„的近似值,直到最后一项的值小
于10-4为止。 分析: (1) 定义变量sum,并初值为0。 (2) 循环,sum=sum+1.0/1使得sum得到第一项;
如果你是神探,你能找到这辆车吗?
第一部分
任 务 学 习
【思路指导】
在解决这一类问题的时候,关键是先把这种问题转化为
数学问题。
(1) 车牌号是一个四位数,那这个数的范围应该 1 000<=x<=9 999,也就表明初值是1 000,结束值是9 999, 这是实现循环的关键。 (2) 定义4个变量a、b、c、d,分别代表各个位数上的
为真则执行循环体一次,否则跳出循环。 3) 计算表达式3的值,这里通常写更新循环变量的赋值 表达式,然后转回第二步重复执行。根据for语句的执行过
第一部分
任 务 学 习
程,也可以换一种更容易理解表示for语句的形式:
for(循环变量赋初值;循环条件;循环变量增量)循环体;
循环变量赋初值总是一个赋值语句,它用来赋给循环控制变 量初值;循环条件是一个关系表达式,它决定什么时候退出 循环;循环变量增量定义循环控制变量每循环一次后按什么 方式变化。这3个部分之间用“;”分开。
所有商品的总价格;收银员每扫描一次,也就是把该商品的
价格输入给x,然后把x的值转移加入到s盒子里,重复操作, 直到收银员按回车键,在这里用“0”代表回车;最后输出s 盒子中的值,就可得到所有商品的总价格。
第一部分
任 务 学 习
【解决方案】
#include<stdio.h> void main() { float x,s=0;
第一部分
任 务 学 习
程序运行结果如图4-3所示。
图4-3
成绩统计程序运行结果
第一部分
任 务 学 习
【技能训练2】
有一张厚度为0.1mm的纸,假设它足够大,重复将其对
折,问对折多少次之后,其厚度可达(再对折一次就超过)珠
穆朗玛峰的高度? 分析: (1) 重复对折一张纸,实质就是厚度乘以2,次数加1。 (2) 用顺序结构编程为h=h*2; n=n+1;。
while语句和do„while语句。本章是程序设计的重点内容,
重点培养读者的逻辑思维能力和程序编写基本能力。要求读 者能理解循环结构的工作过程,并且能用循环语句解决
项目四
循环结构程序设计
实际问题,提高编程能力。
【学习目标】
(1) 掌握for语句、while语句和do„while语句的使用。 (2) 掌握break语句和continue语句的使用。 (3) 能够利用循环语句解决实际问题。
项目四
循环结构程序设计
项目四
1 2 3
循环结构程序设计
任务学习 项目学习 实验学习
第一部分 第二部分 第三部分
项目四
循环结构程序设计
许多问题的求解可归结为重复执行的操作,例如输入多
个同学的成绩、对象遍历、迭代求根等问题。这种重复执行
的操作在程序设计语言中用循环控制来实现,几乎所有实用 程序都包含循环。特别是在现代多媒体处理程序(图像、声 音、通信)中,循环更是必不可少。循环结构也是结构化程 序设计中的3种基本结构之一;最常用的循环语句有for语句、
第一部分
一、while语句 二、for语句
任 务 学 习
三、do„while语句
四、break语句和continue语句
第一部分
任 务 学 习
一、while语句——超市收费系统
【问题提出】
有些在日常生活中遇到的循环问题,事先不知道循环次
数。例如在刚生产的1批药丸(每粒10g)中混入一个外观完
全相同的不合格药丸(15g),为了查找该药丸,逐个称重量, 直到查到15g的药丸为止,但事先并不知道要查多少次,这 时候就要使用循环语句中的while语句。
while语句后面第一个分号的基本语句处。
3) 为了使循环最终能够结束,而不至于使循环体语句 无穷执行(产生“死循环”),每执行一次循环体,条件表达 式的值都应该有所变化,这既可以在表达式本身中实现,也
第一部分
任 务 学 习
可以在循环体中实现。 4) 遇到数列求和、求积的一类问题,一般可以考虑使
用循环解决。 注意循环初值的设置。一Байду номын сангаас对于累加器常设
第一部分
任 务 学 习
【工作任务】
如果你在超市工作,你领导让你为超市编写一个收费系
统,你能做到吗?那就要想想,这个收费系统的工作过程。
当顾客从超市购物出来要付款的时候,顾客把购买的东西递 给收银员,收银员对所有的商品条形码扫描,扫描一个就得 到该商品的价格并自动累加,最后扫描完,收银员按回车键, 就能得到总价格。这个超市的收费系统到底是如何实现的呢?
第一部分
任 务 学 习
【思路指导】
(1) 收银员对商品条形码扫描的过程就是把商品的价格
输入的过程,定义一个变量x为商品的价格。
(2) 收银员要重复对商品的价格进行扫描,但是收银员 并不知道这种重复的动作要进行多少次,所以编程时要思考 用哪种循环语句。 (3) 在求总价格的时候可以假设有一个盒子s,用来放
}
第一部分
任 务 学 习
【运行情况】
超市收费系统程序运行结果如图4-1所示。
图4-1
超市收费系统程序运行结果
第一部分
任 务 学 习
【归纳分析】
(1) while语句一般形式。
while(表达式)
{ 循环体语句; }
第一部分
任 务 学 习
其中,表达式称为“循环条件”,语句称为“循环体”。 为便于初学者理解,可以读做“当条件(循环条件)成立(为
第一部分 {
任 务 学 习 }
for(;x<=9999;x++)
x=1000;
{ }
图4-7
for语句执行过程
第一部分
任 务 学 习
2) 如果省略表达式2,即不在表达式2的位置给出判断
循环终止条件,循环则会无终止地进行,也就是认为表达式
2始终为“真”。 3) 如果省略表达式3,即不在此位置进行循环变量的修 改,则应该其他位置(如循环体)安排使循环趋向于结束的工 作。
sum=sum+1.0/2使得sum得到第二项;
sum=sum+1.0/3使得sum得到第三项; „
第一部分
任 务 学 习 sum=sum+1.0/n使得sum得到第n项。
(3) 增量n,n=n+1。
(4) 循环条件,1.0/n>1e-4。
程序代码如下:
第一部分
任 务 学 习
#include <stdio.h> void main() { int n=1; float sum=0;
真)时,循环执行语句(循环体)”。
(2) 执行过程是:先计算while后面圆括号内循环条件 的值,如果其值为真(非0),则执行循环体语句,然后再计 算while后面圆括号内循环条件的值,并重复上述过程,直 到循环条件的值为“假”(值为0)时,退出循环,并转入下
一语句去执行。
(3) 特点:先判断表达式,后执行语句。 (4) 执行过程如图4-2所示。
注:从上面的说明可以看出,C语言的for语句功能强大,
使用灵活,可以把循环体和一些与循环控制无关的操作也都 作为表达式出现,程序短小简洁。但是,如果过分使用
置为0,累乘器常设置为1。 5) 循环体也可以是空语句,只有分号,什么也不做。 例如,while();。
第一部分
任 务 学 习
【技能训练1】
期末考试结束之后,老师让你分别统计C语言这门课程
及格和不及格的人数,编程来实现这个操作。
程序代码如下:
第一部分
任 务 学 习
#include<stdio.h> void main() { int a=0,b=0; float score; printf("请输入学生成绩:\n"); scanf("%f",&score); while(score!=0) { if(score>=60) a++; else b++; scanf("%f",&score); } printf("a=%d,b=%d\n",a,b); }
(4) 执行过程如图4-7所示。
(5) 说明:for语句中表达式1、表达式2、表达式3可以 省略其中的一个或两个,甚至3个表达式都同时省略,但是 起分隔作用的“;”不能省略。具体体现为以下几点。 1) 如果省略表达式1,即不在for语句中给循环变量赋
初值,则应该在for语句前给循环变量赋初值。
如: for(x=1000;x<=9999;x++)
数字,根据车牌号前两位相同,后两位加起来等于6,即
a==b,c+d==6。 (3) 车牌号能被2整除,即x%2==0。
第一部分
任 务 学 习
【解决方案】
#include<stdio.h> main() { int x,a,b,c,d; for(x=1000;x<=9999;x++) { a=x/1000; b=x/100%10; c=x/10%10; d=x%10; if(a==b&&c+d==6&&x%2==0) printf("这个车牌号是%d",x); } }
while((float)1/n>=1e-4)
{ sum=sum+(float)1/n; n=n+1; }
printf("sum=%f\n",sum);
}
第一部分
任 务 学 习
程序运行结果如图4-5所示。
图4-5
计算近似值程序运行结果
第一部分
任 务 学 习
二、for语句——神探抓贼
【问题提出】
在日常生活中有时能够事先确定要重复执行的操作次数,
第一部分
任 务 学 习
【运行情况】
神探抓贼程序运行结果如图4-6所示。
图4-6
神探抓贼程序运行结果
第一部分
任 务 学 习
【归纳分析】
(1) for语句的形式。
for(表达式1;表达式2;表达式3) { 循环体 } (2) for语句执行过程。
1) 计算表达式1的值,通常为循环变量赋初值。
2) 计算表达式2的值,即判断循环条件是否为真,若值
(3) 循环。这样的语句一直重复写到h满足题目要求为
止。 程序代码如下:
第一部分
任 务 学 习
#include<stdio.h> void main() { double h=0.1; int n=0; /*n用来累计对折次数*/ while(h<=8848180) { h=h*2;
n=n+1;
} printf("对折次数为:%d,此时厚度:%.2f\n",n-1,h/2);
如20名战士站好队报数,那么报数的操作要重复20次。用C
语言编写这一类程序的时候,一般使用for语句。
第一部分
任 务 学 习
【工作任务】
在某一黑夜一司机碰伤行人之后落荒而逃,经过警察的
调查之后,有3个目击者。 甲说:“车牌号的前两位相同。” 乙说:“车牌号的后两位加起来等于6。” 丙说:“车牌号是一个四位数,并且能被2整除。”
/*定义变量,分别存放每个商品 的价钱和总价钱,实型数据*/ printf("请输入商品价格"); scanf("%f",&x); /*输入第一个商品的价钱给x*/ while(x!=0) /*不是"回车"就执行*/ { s=s+x; /*加到总价钱里*/ scanf("%f",&x); /*输入每个商品的价钱给x*/ } printf("总价钱=%f",s); /*输出总价钱*/