下列程序为什么执行结果为0,有哪个错误,怎么改?

来源:百度知道 编辑:UC知道 时间:2024/06/01 06:31:57
#include <iostream.h>
#include <cmath>
int main()
{
double tsin(double x);
double r,s,k;
cout<<"请输入一个数r和一个数s"<<endl;
cin>>r>>s;
if(r*r<=s*s)
k=sqrt(tsin(r)*tsin(r)+tsin(s)*tsin(s));
else
k=(tsin(r*s))/2;
cout<<k<<endl;
}
double tsin(double x)
{
double a,i,j;
a=x;
j=0;
int n;
n=1;
while(fabs(j)>=0.000001)
{
a*=-x*x;
n=n+1;
i=a/(2*n-1)/(2*n-2);
j+=i;
}
return j;
}

把tsin函数的while语句掉过来,用do while就好了。不然你一次都没执行while内的语句就结束了
#include <iostream.h>
#include <cmath>
void main()
{
double tsin(double x);
double r,s,k;
cout<<"请输入一个数r和一个数s"<<endl;
cin>>r>>s;
if(r*r<=s*s)
k=sqrt(tsin(r)*tsin(r)+tsin(s)*tsin(s));
else
k=(tsin(r*s))/2;
cout<<k<<endl;
}

double tsin(double x)
{
double a,i,j;
a=x;
j=0;
int n;
n=1;
do
{
a*=-x*x;
n=n+1;
i=a/(2*n-1)/(2*n-2);
j+=i;
} while(fabs(j)>=0.000001) ;
return j;