C語言實現兩個大數相加

#include<stdio.h>
#include<string.h>

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;i<len;i++)
	{
		result[i] += t1[i]+t2[i]; //對應的每一位相加,
		if(result[i]>9)	//當大於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;
	
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章