如题所述
你说的这个题最后的结果是超出任何数据类型范围的,应该考的是模拟运算过程那种算法,你可以用字符数组来一位一位的存一个输,然后模拟10的100次方运算的过程来改变原有数组的字符,最后经过处理的字符数组里就是运算的结果
温馨提示:答案为网友推荐,仅供参考
第1个回答 2011-06-11
C代码:
#include<stdio.h>
#include<math.h>//fabs()
int main()
{ double x,s,a;//为了提高精度,我把它们定义成双精度的。
int i;
scanf("%lf",&x);//注意x为弧度,输入的值过大没意义只要在-2*∏~2*∏即可。因为C语言的运算精确度有限。例如输入1.7,输出0.99166465
a=x;
s=a;
for(i=1;;i+=2)
{
a*=x*x*(-1)/((i+1)*(i+2));
if(fabs(a)<1e-7) break;
s+=a;
}
printf("%.8f\n",s);
return 0;
} //用泰勒展开式求sinx
C++代码:
#include<iostream>
#include<cmath>//fabs()
#include<iomanip>//setprecision()
using namespace std;
int main()
{ double x,s,a;//为了提高精度,我把它们定义成双精度的。
int i;
cin>>x;//注意x为弧度,输入的值过大没意义只要在-2*∏~2*∏即可。因为C语言的运算精确度有限。例如输入1.7,输出0.99166465
a=x;
s=a;
for(i=1;;i+=2)
{
a*=x*x*(-1)/((i+1)*(i+2));
if(fabs(a)<1e-7) break;
s+=a;
}
cout<<setprecision(8)<<s<<endl;
return 0;
} //用泰勒展开式求sinx
另外,团IDC网上有许多产品团购,便宜有口碑
#include<stdio.h>
#include<math.h>//fabs()
int main()
{ double x,s,a;//为了提高精度,我把它们定义成双精度的。
int i;
scanf("%lf",&x);//注意x为弧度,输入的值过大没意义只要在-2*∏~2*∏即可。因为C语言的运算精确度有限。例如输入1.7,输出0.99166465
a=x;
s=a;
for(i=1;;i+=2)
{
a*=x*x*(-1)/((i+1)*(i+2));
if(fabs(a)<1e-7) break;
s+=a;
}
printf("%.8f\n",s);
return 0;
} //用泰勒展开式求sinx
C++代码:
#include<iostream>
#include<cmath>//fabs()
#include<iomanip>//setprecision()
using namespace std;
int main()
{ double x,s,a;//为了提高精度,我把它们定义成双精度的。
int i;
cin>>x;//注意x为弧度,输入的值过大没意义只要在-2*∏~2*∏即可。因为C语言的运算精确度有限。例如输入1.7,输出0.99166465
a=x;
s=a;
for(i=1;;i+=2)
{
a*=x*x*(-1)/((i+1)*(i+2));
if(fabs(a)<1e-7) break;
s+=a;
}
cout<<setprecision(8)<<s<<endl;
return 0;
} //用泰勒展开式求sinx
另外,团IDC网上有许多产品团购,便宜有口碑
第2个回答 2011-06-10
用字符数组输出,属于大数了追问
好吧 我试一下 谢谢
追答目前在VC6编译器环境下,能输出最大的数是__int64
第3个回答 2011-06-10
科学计数法啊追问
不能用科学计数法,要求直接输出
追答用字符串数组