首页
社区
课程
招聘
[求助]C语言如何实现两个大整数相加?
发表于: 2008-10-29 19:43 6158

[求助]C语言如何实现两个大整数相加?

2008-10-29 19:43
6158
比如123456789+123456789
我写了一下,不过很多BUG,比如遇到些特殊情况就处理不了。还请大家帮帮忙~
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void main()
{
        static int flag=0;
        char n1[100];
        char n2[100];
        char temp[100];
        printf("请输入第一个数字");
        gets(n1);
        printf("请输入第二个数字");
        gets(n2);
        int i,j,n1_L,n2_L,endLen;
        n1_L=strlen(n1);
        n2_L=strlen(n2);
        if(n1_L>n2_L)
        {
                strcpy(temp,n1);
                strcpy(n1,n2);
                strcpy(n2,temp);
        }
        for(i=n1_L-1,j=n2_L-1,endLen=n2_L;i>=0,j>=0,endLen>=0;i--,j--,endLen--)
                {
                        int n1_x=(int)(n1[i]-48);
                        if(n1_x<0)break;
                        int n2_y=(int)(n2[j]-48);
                        if(n1_x+n2_y+flag>10)
                        {
                                n2[j]=(n1_x+n2_y+flag)%10;
                            flag=1;
                        }
                        else
                        {
                                n2[j]=(char)(n1_x+n2_y+flag+48);
                                flag=0;
                        }
                }
                printf("相加后得到的数字%s\n",n2);       
}

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
2
用字符串模拟手算十进制整数,是一种容易理解的方法,编码也相对清晰易懂。

但是从效率的角度,通常不采用这种方法。

前几天研究RSA时,学习了下afanty的实现方法,是个比较高效的方法。

http://www.pediy.com/bbshtml/bbs5/pediy50664.htm

对于用字符串表示的十进制数加法,如果用汇编语言写算法会更高些。

INTEL指令系统中有ASC码加法的相关指令,可以很方便实现十进制的加法的。
2008-10-29 20:31
0
游客
登录 | 注册 方可回帖
返回
//