c语言计算sin(x)值的程序.泪奔跪求各位高手如下程序哪里出错了!

问题描述:

c语言计算sin(x)值的程序.泪奔跪求各位高手如下程序哪里出错了!
利用泰勒级数:
sin(x)=x-(x3/3!)+(x5/5!)-(x7/7!)+(x9/9!)-...
计算sin(x)的值,要求最后一项的绝对值小于10-5,并统计出此时累加了多少项.
要求:
(1)x为弧度,由键盘输入,输入前没有任何提示语.x的数据类型为double,x的正弦值(不能声明为sin(x),sin(x)为数学函数,变量只能包含数字、字母和下划线)的数据类型也为double,累加项数数据类型为int.
(2)输出为x的正弦值和累加项数,两者之间用英文逗号隔开,前者按照默认的保留六位小数进行显示,即%lf,没有附加字符串.
标准格式如下:
输入:3
输出:0.141120,9
屏幕显示样式如下:
3
0.141120,9
我编写了如下程序:
#include
#include
long int extra(int b)
{
int m,g;
for(m=1,g=1;m=pow(10,-5));
printf("%lf,%d\n",sum,counter);
return 0;
}
为何总是出不了结果呢?
1个回答 分类:综合 2014-10-19

问题解答:

我来补答
对你的程序作了3个修改:
#include
#include
long int extra(int b)
{
long int m,g; /* 修改第1处:g为阶乘值,至少应该是long int型,否则会溢出 */
for(m=1,g=1;m=pow(10,-5));
printf("%lf,%d\n",sum,counter);
return 0;
}
如果输入值1,会得到正确结果.但如果输入3,结果仍然会错误,根本原因在于你的求阶乘方法有缺陷,当这个正整数太大时,可能long int也表示不了它的阶乘值.你可以采用double数存储阶乘值.修改后的程序如下:
#include
#include
double extra(int b)
{
int m;
double g = 1.0;
for(m=1; m=pow(10,-5));
printf("%lf,%d\n",sum,counter);
return 0;
}
 
 
展开全文阅读
剩余:2000