C语言实现大整数加法

求详细代码和解析。大神速来... 求详细代码和解析。大神速来 展开
 我来答
与科技苦于
2015-02-09
知道答主
回答量:17
采纳率:50%
帮助的人:8.2万
展开全部
//把各位的数码存入字符数组中,注意ASCAII码的转换
#include<stdio.h>
#include<string.h>
#include <conio.h>
int main()
{
int s,t,i,len1,len2;
char s1[30],s2[30],n1[30],n2[30],sum[31];


//将字符串以数码形式按倒序存储于新字符串中,便于计算 
printf("input 2 num(小于10^40):\n");
scanf("%s%s",&s1,&s2);
len1=strlen(s1);
len2=strlen(s2);
t=0;
for(i=len1;i>=0;i--)n1[t++]=s1[i-1]-48;
t=0;
for(i=len2;i>=0;i--)n2[t++]=s2[i-1]-48;


//高位补0 
if(len1>len2)
{
n1[len1]=0;
for(i=len2;i<len1;i++)n2[i]=0;
}
if(len1<len2)
{
n2[len2]=0;
for(i=len1;i<len2;i++)n1[i]=0;
}

//计算 
t=0;
s=0;
for(i=0;i<(len1>len2?len1:len2);i++)
{
s=n1[i]+n2[i]+t;//s为数码之和 
sum[i]=s%10; //sum[i]为该位上的数码 
t=s/10;//t为进位 
s=0;
}

//输出 
putchar(10);
if(t>0)
{
sum[i]=t;
for(s=i;s>=0;s--)printf("%c",sum[s]+48);
}
else
{
for(s=i-1;s>=0;s--)printf("%c",sum[s]+48);
}
    getch();
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
月光大帝2
2015-02-09 · TA获得超过239个赞
知道小有建树答主
回答量:299
采纳率:33%
帮助的人:92.4万
展开全部
#include<stdio.h>
#include<string.h>
char a1[100010];
char b1[100010];
int a[100010];
int b[100010];
int c[100010];
int main()
{
    scanf("%s%s",a1,b1);
    int Hive=strlen(a1);
    int Bosh=strlen(b1);
    for(int i=0;i<Hive;i++)
    {
        a[Hive-i-1]=a1[i]-'0';
    }
    for(int i=0;i<Bosh;i++)
    {
        b[Bosh-i-1]=b1[i]-'0';
    }
    int t=0;
    int x=0;
    while(t<Hive||t<Bosh)
    {
        c[t]=a[t]+b[t]+x;
        x=(c[t])/10;
        c[t]%=10;
        t++;
    }
    c[t]=x;
    if(c[t]==0)
    {
        t--;    
    }
    for(int i=t;i>=0;i--)
    {
        printf("%d",c[i]);
    }
}

你指的高精度?

用数组或者结构体都可以

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
DoramiHe
2015-02-09 · 知道合伙人互联网行家
DoramiHe
知道合伙人互联网行家
采纳数:25335 获赞数:59532
2011年中山职业技术学院毕业,现担任毅衣公司京东小二

向TA提问 私信TA
展开全部
自己把c语言记住吧
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式