2006年9月全國等級考試三級c語言上機題庫(二十一)

題目21(無憂id 53 疊代方法求方程題)

 

下列程式prog1.c的功能是:利用以下所示的簡單疊代方法求方程:cos(x)-x=0的一個實根。

xn+1=cos(xn)

疊代步驟如下:

(1)取x1初值為0.0;

(2)x0=x1,把x1的值賦給x0;

(3)x1=cos(x0),求出一個新的x1;

(4)若x0-x1的絕對值小於0.000001,執行步驟(5),否則執行步驟(2);

(5)所求x1就是方程cos(x)-x=0的一個實根,作為函式值返回。

請編寫函式countvalue()實現程式的要求,最後調用函式writedat()把結果輸出到檔案out17.dat中。

部分源程式已給出。

請勿改動主函式main()和輸出數據函式writedat()的內容。

#include <conio.h>

#include <math.h>

#include <stdio.h>

 

float countvalue()

{ double x0,x1;

x1=0.0;

do{ x0=x1;

x1=cos(x0);

}while(fabs(x0-x1)>=0.000001);

return x1;

}

 

main()

{

clrscr();

printf("實根=%f\n",countvalue());

printf("%f\n",cos(countvalue())-countvalue());

writedat();

}

 

writedat()

{

file *wf;

 

wf=fopen("out17.dat","w");

fprintf(wf,"%f\n",countvalue());

fclose(wf);

}