大數相加

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 10000000;
//大數相加 
void main(){
	char num1[MAX];
	char num2[MAX];
	int length1,length2;
	while(scanf("%s%s",num1,num2)!=EOF){
		length1=strlen(num1);
		length2=strlen(num2);
		caladd(num1,num2,length1,length2);
	}	
	return 0;
} 

void caladd(char *num1,char *num2,int length1,int length2)
{   
    int result[MAX] = {0},a[MAX] = {0},b[MAX] = {0},c[MAX];
    c[0] = 0;
	if(num1==NULL||num2==NULL)return ;
	if(length1<=0||length2<=0) return ;
	int k = length1>length2?length1:length2;
	//字符串轉化爲整形
	for(int i=0;i<length1,++i) a[i] = num1[length1-i-1]-'0';
	for(int i=0;i<length2,++i) b[i] = num2[length2-i-1]-'0';
	
	//在看誰的大
	for(int i=0;i<k;++i){
		c[i]+=(a[i]+b[i])%10;//如果a[i]+b[i]<10 那麼c[i] = a[i]+b[i]; 
		c[i+1] =(a[i]+b[i])/10;
		if(c[i]!=0)k++;//需要進位 
	}
	
	//倒序輸出相加的結果
	for(i=k-1;i>=0;--i){
		printf("%d",c[i]);
	} 
	
}

發佈了93 篇原創文章 · 獲贊 6 · 訪問量 21萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章