大整数相加大法
作者:
搁浅.小城旧时光か
,
2022-03-03 16:29:58
,
所有人可见
,
阅读 212
#include<bits/stdc++.h>
using namespace std;
int A[10010],B[10010],C[10010];//实际需要用的数组
int add(int a[],int b[],int c[],int cnt)//四个形参,cnt原来表示相加前的最长位数,返回值表示大整数相加后的位数
{
int t=0;
for(int i=1;i<=cnt;i++)
{
t+=a[i]+b[i];//t起到传导作用,传导结果,从个位加起,进位后的数再加起来,若没有则加0
c[i]=t%10;//c数组表示相加后的大整数,保留进位后的个位即为那一位
t/=10;//判断是否进位
}
if(t)
{
c[++cnt]=1;//表示如果增加位数在其后加1位为1
}
return cnt;//返回相加后的位数
}
int main()
{
char a[10010],b[10010];
scanf("%s%s",a,b);
int cnt1=0;//第一个大整数的长度
for(int i=strlen(a)-1;i>=0;i--)
{
A[++cnt1]=a[i]-'0';//把大整数的每一位以字符形式化为数字形式传导给大A数组,且倒叙传递,因为要从个位加起还要进位
//printf("%c",a[i]);
}
int cnt2=0;
for(int i=strlen(b)-1;i>=0;i--)
{
B[++cnt2]=b[i]-'0';
}//同上
int wei=add(A,B,C,max(cnt1,cnt2));//表示相加后的位数,切把实参传递给形参,写实参直接写字母,不用中括号
for(int i=wei;i>=1;i--)
{
printf("%d",C[i]);//倒叙输出每一位即为结果
}
}
%%%%%%%%
zzuli?
%%%%%%%%%%%%%%%