1002/大数加法

对比别人写的代码  他人代码

以下是自己写的

# include <iostream>
# include <malloc.h>
# include <string.h>
using namespace std;

# define TASE_NUM 20
# define STR_LEN 1005
char * res[TASE_NUM];
void f(char * a,char * b,int i)
{
	int len_a,len_b,len_big,len_small;
	res[i] = (char *)malloc(sizeof(char) * STR_LEN);
	int   j,n=0;
	char flag = '0';
	char * big;
	char * small;
	len_a = strlen(a);
	len_b = strlen(b);

	if(len_a >= len_b )
	{
		len_big = len_a;
		len_small = len_b;
		big = a;
		small = b;
	}
	else
	{
		len_big = len_b;
		len_small = len_a;
		big = b;
		small = a;
	}


	for(j = len_big;j > 0; --j )
	{
		--len_big;
		--len_small;
		if(len_small >= 0)
		{
		(*(res+i))[n] = ( *(big+len_big) - '0' + *(small + len_small) - '0' + flag -'0' ) % 10 + '0';
		flag = ( *(big+len_big) - '0' + *(small + len_small) - '0' + flag-'0') / 10 +'0' ;
		n++;
		}
		else
		{
			(*(res+i))[n] = ( *(big+len_big) - '0' +  flag -'0') % 10 +'0';
			flag = ( *(big+len_big) - '0' + flag-'0') / 10+'0';
			n++;
		}
	}
	if(flag-'0' > 0)
		(*(res+i))[n] = flag;
	else
		--n;
	if(i>0)
		cout<<endl;
	cout<<"Case "<<(i+1)<<":"<<endl;
	cout<<a<<" + "<<b<<" = ";
	for( ;n >= 0;--n)
		cout<<( (*(res+i))[n]);
	cout<<endl;
	
	
	
}
int main()
{
	int tase_num;
	int i;
	char * str_a[TASE_NUM];
	char * str_b[TASE_NUM];

	cin>>tase_num;
	for(i = 0; i < tase_num; ++i)
	{
		str_a[i] = (char*)malloc(sizeof(char) * STR_LEN);
		str_b[i] = (char*)malloc(sizeof(char) * STR_LEN);
		cin>>str_a[i]>>str_b[i];


	}
	for(i = 0; i < tase_num; ++i)
	{
		f(str_a[i],str_b[i],i);
	}


	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值