正文

自己写的一个高精度加法,网上有的都太高深,我本身是新手,写的大概新手比较好懂2012-05-04 20:09:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/yourgggg/53457.html

分享到:

#include<stdio.h> #include<string.h> int Min(int x,int y) {     if (x<y)         return x;     else         return y; }      int main() {     char a[1100],b[1100],c[1100]={0};//输入的a,b用二进制表示     int answer[1000]={0};     int temp=0,m,n,p,i,x,y,z;     scanf("%s",a);     scanf("%s",b);     x=strlen(a);     y=strlen(b);         //for(x=1000;a[x]!='\0';x--){}     //for(y=1000;b[y]!='\0';y--){}     x=x-1;     y=y-1;     z=Min(x,y);     for(i=0;i<=z;i++)     {                  if((a[x-i]==b[y-i])&&(a[x-i]=='1'))         {             //printf("ok");             c[z-i]='1';         }         else         {             c[z-i]='0';         }     }     //printf("%s\n",c);     for(m=0,answer[999]=0;m<=strlen(c)-1;m++)//关键的一步,二进制转换十进制,十进制用数组储存     {         answer[999]=answer[999]*2+(c[m]-'0');         for(n=998;n>=0;n--)         {             answer[n]=2*answer[n];         }         for(p=999;p>=1;p--)         {             answer[p-1]+=answer[p]/10;             answer[p]=answer[p]%10;         }     }     for(m=0;m<=999;m++)         if(answer[m]!=0)             break;     while (m<=998)     {printf("%d",answer[m++]);}     printf("%d\n",answer[999]);     //system("pause");     return 0; }

阅读(705) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册