说明 whil和 do-while都能实现循环控制, while 结构程序通常都可以转换成 do-while结构 ●区别: do-Whi|e语句先执行循环体再判断条 件,循环体至少执行一次; while语句先判断条件再执行循环体, 循环体有可能一次也不执行 ● do while循环体中一定要有能使表达式值 趋于0的操作(如计++),否则会出现死循环。 2021/2/21
2021/2/21 说明: 11 ⚫ while和do-while都能实现循环控制,while 结构程序通常都可以转换成do-while结构 ⚫区别: – do- while 语句先执行循环体再判断条 件,循环体至少执行一次; – while 语句先判断条件再执行循环体, 循环体有可能一次也不执行 ⚫ do—while循环体中一定要有能使表达式值 趋于0的操作(如i++),否则会出现死循环
do- while语句的简单应用 12 【例53】用辗转相除法求m和n的最大公约数 定义m、n、r msn T F m和n交换 amon mEn mEr 当r!=0时 输出最大公约数m 2021/2/21
2021/2/21 12 do-while语句的简单应用 【例5.3】用辗转相除法求m和n的最大公约数 定义m、n、r m<n T F m和n交换 r=m%n m=n n=r 当r != 0时 输出最大公约数m
算法和程序: 13 main( 运行53 f int m, n, r; scanf(%d, %d", &m, &n); if(m≤n) r=m;m≡n;n=r;} do irm%n 程序运行情况如下: mEng 24,60 hEr While(rl=O); 12 printf( %dIn", m); 2021/2/21
2021/2/21 算法和程序: 13 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; n=r; }while(r!=0); printf("%d\n",m); } 运行jc5_3 程序运行情况如下: 24, 60 12
3fo语句 14 语句一般格式 循环控制条件 fr《表达式表达式2表达式3) 语句 循环初始条件 循环体 功能 计算表达式1的值,再判断表达式2,如果其 值为非0(逻辑真),则执行内嵌语句(循环 体),并计算表达式3;之后再去判断表达式2, 直到其值为0时结束循环,执行后续语句。 2021/2/21
2021/2/21 14 5.3 for语句 ⚫ 语句一般格式 for (表达式1;表达式2;表达式3) 语句 ⚫功能: –计算表达式1的值,再判断表达式2,如果其 值为非0(逻辑真),则执行内嵌语句(循环 体),并计算表达式3;之后再去判断表达式2, 一直到其值为0时结束循环,执行后续语句。 循环初始条件 循环控制条件 循环体
fo语句的算法 15 流程图 NS结构图 计算表达式口 for(表达式l;表达式2;表达式3) 语句 表达式2 为真? 例如: 可部分或全部省略, main( 语句」 i int i, sum 但“;”不可省略 sum=0 「计算表达式3 for(|=1;=100+) sum=sum+I printf( sum=%dIn",sum) 2021/2/21
2021/2/21 15 for语句的算法 N-S结构图 for (表达式1;表达式2;表达式3) 语句 N Y 流程图 计算表达式1 语句 计算表达式3 表达式2 为真? 例如: main( ) { int i,sum; sum=0; for ( i=1; i<=100; i++) sum=sum+i; printf("sum=%d\n",sum); } 可部分或全部省略, 但“;”不可省略