- 分享
A+B+C的参考答案
- @ 2024-4-10 18:21:57
#include<cstring>
using namespace std;
int main(){
// 1、获取高精度数:字符数组 & 字符串
char a1[505], b1[505],c1[505];
int a[505]={}, b[505]={},c[505]={},d[505]={};
cin>>a1>>b1>>c1;
int lena = strlen(a1);
int lenb = strlen(b1);
int lenc= strlen(c1);
int lend = max(max(lena, lenb),lenc);
// 2、把字符数字变成整型的数组,并且倒序存储
// 倒序数组a
for(int i=0;i<lena;i++){
a[i] = a1[lena-1-i]-'0';
}
// 倒序数组b
for(int i=0;i<lenb;i++){
b[i] = b1[lenb-1-i]-'0';
}
for(int i=0;i<lenc;i++){
c[i] = c1[lenc-1-i]-'0';
}
// 3、对位相加
int x = 0; // 记录进位情况
for(int i=0;i<lend;i++){
// a + b = c
d[i] = a[i] + b[i]+c[i]+ x;
x = d[i]/10; // 计算进位情况
d[i] %= 10; // 进位完了只剩个位
}
// 判断最高位是否产生进位
if(x != 0) d[lend++] = x;
// 倒序输出结果
for(int i=lend-1;i>=0;i--){
cout<<d[i];
}
return 0;
}
0 条评论
目前还没有评论...