码迷,mamicode.com
首页 > 编程语言 > 详细

超大数相加C语言程序设计

时间:2014-11-05 15:02:57      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:c语言   超大数相加   

#include <stdio.h>
#include <string.h>
int main(int argc, const char * argv[]) {
    
    char one[100],two[100],sum[100];
    
    int temp=0,lenth,lenthTwo,i,lenthOfSum;
    
    scanf("%s",one);
    getchar();//读取回车字符
    scanf("%s",two);
    
    lenthTwo = (int)strlen(two);
    
    if (strlen(two)>strlen(one))//总是让one存储较长的字符串
    {
        char stringtemp[100];
        strcpy(stringtemp, two);
        strcpy(two, one);
        strcpy(one, stringtemp);
    }
    
    lenth = (int)(strlen(one)-strlen(two));
    
    for (i=(int)strlen(two)-1; i>=0 ; i--)
    {
        sum[i+lenth] = two[i] + one[i+lenth]-‘0‘+temp;
        
        if (sum[i+lenth]>57) {
            sum[i+lenth] = sum[i+lenth] - 10;
            temp = 1;
        }
        else
        {
            temp = 0;
        }
    }
    for (i=lenth-1; i>=0; i--) {
        sum[i] = one[i]+temp;
        if (sum[i]>57)
        {
            sum[i] = sum[i] -10;
            temp = 1;
        }
        else
        {
            temp = 0;
        }
    }
    lenthOfSum = strlen(sum);
    if (temp==1)
    {//最高位有可能近位,导致数字长度大于string one的长度,所以需要将所有的数字后移一位,前面添一
        for (int i=0; i<lenthOfSum; i++)
        {
            sum[lenthOfsum-i] = sum[lenthOfsum-i-1];
        }
        sum[0] = ‘1‘;
    }
    printf("%s\n",sum);
    return 0;
}
//结果演示
//3032832398719038781904783904783294873248783493194394132041834
//                323819473948324891247129084723412348713403284
//-------------------------------------------------------------
//3032832398719039105724257853108186120377868216606742845445118


本文出自 “网络学习总结” 博客,请务必保留此出处http://8947509.blog.51cto.com/8937509/1572062

超大数相加C语言程序设计

标签:c语言   超大数相加   

原文地址:http://8947509.blog.51cto.com/8937509/1572062

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!