字符串加法

题目描述

实现一个加法器,使其能够输出a+b的值。

输入描述:

输入包括两个数a和b,其中a和b的位数不超过1000位。

输出描述:

可能有多组测试数据,对于每组数据,
输出a+b的值。

示例1

输入

复制

2 6
10000000000000000000 10000000000000000000000000000000

输出

复制

8
10000000000010000000000000000000

这种类似的题目做过很多遍,主要就是那个进位的记录要考虑全面。

#include <iostream>
#include <string.h>
using namespace std;
char num1[1010];
char num2[1010];
void add(char *num1,char *num2){
	int result[1010];
	int len1=strlen(num1);
	int len2=strlen(num2);
	int p=len1-1;
	int q=len2-1;
	int r=0;
	int temp;
	int k=0;
	while(p>=0&&q>=0){
		temp=(num1[p]-48)+(num2[q]-48)+r;
		r=0;
		if(temp>=10){
			result[k]=temp%10;
			k++;
			r=temp/10;
		}
		else{
			result[k]=temp;
			k++;
		}
		p--;
		q--;
	}
	if(p>=0){
		while(p>=0){
			temp=(num1[p]-48)+r;
			r=0;
			if(temp>=10){
				result[k]=temp%10;
				r=temp/10;
				k++;
			}
			else{
				result[k]=temp;
				k++;
			}
			p--;
		}
	}
	else if(q>=0){
		while(q>=0){
			temp=(num2[q]-48)+r;
			r=0;
			if(temp>=10){
				result[k]=temp%10;
				r=temp/10;
				k++;
			}
			else{
				result[k]=temp;
				k++;
			}
			q--;
		}
	}
	if(r>0){
		result[k]=r;
		k++;
	}
	for(int i=k-1;i>=0;i--){
		cout<<result[i];
	}
	cout<<endl;
}
int main(){
	while(cin>>num1>>num2){
		add(num1,num2);
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/xiao_chen_l/article/details/81153932