当前位置:文档之家› 项目04 循环结构程序设计

项目04 循环结构程序设计


while语句和do„while语句。本章是程序设计的重点内容,
重点培养读者的逻辑思维能力和程序编写基本能力。要求读 者能理解循环结构的工作过程,并且能用循环语句解决
项目四
循环结构程序设计
实际问题,提高编程能力。
【学习目标】
(1) 掌握for语句、while语句和do„while语句的使用。 (2) 掌握break语句和continue语句的使用。 (3) 能够利用循环语句解决实际问题。
所有商品的总价格;收银员每扫描一次,也就是把该商品的
价格输入给x,然后把x的值转移加入到s盒子里,重复操作, 直到收银员按回车键,在这里用“0”代表回车;最后输出s 盒子中的值,就可得到所有商品的总价格。
第一部分
任 务 学 习
【解决方案】
#include<stdio.h> void main() { float x,s=0;
注:从上面的说明可以看出,C语言的for语句功能强大,
使用灵活,可以把循环体和一些与循环控制无关的操作也都 作为表达式出现,程序短小简洁。但是,如果过分使用
(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);
第一部分
一、while语句 二、for语句
任 务 学 习
三、do„while语句
四、break语句和continue语句
第一部分
任 务 学 习
一、while语句——超市收费系统
【问题提出】
有些在日常生活中遇到的循环问题,事先不知道循环次
数。例如在刚生产的1批药丸(每粒10g)中混入一个外观完
全相同的不合格药丸(15g),为了查找该药丸,逐个称重量, 直到查到15g的药丸为止,但事先并不知道要查多少次,这 时候就要使用循环语句中的while语句。
第一部分 {
任 务 学 习 }
for(;x<=9999;x++)
x=1000;
{ }
图4-7
for语句执行过程
第一部分
任 务 学 习
2) 如果省略表达式2,即不在表达式2的位置给出判断
循环终止条件,循环则会无终止地进行,也就是认为表达式
2始终为“真”。 3) 如果省略表达式3,即不在此位置进行循环变量的修 改,则应该其他位置(如循环体)安排使循环趋向于结束的工 作。
}
第一部分
任 务 学 习
程序运行结果如图4-4所示。
图4-4
循环结构程序运行结果
第一部分
任 务 学 习
【技能训练3】
计算近似值。
编写程序计算数学式„的近似值,直到最后一项的值小
于10-4为止。 分析: (1) 定义变量sum,并初值为0。 (2) 循环,sum=sum+1.0/1使得sum得到第一项;
如20名战士站好队报数,那么报数的操作要重复20次。用C
语言编写这一类程序的时候,一般使用for语句。
第一部分
任 务 学 习
【工作任务】
在某一黑夜一司机碰伤行人之后落荒而逃,经过警察的
调查之后,有3个目击者。 甲说:“车牌号的前两位相同。” 乙说:“车牌号的后两位加起来等于6。” 丙说:“车牌号是一个四位数,并且能被2整除。”
项目四
循环结构程序设计
项目四
1 2 3
循环结构程序设计
任务学习 项目学习 实验学习
第一部分 第二部分 第三部分
项目四
循环结构程序设计
许多问题的求解可归结为重复执行的操作,例如输入多
个同学的成绩、对象遍历、迭代求根等问题。这种重复执行
的操作在程序设计语言中用循环控制来实现,几乎所有实用 程序都包含循环。特别是在现代多媒体处理程序(图像、声 音、通信)中,循环更是必不可少。循环结构也是结构化程 序设计中的3种基本结构之一;最常用的循环语句有for语句、
数字,根据车牌号前两位相同,后两位加起来等于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); } }
置为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); }
for(x=1000;x<=9999;x++)
先给x赋初值1 000,判断x是否小于等于9 999,若是则 执行循环体语句,之后值增加1。再重新判断x是否小于等于 9 999,直到条件为假时,结束循环。如循环体有多条语
第一部分
任 务 学 习
句,要加大括号括起来。 (3) 特点:先判断表达式,后执行语句。
为真则执行循环体一次,否则跳出循环。 3) 计算表达式3的值,这里通常写更新循环变量的赋值 表达式,然后转回第二步重复执行。根据for语句的执行过
第一部分
任 务 学 习
程,也可以换一种更容易理解表示for语句的形式:
for(循环变量赋初值;循环条件;循环变量增量)循环体;
循环变量赋初值总是一个赋值语句,它用来赋给循环控制变 量初值;循环条件是一个关系表达式,它决定什么时候退出 循环;循环变量增量定义循环控制变量每循环一次后按什么 方式变化。这3个部分之间用“;”分开。
(4) 执行过程如图4-7所示。
(5) 说明:for语句中表达式1、表达式2、表达式3可以 省略其中的一个或两个,甚至3个表达式都同时省略,但是 起分隔作用的“;”不能省略。具体体现为以下几点。 1) 如果省略表达式1,即不在for语句中给循环变量赋
初值,则应该在for语句前给循环变量赋初值。
如: for(x=1000;x<=9999;x++)
第一部分
任 务 学 习
【运行情况】
神探抓贼程序运行结果如图4-6所示。
图4-6
神探抓贼程序运行结果
第一部分
任 务 学 习
【归纳分析】
(1) for语句的形式。
for(表达式1;表达式2;表达式3) { 循环体 } (2) for语句执行过程。
1) 计算表达式1的值,通常为循环变量赋初值。
2) 计算表达式2的值,即判断循环条件是否为真,若值
}
第一部分
任 务 学 习
【运行情况】
超市收费系统程序运行结果如图4-1所示。
图4-1
超市收费系统程序运行结果
第一部分
任 务 学 习
【归纳分析】
(1) while语句一般形式。
while(表达式)
{ 循环体语句; }
第一部分
任 务 学 习
其中,表达式称为“循环条件”,语句称为“循环体”。 为便于初学者理解,可以读做“当条件(循环条件)成立(为
如:
for(x=1000;x<=9999;) { „ x++; }
第一部分
任 务 学 习
4) 表达式1可以是设置循环变量初值的表达式(常用), 也可以是与循环变量无关的其他表达式;表达式1,表达式3
可以是简单表达式,也可以是逗号表达式。
如: for(i=0, j=100; i<=j; i++, j--) 5) 表达式2一般为关系表达式或逻辑表达式,也可以是 数值表达式或字符表达式,事实上只要是表达式就可以。
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;
while((float)1/n>=1e-4)
{ sum=sum+(float)1/n; n=n+1; }
printf("sum=%f\n",sum);
相关主题