数学问题——大整数加法

在这里插入图片描述

#include<stdio.h>
#include<string.h>
struct bign{
    
    
	int d[1000];
	int len;
	bign()
	{
    
    
		memset(d, 0, sizeof(d));
		len = 0;
	}
};

bign change(char str[])
{
    
    
	bign  a;
	a.len = strlen(str);
	for(int i = 0; i < a.len; i++)
	{
    
    
		a.d[i] = str[a.len - i - 1] - '0';
	}
	return a;
}

bign add(bign a, bign b)
{
    
    
	bign c;
	int carry = 0, temp;
	for(int i = 0; i < a.len || i < b.len; i++)
	{
    
    
		temp = a.d[i] + b.d[i] + carry;
		c.d[i] = temp % 10;
		c.len++;
		carry = temp / 10;
	}
	if(carry != 0) 
	{
    
    
		c.d[c.len] = carry;
		c.len++;
	}
	return c;
}

void print(bign a)
{
    
    
	for(int i = a.len - 1; i >= 0; i--)
	{
    
    
		printf("%d", a.d[i]);
	}
}
int main()
{
    
    
    char str1[1000], str2[1000];
    scanf("%s%s",str1, str2);
    bign a = change(str1);
    bign b = change(str2);
    bign c = add(a,b);
    print(c);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/tian__si/article/details/113767637