• 高精度算法-大数加法


    问题 C: A+B Problem (6)

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 486  解决: 253
    [提交][状态][讨论版]

    题目描述

    很长整数是指无法用long long型数存储的数,因此需要用字符串数组来存储两个被加数,相加的结果也保存于字符数组中,假如被加数长度不超过十进制100位,请编程实现该加法程序并将相加结果输出。

    输入

    两个很长的整数

    输出

    很长整数加法结果

    样例输入

    35555555555555555555

    55555555555555555555

    样例输出

    91111111111111111110

     

    我的原代码是这样的:

     1 #include<stdio.h>
     2 #include<string.h>
     3 void fun(char a[],char b[],char c[])
     4 {
     5     int i,j,jinw=0,ci=0,x,y,z,k;
     6     char tmp;
     7     i=strlen(a)-1;
     8     j=strlen(b)-1;
     9     while(i>=0||j>=0) //检索直到两数组都被加完
    10     {
    11         if(i<0) //当a数组被加完时
    12             x=0;
    13         else
    14             x=a[i]-'0';
    15         if(j<0) //当b数组被加完时
    16             y=0;
    17         else
    18             y=b[j]-'0';
    19 
    20         z=x+y;
    21 
    22         if(jinw) //如果有进位
    23             z++;
    24         if(z>9) //考虑当前数累加是否会导致下次计算进位
    25         {
    26             jinw=1;
    27             z%=10;
    28         }
    29         else
    30             jinw=0;
    31         c[ci++]=z+'0';
    32         i--;
    33         j--;
    34     }
    35     if(jinw) //考虑最后一位是否还有进位
    36         c[ci++]='1';
    37     c[ci]=''; //为C数组添加终止符
    38     k=strlen(c);
    39     for(i=0;i<k/2;i++)
    40     {
    41         tmp=c[i];c[i]=c[k-i-1];c[k-i-1]=tmp;
    42     }
    43     printf("%s
    ",c);
    44 }
    45 int main()
    46 {
    47     char a[600],b[600],c[600];
    48     while(scanf("%s%s",a,b)!=EOF)
    49     {
    50         fun(a,b,c);
    51     }
    52     return 0;
    53 }

    这样写的话我试着测试了几个数据,只要a数组长度和b数组长度相同,不会有什么问题

    但是当a数组长度和b数组长度不同时,便出现了问题

    比如会出现奇怪的符号

    @蚂蚁学姐 求解啊~!!!

    2013/12/15

    已解决-

  • 相关阅读:
    【转】html的meta总结
    style.left 与offsetLeft之间的区别
    VM886
    js 获取数据类型
    JS序列化URL方法
    userData 本地存储
    第一章 1.6 HTML5 的新功能(二)
    第一章 1.6 HTML5 的新功能(一)
    第一章 1.5 无插件范式
    第一章 1.4 新的认识
  • 原文地址:https://www.cnblogs.com/wushuaiyi/p/3456792.html
Copyright © 2020-2023  润新知