C++初学者,帮忙挑一下错

来源:百度知道 编辑:UC知道 时间:2024/05/31 07:50:26
题目:编写函数mySin(x)计算正弦函数
算法:sin x = x/1! - (x^3)/3! + (x^5)/5! - (x^7)/7! + ……
直到通项绝对值小于1e-7。x的值为弧度。
我编的程序如下(通过函数调用):
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
int mySin(double);

int main()
{
double x,y;
cin>>x;
y=mySin(x);
cout<<"sin x = "<<setiosflags(ios::fixed)<<setprecision(6)<<y<<endl;
return 0;
}

int mySin(double z)
{double t, p, s, m, n=1, j, b=1, sin=0;
while ((fabs(t))>=1e-7)
{s=pow(z,n);
for(j=1; j<n; j++)
m=n*j;
p=pow(-1,b-1);
t=(s/m)*p;
sin=sin+t;
n=n+2;
b=b+1;
}
return (sin);
}

编译、连接均无错误,但最后运行是无论输入何数,结果均为零,到底是怎么回事?

你应该学会加入断点后的调试运行,观察变量
这样你可以很容易的找到错误
也是一个应该掌握的技能

{double t, p, s, m, n=1, j, b=1, sin=0;
while ((fabs(t))>=1e-7)
t没有初始值,这个怎么判断?

t没有初始值