[分享]任意位数整数运算,求2的n次方,圆周率的计算,这是本人最近无聊之时的练习,
任意位数整数运算,求2的n次方,圆周率的计算,这是本人最近无聊之时的练习,欢迎测试。开发工具为C++Builder,如果对特殊计算有兴趣的朋友或有这方面资料的朋友请多多联系,我最近向做一个计算器,谢谢!
----------------解决方案--------------------------------------------------------
还有一个,继续上传。
----------------解决方案--------------------------------------------------------
圆周率计算到小数点后多少位?
----------------解决方案--------------------------------------------------------
[讨论]
你的这些成果很不错,关于这方面我也有所研究,首先我写出关于两整数相乘的算法,与大家一同学习,如下#include<stdio.h>
#include<string.h>
main()
{
int i,j,k,m,n;
static char str1[100],str2[100];
static int a[100],b[100],c[200];
gets(str1); gets(str2);
m=strlen(str1)-1;
n=strlen(str2)-1;
for(i=0;i<=m;i++)
a[i]=str1[m-i]-'0';
for(i=0;i<=n;i++)
b[i]=str2[n-i]-'0';
for(i=0;i<=m;i++)
for(j=0;j<=n;j++)
c[i+j]+=a[i]*b[j];
for(i=0;i<m+n;i++)
{ k=c[i]/10; c[i]%=10;c[i+1]+=k; }
for(i=m+n;i>=0;i--)
printf("%d",c[i]);
getch();
}
在这个基础上,就可以编出两任意大小的实数相乘与相除的程序。其中两任意大实数相除我已经设定为保留小数500位,如果想保留更多位的话,只要稍作修改即可。
----------------解决方案--------------------------------------------------------
忘了上传文件,在这里补上
----------------解决方案--------------------------------------------------------
谢谢支持, 你能不能给出除法的???
----------------解决方案--------------------------------------------------------
上次我发的那个文件中的除法有错误,我把它修正了,运算的速度也有所提高,大家可以看一看。不过不足之处还是有的,例如,为了可以连续的输入任意大的数,我用了getche( )函数, ( getchar( )与gets( )好像只能输入不到200位 ) 结果导致backspace键失效,不知道楼主是如何解决这个问题的,可以把你编的程序的原代码告诉我吗?我的邮箱是 lhy198548@sohu.com 。
----------------解决方案--------------------------------------------------------
楼上的 lhy198548, 你用getche( )函数只能得到200位吗??我的是用scanf函数啊,也有问题,就是不能有空格,否则就会当作另外一个字符串。 在C++Builder中,因为是输入框,而且我限制了只能输入数字和负号,就不用任何读取函数,所以没有你说的问题。DOS界面的我也没法改正,只能靠用户的注意。我发过给你看看,请查收。
----------------解决方案--------------------------------------------------------
以下是引用seeker在2005-6-26 22:29:31的发言:
楼上的 lhy198548,
你用getche( )函数只能得到200位吗??我的是用scanf函数啊,也有问题,就是不能有空格,否则就会当作另外一个字符串。
在C++Builder中,因为是输入框,而且我限制了只能输入数字和负号,就不用任何读取函数,所以没有你说的问题。DOS界面的我也没法改正,只能靠用户的注意。我发过给你看看,请查收。
[attach]2442[/attach]
scanf("%[^\n]",ch);即可以解决,在knocker几天前发的scanf()释疑(现在置顶了)里面有,你可以看看 ----------------解决方案--------------------------------------------------------
谢谢楼上的。忘了还有这个格式可以用,呵呵!
----------------解决方案--------------------------------------------------------