例6.1求1+2+…+100 分析: 求和的过程为: S0=0 SI=S0+1 2)S=1+2 S2=S1+2 3)S=1+2+3 S3=S2+3 100)S=1+2+…+100 S100=S99+100 求和表达式: S=S+ 初值: S=0 循环次数i: 1~100
例6.1 求 1 + 2 + ······ + 100 分析: 求和的过程为: 1) S=1 S1 = S0 + 1 2) S=1+2 S2 = S1 + 2 3) S=1+2+3 S3 = S2 + 3 ······ ······ 100) S=1+2+ ··· +100 S100 = S99+100 S0 = 0 求和表达式: S = S + i 初值: S = 0 循环次数 i : 1~100
流程图: 程序: 定义变量s, main) f int s=,i=1 s=0,i=1 while(i<=100) i<100 {S+ 循环条件控制语句 s+=; i++ i+十 循环条件改变语句 printf("s=%ldn",S); 输出s
定义 变量 s, i s=0, i=1; i≤ 100 s+=i; i++; 输 出s N Y 流程图: 程序: main ( ) { int s, i; s = 0,i = 1; while ( i < = 100 ) { s+=i; i++; } printf("s=%ld\n", s); } 循环条件控制语句 循环条件改变语句
注意: 如果循环体中包含一个以上的语句,应该用花括弧 括起来,以复合语句的形式出现。如果不加花括弧,则 whle语句的范围只到whle后的第一个分号处。 在循环体中应该有使循环趋向结束的语句,否则会 导致死循环。 如上例中的语句改写 则whil语句的循环体语句为 成如下形式 循环变量i的值没有改变,循 while(i<=100) 环不能终止,陷入死循环 i++;
注意: 如果循环体中包含一个以上的语句,应该用花括弧 括起来,以复合语句的形式出现。如果不加花括弧,则 while语句的范围只到while后的第一个分号处。 在循环体中应该有使循环趋向结束的语句,否则会 导致死循环。 如上例中的语句改写 成如下形式: i=1; while ( i < = 100 ) s+=i; i++; 则while语句的循环体语句为: s+=i; 循环变量i的值没有改变,循 环不能终止,陷入死循环
二、do- while语句 格式:do<语句A;> while(<条件>); 流程图: 语句A 表达式 非0(真) 0(假)
二、do-while 语句 格式: do < 语句A ;> while ( < 条件 > ); 流程图: 非 0(真) 0(假) 语句 A 表达式
执行过程: 执行内嵌语句A,在判断表达式(条件)若为真,则 继续执行内嵌语句A,再判断表达式(条件)…,直到表 达式的值为假时,执行 do-while后面的语句。 与 while语句的不同: do- whilel语句至少执行循环体一次,但 while语句当 条件为假时不执行循环体语句
执行内嵌语句A,在判断表达式(条件)若为真,则 继续执行内嵌语句A,再判断表达式(条件)···,直到表 达式的值为假时,执行do-while后面的语句。 执行过程: 与while语句的不同: do-while语句至少执行循环体一次,但while语句当 条件为假时不执行循环体语句