C语言实现两个大数相加

#include
#include

int main()
{
	char n1[10000]={'0'}; 
	char n2[10000]={'0'};
	int result[10001]={0}; //最终的结果值
	int t1[10000]={0};
	int t2[10000]={0};
	
	int len; //记录最长的那个数的字符串长度
	int len1;//记录第一个数的字符串长度
	int len2;//记录第二个数的字符串长度
	int i,j;
	
	printf("请输入第一个数:"); 
	scanf("%s",&n1);
	printf("请输入第二个数:");
	scanf("%s",&n2);
	printf("n1=%s\n",n1);
	printf("n2=%s\n",n2);
	len1=strlen(n1);
	len2=strlen(n2);
	printf("len1=%d len2=%d\n",len1,len2);

	if(len1>len2)
	{
		len=len1;
	}
	else
	{
		len=len2;
	}
	
	for(i=0,j=len1-1 ; j>=0 ; i++,j--)
	{  
		t1[i]=n1[j]-'0';  //第一个数:将每一个字符与'0'字符做差,得到的是它自己本身的数值
	}
	
	for(i=0,j=len2-1;j>=0;i++,j--)
	{
		t2[i]=n2[j]-'0';  //第二个数:将每一个字符与'0'字符做差,得到的是它自己本身的数值
	}
	
	printf("t1=");
	for(i=0,j=len-1;j>=0;i++,j--)
	{
		printf("%d",t1[i]);
	}
	printf("\nt2=");
	for(i=0,j=len-1;j>=0;i++,j--)
	{
		printf("%d",t2[i]);
	}
	printf("\n");

	for(i=0;i9)	//当大于9的情况就需要进位,进位进到i+1位,说明数组的高位对应数字的高位
		{
			result[i+1]++;
			result[i]-=10;
		}
	}
	
	if(result[len]>0)
	{
		len++;
	}
	
	printf("result=");
	for(i=len-1;i>=0;i--)//数组的高位对应数字的高位,从高到低打印数的每一位
	{
		printf("%d",result[i]);
	}
	
	printf("\n");
	return 0;
	
}

 

你可能感兴趣的:(C/C++)