应用题   程序test.c的功能是:利用以下所示的简单迭代方法求方程cos(x)-x=0的一个实根。
    迭代公式:xn+1=cos(xn)(n是迭代次数)
    迭代步骤如下:
    (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()实现程序的功能,最后main()函数调用函数writeDAT()把结果输出到文件out.dat中。
    请勿改动主函数main()和输出数据函数writeDAT()的内容。
    #include <math.h>    //表示这个程序中要引用vc6.0的数学库函数
    #include <stdio.h>  //表示这个程序要引用vc6.0的标准输入输出函数
    void writeDAT();  //writeDAT()函数的说明语句
    double countValue()
    {     }
    main ()
    {
    printf ('实根=%f\n', countValue ());  //在屏幕上显示方程的一个实根
    printf (' %f\n', cos (countValue ())  -countValue ());  //在屏幕显示求得这个实根的精度
    writeDAT ();  //把结果输出到文件out.dat中
    }
    / *函数writeDAT()把结果输出到文件out.dat中* /
    void writeDAT()
    {
    FILE *wf;    //定义文件指针变量wf
    wf=fopen ( 'out.dat', 'w' );    //以只写的方式打开out.dat,并使wf指向这个文件
    fprintf(wf, '%fkn', countValue());    //把求得的实根写入到文件out.dat
    fclose (wf);  //关闭文件out.dat
    }
 
【正确答案】double x1,x1=0.0; //定义双精度型变量x0,x1,变量x1赋初值为0.0 while(1) //执行while循环语句 { x0=x1; //把x1的值赋给x0 x1=cos(x0); //求出一个新的x1 if(fabs(x0-x1)<0.000001) //如果x0-x1的绝对值小于0.000001,则退出循环 break; //退出循环 } return x1; //此时x1的值就是方程的一个实根
【答案解析】Xn+1=cos(Xn)的迭代计算。 ①因为方程cos(x)-x=0的根为实数,所以定义两个双精度型变量x0,x1。并把变量x1的初值设为0.0。 ②根据题目中给出的求方程一个实根的迭代算法,在while循环中,首先把变量x1的值赋给x0,然后利用表达式cos(x0)求出一个值x1,再调用vc6.0的求绝对值的库函数fabs(),判断如果x0与x1差的绝对值小于0.000001,就认为x1的值是方程cos(x)-x=0的一个实根,此时退出循环,把x1的值返回。