出力に関しては、seastar3さんのコメントをご参照ください。
その他気になった点を以下修正しています。
1.countについては、xM~xRの間に解がある時だけカウントするのではなく、iterationの数をカウントしたいのではないかと思います。この場合、count ++の場所が間違っています。(以下コードをご参照ください)
2.f(x)の定義がありません。2分法で求める対象の関数がなにか分かりませんが、例えばf(x)=(x-1)^3を対象の関数とした場合の例を、以下に記載します。
3.初期値が悪く、xL~xRの間に解が無い場合やtoleranceがシビアな場合、収束計算が終了しませんので、繰り返し計算の回数に上限を設けた方が良いかと思います。以下のコードでは50回を上限にしています。
C
1#include <stdio.h>
2#include <math.h>
3double f(double x)
4{
5 return x*x*x-3*x*x+3*x-1;
6}
7
8int main(void){
9double xM;
10xM=0.1;
11int count=0;
12double xL=0,xR=1.9;
13while((xR-xL > 0.0000001) && (count < 50)){
14printf("count++=%3d xL=%2.9f , xR= %2.9f, f1(xM)=%2.9f \n",count,xL,xR,xM,f(xM));
15xM=(xL+xR)/2;
16if (f(xL)*f(xM)<0)
17{xR=xM;
18}
19else{
20xL=xM;
21}
22count ++;
23}
24}
以下上記の実行結果ですが、解析解のx=1付近で収束計算が終了しています。