这个循环结构为什么只运行一次?

#include<stdio.h>
#include<math.h>
int main()
{
double a=0,b, c,n,m,i=0;

do{
m=a;
c=(9m-10)/5;
b=(12
c-2)/2;
a=(20c-12b)/5;
i++;
n=a-m;
}
while(n<=0.0001);
printf("%f %f %f %f",a,b,c,i);
return 0;
}

c=-2
b=-13
a=(-40-12*(-13))/5 = 23.2
n=a-m = 23.2-0 = 23.2 > 0.0001
不满足n<=0001条件,自然循环结束了

do里面把n的值输出一下呗,循环体是n<=0.0001就继续循环?
如果循环条件是n>=0.0001就会循环执行多次。

img

j加入while (1)无限循环

#include <stdio.h>
#include <math.h>
int main()
{
    double a = 0, b, c, n, m, i = 0;
    while (1)
    {
        do
        {
            m = a;
            c = (9m - 10) / 5;
            b = (12c - 2) / 2;
            a = (20c - 12b) / 5;
            i++;
            n = a - m;
        } while (n <= 0.0001);
        printf("%f %f %f %f", a, b, c, i);
    }
    return 0;
}