实现当型循环结构的C语句形式为while表达式-Read
4.4.3 对分法求方程实根 设非线性方程为 f (x)=0 用对分法求在区间[a,b]上的实根。 具体方法如下: 从区间端点x0=a出发,以h为步长,逐步往后进行扫描。 对于每一个被扫描的子区间[xi,xi+1](其中xi+1=xi+h)作如下处理: 若在子区间两个端点上的函数值f (xi)与f (xi+1)同号,则说明在该子区间上没有实根,将扫描下一个子区间;否则说明在该子区间上至少有一个实根。此时就可以在该子区间上采用对分法进一步搜索实根。 对分法的基本过程如下: 取子区间[xi,xi+1]的中点 如果f(x)与f(xi)同号,则令xi=x;否则令xi+1=x。 然后重复这个过程,直到满足条件 为止。其中ε为事先给定的精度要求。 图4.9 对分法求方程实根的流程图 对分法求方程实根的流程图如图4.9所示。 例4.15 用对分法求方程 f (x)=x2―6x―1=0 在区间[-10,10]上的实根,即A=-10,B=10。取扫描步长H=0.1,精度要求 。 相应的C程序如下: #include "stdio.h" main() { int flag; double a=―10.0,b=10.0,h=0.1,x1,y1,x2,y2,x,y; x1=a;y1=x1*x1-6*x1-1.0; x2=x1+h;y2=x2*x2-6*x2-1.0; while (x1<=b) { if (y1*y2>0.0) { x1=x2;y1=y2;x2=x1+h;y2=x2*x2-6*x2-1.0;} else { flag=0; while (flag==0) { x=(x1+x2)/2; if (fabs(x2-x1)<0.000001) { printf("x=%11.7f\n",x); x1=x+0.5*h;y1=x1*x1-6*x1-1.0; x2=x1+h;y2=x2*x2-6*x2-1.0; flag=1; } * * 第4章 循环结构 4.1 当型循环与直到型循环 4.2 for 循 环 4.3 循环的嵌套与其他有关语句 4.4 程序举例 4.1 当型循环与直到型循环 4.1.1 当型循环结构 当型循环结构的流程图如图4.1所示。 图4.1 当型循环结构流程图 在图4.1中,条件在程序中一般是一个逻辑表达式,条件满足是指逻辑表达式的值为真。循环体可以是单个语句,也可以是由若干可执行语句组成的复合语句,它们是需要重复执行的操作。 当型循环的执行过程是:当条件满足(即逻辑表达式的值为真)时,执行循环体中所包括的操作,当循环体执行完后,将再次判断条件,直到条件不满足(即逻辑表达式的值为假)为止,从而退出循环结构。 实现当型循环结构的C语句形式为 while (表达式) 循环体语句 功能:当表达式值≠0时,执行循环体,执行完后继续判断表达式值,只有当表达式值=0时才退出循环。 例4.2 从键盘输入各学生成绩,并对90分以上(包括90分)的学生人数进行计数,直到输入的成绩为负为止,最后输出成绩在90分以上的学生人数。 图4.3 例4.2的流程图 其流程图如图4.3所示。其中变量count为整型,用于对90分以上的学生人数进行计数。 相应的C程序如下: #include "stdio.h" main() { int count; float grade; count=0; scanf("%f",&grade); while (grade>=0.0) { if (grade>=90.0) count=count+1; scanf("%f",&grade); } printf("count=%d\n",count); } 4.1.2 直到型循环结构 直到型循环结构的流程图如图4.4所示。 图4.4 直到型循环结构流程图 直到型循环的执行过程是,首先执行循环体,然后判断条件(即计算逻辑表达式),如果条件满足(即逻辑表达式值为真),则退出循环结构