1168:大整数加法
【题目描述】
求两个不超过200位的非负整数的和。
【输入】
有两行,每行是一个不超过200位的非负整数,可能有多余的前导0。
【输出】
一行,即相加后的结果。结果里不能有多余的前导0,即如果结果是342,那么就不能输出为0342。
【输入样例】
22222222222222222222
33333333333333333333
【输出样例】
55555555555555555555
解题代码:
#include
#include
#include
using namespace std;
//1、接收数据 两个加数
char c1[200];
char c2[200];
//用于存放char类型数组转换后的数据
int a[200],b[200],c[200];
int lena,lenb;
int main(){
gets(c1);//获取整行的输入内容,读入的内容从下标0开始存储
gets(c2);
lena=strlen(c1);
lenb=strlen(c2);
//字符数组的高位存到int类型数组的低位
for(int i=0;i<=lena-1;i++){
a[lena-1-i]=c1[i]-48;
}
for(int i=0;i<=lenb-1;i++){
b[lenb-1-i]=c2[i]-48;
}
int x=0;//表示进位值
int lenc=0;
while(lenc<=lena || lenc<=lenb){
//逐位相加
c[lenc] =a[lenc]+b[lenc]+x;
x=c[lenc]/10;
c[lenc]=c[lenc]%10;
lenc++;
}
while(c[lenc-1]==0){
lenc–;
}
for(int i=0;i<lenc;i++){
cout<<c[lenc-1-i];
}
return 0;
}