这个程序为什么只运行一次啊

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

  i++;
  o=a ;
p=b; 
q=c;  
  a=(10+5*q)/9;
  b=(4*o+3*q-8)/10;
  c=(5*o+12*p)/20;      
  n=fabs(a-o);
  m=fabs(b-p);
  f=fabs(c-q);
  

}
while(n>=0.001 && m>=0.001 && f>=0.001);
printf("%f %f %f %f %f %f %f",a,b,c,m,n,f,i);
return 0;
}

开始时,opq都等于0
a = 10/9 = 1.111111;
b =-0.8;
c= 0/20 = 0.00;
n = fabs(a-o) = a = 1.111111
m=fabs(b-p)=0.8
f=fabs(c-q)=0;
所以while中的f >= 0.001不满足条件,结束循环

b=(4*0+3*0-8)/10
c=(5*0+12*0)/20

do....while循环执行第一次就没通过