大数加法、乘法

#include<iostream>
#include<stdio.h>
#include<string.h>
#define Len 3000//大数的长度
using namespace std;
int Input (char n[])//将大数读入的函数
{
	char s[Len];
	int i,l;

	for(i=0; i<Len; i++) n[i]=0;
	if(scanf("%s",s)<1) return -1;
	l= strlen(s);
	for(i=0; i<l; i++) //将输入的大数逆置
		n[i]=s[l-i-1]-'0';

}
int Print (char n[])
{
	int i;
	for(i=Len-1; i>0; i--)
		if(n[i]!=0) break;
	for(; i>=0; i--)
		printf("%d",n[i]);
	printf("\n");
}

void Add (char a[],char b[],char c[])//大数加法
{
	int i=0;
	for(i=0; i<Len; i++)
		c[i]=a[i]+b[i];
	for(i=0; i<Len; i++) //处理进位
	{
		if(c[i]>=10)
		{
			c[i+1]+=c[i]/10;
			c[i]=c[i]%10;
		}
	}
}
void Mul(char a[],char b[],char c[])//大数乘法
{
	int i,j;
	int alen=strlen(a),blen=strlen(b);
	for(i=0; i<Len; i++) c[i]=0;
	for(i=0; i<alen; i++)
		for(j=0; j<blen; j++) //处理进位
		{
			c[i+j]+=a[i]*b[j];
			if(c[i+j]>=10)
			{
				c[i+j+1]+=c[i+j]/10;
				c[i+j]%=10;
			}
		}
}
int main()
{
	char a[Len],b[Len],c[Len];
	Input(a);
	Input(b);
	Add(a,b,c);
	Print(c);
	Mul(a,b,c);
	Print(c);
	return 0;
}

http://blog.sina.com.cn/s/blog_4da7d7a70100d6t6.html  

http://www.cnblogs.com/hicjiajia/archive/2010/09/26/1836337.html

原文地址:https://www.cnblogs.com/dartagnan/p/2191738.html