大众信息网

帮我看看这个C 哪错了

关注:283  答案:3  手机版
解决时间 2021-08-14 05:10

下列程序的功能是:利用以下所示的简单迭代方法求方程:
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( )把结果输出到文件out9.dat中。
注意:部分源程序已给出。
请勿改动主函数main()和写函数writeDAT()的内容。

 

#include<math.h>
#include<stdio.h>
#include<stdlib.h>
void writeDAT();

float countValue( )
{
 float x0,x1;
 x1=0.0;
 
 do{
     x0=x1;
     x1=cos(x0);
 }while(fabs(x0-x1)>0.000001)
   return x1;
}

void main( )
{
 system("CLS");
 printf("实根=%f\n",countValue( ));
 printf("%f\n",cos(countValue( ))-countValue( ));
 writeDAT( );
}

void writeDAT( )
{
 FILE *wf;
 wf=fopen("out9.dat","w");
 fprintf(wf,"%f\n",countValue( ));
 fclose(wf);
}

最佳答案

在countvalue函数中cos返回的是double值,等号左边是float,不能直接赋值,可以使用x1=(float)cos(x0);


还有while后面要有分号,即while(fabs(x0-x1)>0.000001);

全部回答
warning C4244: '=' : conversion from 'double ' to 'float ', possible loss of data
乍看没什么问题,,编译通不过?
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!