高精度处理大数加法C语言实现

                                         大数加法

     前言(本人学习算法和c语言不久,只是发一点自己学习的结果,仅供参考
    大数加法应该算是高精度题目里最简单的题目了,所以本菜鸡也敢发一点自己的心得了,代码应该能确定是正确的(我测试了几个比较大型的OJ)

      大数加法的思路就是用数组来存储要来相加的两组大型数值型数据,首先是定义两个字符型数组,将两组数据用字符串输入到数组中,再将两组数据从头到尾按位转换,并将之后的值置0,并使用一个整形数组按位将值加到数组中,并将其模10,加入到整型数组的下一位,加完后,从整型数组的末尾开始循环找到不为的第一位跳出循环,并从那位开始倒输。

   代码如下:

                                         

#include <stdio.h>
#include <string.h>
int main()
{
	char a[1010],b[1010],g;
	int c[1011],e,f,i,s,h;
	scanf("%d",&s);
      for(h=s;h>0;h--)
	{
	memset(a,0,sizeof(c));
    scanf("%s%s",a,b);
    e=strlen(a);
    f=strlen(b);
printf("Case %d:\n",s-h+1);
   printf("%s + %s =",a,b);
    for(i=e;i<1010;i++)
    a[i]='0';
    for(i=f;i<1010;i++)
    b[i]='0';
    for(i=0;i<e;i++)
    {
	g=a[i];
    a[i]=a[e-1];
    a[e-1]=g;
    e--;
}
    for(i=0;i<f;i++)
    {
	g=b[i];
    b[i]=b[f-1];
    b[f-1]=g;
    f--;
}
    for(i=0;i<=1010;i++)
    {
    	c[i]=c[i]+(a[i]-'0')+(b[i]-'0');
    	c[i+1]=c[i]/10;
    	c[i]%=10;
	}
	for(i=1000;i>=0;i--)
	if(c[i]!=0)
	break;
	if(i<0)
	printf("%d",c[0]);
	for(e=i;e>=0;e--)
	printf("%d",c[e]);
	printf("\n");
}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值