A+BProblem_2(个人找不到问题,但是不给过,233333)

#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;

int t;
int k;
int a[1050]; 
int b[1050];
int c[1050];


void check(int *x,int y)                       //判断是否需要进位
{
	for(int i=y-1;i>=0;i--)                //从数组最后一位往前判断  
	{
		if(i==0)    //最前面那位不需要判断(我觉得应该不要,比如c[0]=9后面一位进上来一个,从c[0]=10,就直接等于10好了,不用往前进1再变成0)
		break;
		if(c[i]>=10)
		c[i-1]++,c[i]-=10;
	}
}

void AplusB(int *a,int *b,int x,int y)                
{
	int size_big=(x>y)?x:y;            //获得较大的长度
		k=size_big;

	while(x>=0||y>=0){                //退出相加的条件  即其中一个数组所有数值加完
		c[size_big--]=((x>=0)?a[x--]:0)+((y>=0)?b[y--]:0);    //相加
	}
	
	check(c,k);
		
}

int main()
{
	char str1[50];
	char str2[50];
	scanf("%d",&t);
	int w=1;
		while(t--){
			
		memset(a,sizeof(a),0);                    //初始化三个储存数值的数组
		memset(b,sizeof(b),0);
		memset(c,sizeof(c),0);
			cin>>str1;                        //读取两个大数A 和 B
		//	getchar();
			cin>>str2;
			
		int size_1=strlen(str1);                    //获得两者的长度
		int size_2=strlen(str2);
			
	for(int i=0;i<size_1;i++)                            //赋值给两个数组
		a[i]=str1[i]-48;
		
	for(int j=0;j<size_2;j++)
		b[j]=str2[j]-48;
	AplusB(a,b,size_1,size_2);		

		printf("Case %d:\n",w++);                    //输出
		cout<<str1<<" + "<<str2<<" = ";
		for(int i=0;i<k;i++)
		cout<<c[i];
		cout<<endl;
		
	}
	

return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值