循环结构程序设计
第5章 循环结构程序设计

do-while语句的简单应用 do-while语句的简单应用
【例5.3】用辗转相除法求m和n的最大公约数 5.3】用辗转相除法求m
定义m、 、 定义 、n、r m<n T F m和n交换 和 交换 r=m%n m=n n=r 当r != 0时 时 输出最大公约数m 输出最: 算法和程序:
main( ) { int m,n,r; scanf("%d, %d",&m,&n); if (m<n) { r=m; m=n; n=r; } do { r=m%n; 程序运行情况如下: 程序运行情况如下: m=n; 24, 60 24, n=r; 12 }while(r!=0); while(r!=0 printf("%d\n",m); }
for语句的算法 for语句的算法
流程图 计算表达式1 计算表达式
表达式2 表达式 为真? 为真
15
N-S结构图 结构图 for (表达式 表达式 表达式 表达式1;表达式 表达式3) 表达式 表达式2;表达式 N 语句
Y 语句 计算表达式3 计算表达式
例如: 例如: 可部分或全部省略, 可部分或全部省略, main( ) 但“;”不可省略 { int i,sum; sum=0; for ( i=1; i<=100; i++) i=1 i<=100; sum=sum+i; sum=sum+i; printf("sum=%d\n",sum); }
龙诚数码:
18
for语句的简单应用 for语句的简单应用
【例5.4】求n! ,即计算p=1×2×3×…×n 5.4】 即计算p=1× 的值。 的值。
C语言程序设计_05循环结构程序设计

5.2 DO…WHILE循环结构 5.2.1 DO…WHILE语句的格式 DO…WHILE语句的一般格式为: DO 语句 WHILE(表达式); DO…WHILE语句中的表达式表示循环的条件,可 以是任何表达式,常用的是关系表达式和逻辑表达 式。表达式必须加圆括号。语句是重复执行的部分, 称作循环体。
由亍循环体在表达式2乊后表达式3乊前执行所以把循环体语句放在表达式3的开头循环体语句不原来的i构成逗号表达式作为循环语句新的表达式3从而也就没有循环体语句了
第5章 循环结构程序设计
5.1 WHILE循环结构 5.2 DO…WHILE循环结构 5.3 FOR循环结构 5.4 与循环有关的控制语句 5.5 3种循环语句的比较 5.6 循环的嵌套 5.7 循环结构程序举例 本章小结
图5-6 FOR语句执行过 程
FOR语句的执行过程如图5-6所示。具体由以下几步 完成: (1)求表达式1。 (2)求表达式2,并判定其值为0或非0。若值为非0, 转步骤(3);否则结束FOR语句。 (3)执行语句,然后求表达式3。 (4)转向步骤(2)。 由FOR语句的执行流程可知,表达式1的作用是为循 环控制的有关变量赋初值,表达式2是循环控制条件, 表达式3用于修正有关变量,语句是重复执行部分。
【例5.7】输入20个数,求出其中的最大值与最小值。
5.3.3 FOR语句的各种变形 1.在FOR语句中省略表达式 FOR语句中的3个表达式可以部分或全部省略,下面 给出语句的4种基本变形。 (1)表达式1移至FOR语句前,但它后面的分号必 须保留。这时FOR语句的形式为: 表达式1; FOR(; 表达式2; 表达式3) 语句
(2)表达式3移至循环体语句之后,但它前面的分 号必须保留。FOR语句的形式为: FOR(表达式1; 表达式2;) { 语句; 表达式3; } 对于求P=5!的程序段,省略表达式3,将其放在循环 体中,则程序段写成:
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;
程序设计的三种基本结构

程序设计的三种基本结构一、概述程序设计的三种基本结构是顺序结构、选择结构和循环结构。
这三种结构是程序设计中最基础且最重要的部分,它们构成了程序的主体框架,决定了程序的执行流程。
二、顺序结构顺序结构是最简单的一种程序结构,按照程序编写的顺序执行,没有条件判断和循环。
通过顺序结构,我们可以实现程序按照预定的操作步骤依次执行。
例如,在一个简单的计算器程序中,用户输入两个数,程序按照先后顺序进行加、减、乘、除的计算。
顺序结构示例代码:1. 输入第一个数2. 输入第二个数3. 计算两个数的和4. 输出计算结果三、选择结构选择结构根据条件判断的结果选择执行不同的代码块。
条件判断通常使用逻辑表达式,判断结果为真或假。
根据判断结果,程序将执行相应的代码块。
例如,在一个学生成绩管理系统中,根据学生的分数判断其等级,可以使用选择结构实现。
如果分数大于等于90,则为优秀;如果大于等于80,则为良好;如果大于等于60,则为及格;否则为不及格。
选择结构示例代码:1. 输入学生分数2. 如果分数大于等于90,输出优秀3. 如果分数大于等于80,输出良好4. 如果分数大于等于60,输出及格5. 否则,输出不及格四、循环结构循环结构根据条件是否满足重复执行某一段代码块,直到条件不满足为止。
循环结构包括while循环、do-while循环和for循环。
循环结构在需要重复执行相同或类似操作的情况下非常有用。
例如,在一个打印九九乘法表的程序中,可以使用循环结构实现。
通过嵌套的循环不断改变乘法表中的行和列,直到打印完整个九九乘法表。
循环结构示例代码:1. 初始化行数和列数2. 当行数小于等于9时执行循环1. 当列数小于等于行数时执行循环1. 计算乘积并输出2. 列数加12. 行数加1五、总结顺序结构、选择结构和循环结构是程序设计的三种基本结构。
通过这三种结构的组合和嵌套,我们可以实现复杂的程序逻辑,完成各种任务。
在实际的程序开发中,我们需要合理运用这些基本结构,以提高程序的可读性和可维护性。
汇编语言程序设计第七章 循环结构程序

2. LOOPE/LOOPZ 条件重复控制指令
指令汇编格式: LOOPE/LOOPZ AGAIN
操作: (1) CX CX-1
(2) 若CX≠ 0且ZF=1,则使控制转到AGAIN 标识的循环入口处,继续下一次循环,否则退出循 环体,执行后续指令。
例 比较两个字符串是否相等。
STR1 DB
‘12345’
DSEG SEGMENT
DATA DB
10,20,30,80,100,90,120
CNT DW 7
ADR DW 0FFFFH
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG,ES:DSEG
START: MOV AX,DSEG MOV DS,AX
DATA1 00H
01H 00H 02H
: :
SI DATA2 00H
10H
50
00H
个
20H
字
单
:
元
:
DI SUM 00H
BX
00H
50
00H 50
个
00H
个
字 单
:
字 单
元
:
元
00H
00H
例7.1 设内存DATA1和DATA2开始分别存放50个无符 号字数据,编制程序将两个存储区对应字数据求和并存 入SUM开始的单元。
存储器中仅由字节或字组成的一组数据称为数据串。由字节组 成的数据串称为字节数据串,简称字节串;由字组成的数据串称为 字数据串,简称字串。一个数据串的长度最长不能超过64KB。
数据串操作指令的寻址方式为数据串寻址:
(1)指令中要处理的两个数据串应分别在数据段和附加段中定义。 (2)数据段中定义的数据串要用SI作指针;
第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
第四章 循环结构程序设计

while(i<=100)
{ i++;
程序运行结果: sum=5050
sum=sum+i;
}
6
4.3 do-while语句
do-while语句的结构 do 语句 while(表达式);
例如: do
x-=1; while(x>0);
功能:
1)执行“语句”。 2)计算“表达式”的值。如果值为非0,转1);否则转3)。
}
8
4.3 do-while语句
1)循环体如果包含一个以上的语句,要用复合语句表示。 2)在循环体中应有使循环趋于结束的语句。 3)while语句的特点是先执行循环体,然后判断表达式的值。 4)一般情况下,用while语句和用do-while语句处理同一 个问题时,若二者的循环体部分一样,其结果也一样。但如
18
4.7 goto语句以及用goto语句构成循环结构
goto语句的一般格式:
goto 语句标号;
例如: goto loop;
功能:程序执行到goto语句时,将程序流程转到语句标号指定的 语句去执行。
有标号的语句的格式:
语句标号: 语句
例如: loop: sum=sum+i;
19
4.7 goto语句以及用goto语句构成循环结构
【例4-9】用goto语句实现求1~100累加和。
#include <stdio.h>
main() { int n=1, sum=0; loop: sum += n; n++;
if(n<=100) goto loop;
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 循环结构程序举例
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第五章 循环结构程序设计
1. i=0, x从0到1 j=0,if 为0 ,x从1到2 j=0,if 为0, x从5到6 j=1,if 为1 j=1,if 为1 内部循环 j=2,if为0,x从2到3 j=2,if为0 ,x从6到7 for(j=0;j<=3;j++) j=3,if为1 j=3,if为1 { if(j%2) continue;
main ( ) { int s,n ; s=0 ; n=1; while(n<=100) { s=s+n ; n++; } printf(“%d\n”, s); }
第五章 循环结构程序设计
n
n 1
100
教师:赵军富
2012年4月1日 星期日
§5.1.2 while语句
3.说明:
(1)当循环体中语句多于一 条时,用{ },否则,循环只 对一个,起作用。 (2)循环体内部必须有实现 对循环变量增值的语句,否 则,易出现“死循环”。 (3) 条件表达式要有括号, 后面不加分号。
输入:12 输出: s=0
教师:赵军富
2012年4月1日 星期日
§5.2 goto、break、contiue语句
§5.2.1 goto语句(无条件转向语句)
第五章 循环结构程序设计
标号由数字,字母, 下划线组成
1、一般格式:goto 语句标号;
功能:执行该语句时,将程序流程无条件地转向指 定标号所在的语句继续执行。
教师:赵军富
变量的增量 循环体
2012年4月1日 星期日
§5.1.1 for语句
3、说明:
第五章 循环结构程序设计
(1)表达式1,表达式2和表达式3均可缺省
分号始终不能缺省!
for (;n<100;n++) for (n=0;;n++) for (n=0;n<100;) for (; ;) for (;n<100;) 缺省e1, n 应在循环之前赋初值 缺省e2, 造成死循环,不可使用! 缺省e3, n增量应在循环体内进行 缺省e1,e2,e3 死循环 缺省e1,e3
即:执行--测试---执行--测试-循环体 Y 条件 N
s
n
n 1
x
do 语句 while (条件);
教师:赵军富
2012年4月1日 星期日
§5.1.3 do-while语句
例1: main() { int n=1,s=0,x; scanf("%d",&x); do {s=s+n; n++;} while (n<=x); printf("s=%d\n",s); }
教师:赵军富
2012年4月1日 星期日
§5.2 goto、break、contiue语句
main( ) { int i,j,a=0; for(i=0;i<2;i++) { for(j=0;j<4;j++) { if(j%2) break; a++; } a++; # } printf(“a=%d\n”,a); }
2、语句标号 例如: loop: if(x<=y); 格式:标号:语句; 功能:指示语句在程序中的位置,作为转移语句的转
移目标 。 scanf(“%d,%d”,&x,&y); loop: if(x<=y) { t=x;x=y;y=t; goto loop; }……
教师:赵军富
2012年4月1日 星期日
一、循环问题
问题1: y
第五章 循环结构程序设计
n
n 1
100
求1+2+3+…+100的和。
什么是循环? 为什么要使用循环?
问题2:求学生平均成绩。(分数相加后除以课数) 问题3:找出整数[1~1000]中能同时被3和7整除的数。 循环是有规律的重复操作。将复杂问题分解为简单的操作 过程,程序只对简单过程描述,这些过程的多次重复就可完成 对问题的求解。 for循环 先判断条件后循环 while循环 (当型循环) if--goto 循环 先循环后判断条件 do while循环 (直到型循环)
说明:goto可以从 较深的多重循环中
转移到外层,或从
函数内,转移到函
数外,不能从外到
内
教师:赵军富
2012年4月1日 星期日
§5.2 goto、break、contiue语句
§5.2.2 break语句 1、一般格式:break;
第五章 循环结构程序设计
break语句的功能:
(1)在switch语句中结束case子句,使控制转 到switch语句之外。 (2)在循环结构中,break语句使流程转向该循 环体的外层继续运行。向外退出一层循环
第五章 循环结构程序设计
(1) (2)
输出number 的值 1 2 3
结果 : *1 *2 **3
教师:赵军富
2012年4月1日 星期日
§5.1.3 do-while语句
第五章 循环结构程序设计
1. 一般格式:do 循环体 while(表达式); 2. 执行顺序:先执行循环体,再判断表达式的值,若为非零 ,重复执行循环体语句,再判断…….直到表 达式的值为零,退出循环体。
(3)for语句的3种形式:
(1) for(初值;判断;增量) 语句; (2)for(初值;判断;增量) {复合语句;} (3)for(初值;判断;增量);
教师:赵军富
2012年4月1日 星期日
§5.1.1 for语句
第五章 循环结构程序设计
特点:先判断后循环
以下程序的输出结果区别
输出结果: main() n=11 { int n,s; ; for(n=1;n<=10;n+=2); printf("n=%d\n",n); } 无循环体
第五章 循环结构程序设计
例1:求 1+2+3…+n<=10000的最 大的n。 main( ) { int n,sum; sum=0;n=0; while(sum <=10000) { ++n; sum+=n; } printf(“1+2+3…..+%d=%d\n”, n-1,sum-n); }
(4) 注意条件的边界值。
2 、三种循环各有特点:
(1) 当循环次数及条件在程序运行中才能确定时,选 用while( )或do-while( )语句 两者区别:while( ) 顶部测试,可能一次也不执行 do-while( )底部测试,至少执行一次
main() { int n,s; for(n=1;n<=10;n+=2) printf("n=%d\n",n); printf("n=%d\n",n); }
循环体
输出结果: n=1 n=3 n=5 n=7 n=9
教师:赵军富
2012年4月1日 星期日
§5.1.2 while语句
第五章 循环结构程序设计
1. 一般格式:while(表达式) 循环体; 2. 执行顺序:先判断表达式的值,若为非零(真),重复执行循 环体语句,再判断…直到表达式的值为零,退出 循环体。
入口
条件
N
Y 循环体
出口
即:测试---执行--测试--执行-教师:赵军富
2012年4月1日 星期日
§5.1.2 while语句
例1:对自然数1-100求和 s
教师:赵军富
2012年4月1日 星期日
§5.1.2 while语句
例3:循环进行了多少次?输出的值? main( ) { int number=0; while(number++<=1) printf(“*%d\n”,number); printf(“**%d\n”,number); }
条件表达式 执行次数 1 2 3 条件表达式 中变量的值 0 1 2 执行哪个 printf语句 (1) (1) (2)
§5.2 goto、break、contiue语句
main( ) { int k, sum=0; k=1; loop: if(k<=100) { sum=sum+k; k++; goto loop; } printf(“%d”,sum); }
例如:if_gotoloop.c
第五章 循环结构程序设计
如何求100以下 所有13的倍数
教师:赵军富
2012年4月1日 星期日
§5.2 goto、break、continue语句 第五章 循环结构程序设计
§5.2.2 continue语句格式: 一般格式:continue; continue语句的功能:
(1)continue语句仅能在循环语句中使用。 (2)它的作用不是结束循环,而是开始一次新的循环。 (结束本次循环继续下一次循环) (3)对于for语句,将控制转到执行增量和条件测试部分。 (4)对于while和do-while语句,将控制转到条件测试部分。
第五章 循环结构程序设计
第五章
循环结构程序设计
教师:赵军富
2012年4月1日 星期日
本章内容
第五章 循环结构程序设计
§ 5.1 循环语句 § 5.2 break语句、continue语句和goto语句 § 5.3 几种循环的比较 § 5.4 循环的嵌套
教师:赵军富
2012年4月1日 星期日