3、说明与注意 a)先对e求值并判断循环体可能一次都不执行。每 执行一遍循环体,都要计算表达式e的值并以此决定是否再 次执行循环体 b)表达式e本身及循环体中应当包含对表达式e中 些控制循环变量的修改运算。因此,在 while循环体中或 表达式e本身应该有使表达式e的值趋于假(趋于0)的 操作,使得经过有限次循环操作后能退出循环;或存在exit、 break、goto、等强制结束循环的手段。否则,该 whiles循 环就会无休止地循环下去 c) while循环适用于循环次数不确定的情况
3、说明与注意 a) 先对 e 求值并判断,循环体可能一次都不执行。 每 执行一遍循环体,都要计算表达式e的值,并以此决定是否再 次执行循环体。 b) 表达式 e 本身及循环体中应当包含对表达式e中一 些控制循环变量的修改运算。因此,在 while 循环体中或 表达式 e 本身,应该有使表达式 e 的值趋于假(趋于0)的 操作, 使得经过有限次循环操作后能退出循环; 或存在exit、 break、goto、等强制结束循环的手段。否则, 该while•循 环就会无休止地循环下去。 c) while循环适用于循环次数不确定的情况
应用例 程序1:求两个整数的最大公约数(辗转相除法)。 int gcd( int a, int b intc i while( b=0) a%b b b=c return a
int gcd( int a ,int b ) { int c ; while( b!=0 ) { c = a%b ; a = b ; b = c ; } return a ; } 4、应用例 程序1: 求两个整数的最大公约数(辗转相除法)
程序2:统计输入的行数、单词的个数(假定一个单词是不含有空格的 字符序列)、以及输入的总的字符个数。 # define yes1/输入的单词未完* # define no0/下面是一个新单词* #include <stdio. h> main int c. n, nw, nc, inword= NO nl=nw=nc=0; while((c= getchar () =eoF)& ++nc; if (c=='n') ++nl if(c==,‖!c==‘n,|l==“t) inword=No; else if (inword==NO)i inword= YES 十nw; printf ("nl=%d nw=%d nc=%d\n?", nl, nw, nc);
#define YES 1 /* 输入的单词未完 */ #define NO 0 /* 下面是一个新单词 */ #include <stdio.h> main ( ) { int c , n , nw , nc , inword = NO ; nl = nw = nc = 0 ; while ( (c = getchar ( ) ) != EOF ) { ++nc ; if ( c = = ‘\n’ ) ++nl ; if ( c = =‘ ’ || c = = ‘ \n’ || c = = ‘\t ’ ) inword = NO ; else if ( inword = = NO ) { inword = YES ; ++nw ; } } printf ( “nl=%d nw=%d nc=%d\n” , nl , nw , nc ) ; } 程序2:统计输入的行数、 单词的个数(假定一个单词是不含有空格的 字符序列)、以及输入的总的字符个数
程序3:计算π/4≈1-1/3+1/5-1/7+ include <stdio.h> #include <math.h> main() doubles=o.x=1 int sign =1; long k= 1 while( fabs(x)>le-8)i s+=x; k+=2; x= sign/(double)k; x=4; printf(pi=%fn”,s); 程序输出:pi=3.141593
#include <stdio.h> #include <math.h> main ( ) { double s = 0 , x = 1 ; int sign = 1 ; long k = 1 ; while ( fabs (x) >1e-8 ) { s += x ; k += 2 ; sign *= -1 ; x = sign/(double)k ; } s *= 4 ; printf ( “pi=%lf\n” , s ) ; } 程序输出:pi=3.141593 程序3: 计算 π/4≈1 - 1/3 + 1/5 - 1/7 + ……
64d0-whe语句 do while是一种适用于构造“直到型”循环的循环语 句。它也适用于对循环次数不确定情况的循环处理。 do while循环与 while循环语句的功能是类似的。它们在语 法上的区别在于: while语句的循环条件判断在前 do while语句的循环条件判断在后。 、语句格式 do 语句循环体* while(e);/最后的分号必须有*/
6.4 do-while 语句 do_while是一种适用于构造“直到型” 循环的循环语 句。它也适用于对循环次数不确定情况的循环处理。 do_while循环与while循环语句的功能是类似的。 它们在语 法上的区别在于:while语句的循环条件判断在前, do_while语句的循环条件判断在后。 1、语句格式 do 语句 /* 循环体*/ while (e) ; /* 最后的分号必须有*/