其他也的whie语句形式 ●Whle(0){…} 由于表达式恒等于0,所以循环体永远也不 会执行,是一个逻辑错误的语句 ●Whle(1){…} 由于表达式恒等于1,所以不可能通过循环 控制条件来结束循环体的执行,即死循环。 为了保证循环正常运行,应该特别注意: 循环控制条件的描述 控制条件的初始状态(初始值) 循环体内部对控制条件的影响 2021/2/24
2021/2/24 其他的 11 while 语句形式 ⚫ while (0) { .... } – 由于表达式恒等于0,所以循环体永远也不 会执行,是一个逻辑错误的语句 ⚫ while (1) { .... } – 由于表达式恒等于1,所以不可能通过循环 控制条件来结束循环体的执行,即死循环。 ⚫ 为了保证循环正常运行,应该特别注意: – 循环控制条件的描述 – 控制条件的初始状态(初始值) – 循环体内部对控制条件的影响
64 do- while语句 12 语句一般格式 do语句 Whie(表达式) 功能: 先执行内嵌语句(循环体),之后计算 表达式的值,不为0(逻辑真)时,再 执行循环体并判断条件,直到表达式的 值为0结束循环,转去执行 while下面 的语句。 2021/2/24
2021/2/24 12 6.4 do-while语句 ⚫ 语句一般格式 do 语句 while (表达式); ⚫ 功能: – 先执行内嵌语句(循环体),之后计算 表达式的值,不为0(逻辑真)时,再 执行循环体并判断条件,直到表达式的 值为 0 结束循环,转去执行while下面 的语句
do-while循环的算法 13 流程图 NS结构图 循环体 循环体 当表达式为真 表达式非0? include<stdio h> void main( i int i=l, sum=0; do 用do- willet语句 I sumsum+i; 求100个自然数的和 ++ } while(i<=100); printf(%dn" sum); 2021/2/24
2021/2/24 13 do-while循环的算法 循环体 当表达式为真 N-S结构图 N Y 循环体 表达式非0? 流程图 #include<stdio.h> void main( ) { int i=1,sum=0; do { sum=sum+i; i++; } while (i<=100); printf("%d\n",sum); } 用do-while语句 求100个自然数的和
do- while语句的简单应用 14 【例62】用辗转相除法求m和n的最大公约数 思路: 先求m和n相除的余数r °然后将m←n,将n←r,并判断r(或n) 如果r0,再重复求余数,直到r等于0 时结束循环 此时的m为最大公约数 2021/2/24
2021/2/24 14 do-while语句的简单应用 【例6.2】用辗转相除法求m和n的最大公约数 思路: • 先求m和n相除的余数r • 然后将m←n,将n←r,并判断r(或n) • 如果r≠0,再重复求余数,直到r 等于 0 时结束循环 此时的m为最大公约数
算法和程序: 15 定义m、n、r Include<stdio. h> <n void maino T FI int m, n, r; m和n交换 scanf( %d, %d", &m, &n); if(m≤n) mEn irem; m=n; n=r; y nEr d 当r!=0时 Irm%n 输出最大公约数m m-n, n-r ]while(rlO); 程序运行情况如下:prnt("%dn"m); 2460∠ 12 2021/2/24
2021/2/24 算法和程序: 15 #include<stdio.h> void 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); } 程序运行情况如下: 24, 60 12 定义m、n、r m<n T F m和n交换 r=m%n m=n n=r 当r != 0时 输出最大公约数m