大整数加法
两个大整数相加,其中大整数可能有前导0,但输出时不能有前导0。
因为使用while循环输入,并遇到空格停止,这样输入能符合情况,所以我们先声明字符数组,之后将字符数组转换成整型。
这是将字符转化成整型。
最后的相加和输出。
#include <iostream>
#include <cstring>
using namespace std;
int num1=0;
int num2=0;
int main() {
int a[202],b[202],c[202];
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
char str1[500];
char str2[500];
int flag1=0;
int flag2=0;
char ch;
while((ch=getchar())!='\n'){
if(flag1==0&&ch=='0'){
continue;
}else{
str1[flag1]=ch;
flag1++;
}
}
while((ch=getchar())!='\n'){
if(flag2==0&&ch=='0'){
continue;
}else{
str2[flag2]=ch;
flag2++;
}
}
for(int i=flag1-1;i>=0;i--){
a[num1]=str1[i]-'0';
num1++;
}
for(int i=flag2-1;i>=0;i--){
b[num2]=str2[i]-'0';
num2++;
}
for(int i=0;i<max(num1,num2);i++){
c[i]+=a[i]+b[i];
if(c[i]>10){
c[i+1]++;
c[i]=c[i]%10;
}
}
for(int j=max(num1,num2)-1;j>=0;j--){
if(j==max(num1,num2)-1&&c[max(num1,num2)]!=0){
cout<<c[max(num1,num2)];
}
cout<<c[j];
}
return 0;
}