一応投下
#include <stdio.h> 
#include <math.h> /* fabs()で使用 */
int main(void){ 
    /* 変数の初期化 */ 
    double x,px= 5.0;
    int i=1; 
    /* 計算開始 */ 
    do{ 
        x = px; 
        /* 
        f(x) = x^3 - 3x^2 + x - 3 
        f'(x) = 3x^2 - 6x + 1 
        x[i+1] = x[i] - f(x)/f'(x) 
        */ 
        px = x - (x*(x*(x - 3.0) + 1.0) - 3.0)/(x*(x*3.0 - 0.6 ) + 1.0); 
        printf("%d回目 : x[%d] = %f\n",i,i,x); /* |x[i+1] - x[i]| <= 10^-5 */ 
        i++;
    } while(fabs(px - x) >= 0.00001 && i<300);/* 300回くらいまわっても収束しないなら打ち切る */
    if(i<300){
        printf("終了条件になりました\n");
    }else{
        printf("皇太子さまは無限ループに興味を持たれたようです。 \n");
    }
    return 0; 
}