程序运行后的输出结果: sum=5050 注意: (1)如果在第一次进入循环时,wile后圆括号内 表达式的值为0,循环一次也不执行。在本程序中,如果 的初值大于100,将使表达式<=100的值为0,循环体 也不执行。 (2)在循环体中一定要有使循环趋向结束的操作, 以上循环体内的语句i++使不断增1,当>100时,循环 结束。如果没有引++这条语句,则的值始终不变,循环 将无限进行
程序运行后的输出结果: sum =5050 注意: (1)如果在第一次进入循环时,while后圆括号内 表达式的值为0,循环一次也不执行。在本程序中,如果i 的初值大于100,将使表达式i<=100的值为0,循环体 也不执行。 (2)在循环体中一定要有使循环趋向结束的操作, 以上循环体内的语句i++使i不断增1,当i>100时,循环 结束。如果没有i++这条语句,则i的值始终不变,循环 将无限进行
(3)在循环体中,语句的先后位置必须符合逻辑, 否则将会影响运算结果,例如,若将上例中的while循环 体改写成: while (i<=100) { i++ /*先计算i++,后计 算sum的值*/ sum=sum+i; 运行后,将输出: sum=5150 运行的过程中,少加了第一项的值1,而多加了最后 一项的值101
(3)在循环体中,语句的先后位置必须符合逻辑, 否则将会影响运算结果,例如,若将上例中的while循环 体改写成: while (i<=100) { i++ ; /*先计算i++,后计 算sum的值*/ sum=sum+i; } 运行后,将输出: sum=5150 运行的过程中,少加了第一项的值1,而多加了最后 一项的值101
2.范例二 程序5-2:用n/4=1-1/3+1/5-1/7+1/9-.公式 求n的近似值,直到最后一项的绝对值小于10-4为止。 本题的基本算法也是求累加和,但比例5-1稍为复杂。 与例5-1比较,不同的是: (1)用分母来控制循环次数,若用存放分母的值, 则每累加一次应当增2,每次累加的数不是整数,而是 一个实数,因此n应当定义成loat类型。 (2)可以看成隔一项的加数是负数,若用t来表示相 加的每一项,因此,每加一项之后,t的符号应当改变, 这可用交替乘1和-1来实现
2.范例二 程序5-2:用π/4=1-1/3+1/5-1/7+1/9 -.公式 求π的近似值,直到最后一项的绝对值小于10-4为止。 本题的基本算法也是求累加和,但比例5-1稍为复杂。 与例5-1比较,不同的是: (1)用分母来控制循环次数,若用n存放分母的值, 则每累加一次n应当增2,每次累加的数不是整数,而是 一个实数,因此n应当定义成float类型。 (2)可以看成隔一项的加数是负数,若用t来表示相 加的每一项,因此,每加一项之后,t的符号应当改变, 这可用交替乘1和-1来实现
3)从以上求n的公式来看,不能决定n的最终值应该 是多少;但可以用最后一项t(1/n)的绝对值小于10-4 来作为循环的结束条件。 程序如下: #include "math.h" /*调用fabs函数时 要求包含math.h文件*/ main() int s;
3)从以上求π的公式来看,不能决定n的最终值应该 是多少;但可以用最后一项t(1/n)的绝对值小于10-4 来作为循环的结束条件。 程序如下: #include "math.h" /*调用fabs函数时 要求包含 math.h文件*/ main( ) { int s;
float n,t,pi; t=1.0; /*t中存放每项的 值,初值为1*/ pi=0, pi中存放所求的n的值,初值为0*/ n=1.0; /*n中存放 每项分母*/ s=1.0 /*s中存放每项分 子,其值按公式在1和-1之间变化*/ while fabs(t)>=1e-4) pi=pi+t;
float n, t, pi; t=1.0; /*t中存放每项的 值,初值为1 */ pi=0; /* pi中存放所求的π的值,初值为0*/ n=1.0; /*n中存放 每项分母*/ s=1.0; /*s中存放每项分 子,其值按公式在1和-1之间变化*/ while ( fabs(t)>=1e-4) { pi=pi+t;