当前位置: 代码迷 >> C语言 >> [分享]任意位数整数运算,求2的n次方,圆周率的计算,这是本人最近无聊之时 ...
  详细解决方案

[分享]任意位数整数运算,求2的n次方,圆周率的计算,这是本人最近无聊之时 ...

热度:490   发布时间:2005-06-25 12:18:00.0
[分享]任意位数整数运算,求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()释疑(现在置顶了)里面有,你可以看看
----------------解决方案--------------------------------------------------------
谢谢楼上的。忘了还有这个格式可以用,呵呵!
----------------解决方案--------------------------------------------------------
  相关解决方案