
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
char ArrString[205], BrrString[205];
// 自定义的取最大值函数
int max(int a, int b){
if(a >= b){
return a;
}else{
return b;
}
}
int main(){
int len = 0;
cin >> ArrString; // 输入第一个字符串
cin >> BrrString; // 输入第二个字符串
len = max(strlen(ArrString), strlen(BrrString)); // 获取两个字符串的最大长度
int ArrInt[205] = {0}; // 存储第一个字符串的整型数组
int BrrInt[205] = {0}; // 存储第二个字符串的整型数组
int CrrInt[205] = {0}; // 存储结果的整型数组
int Alen = strlen(ArrString); // 第一个字符串的长度
int Blen = strlen(BrrString); // 第二个字符串的长度
// 将第一个字符串转换为整型数组,高位在后,低位在前
for(int i = 0; i < Alen; i++){
ArrInt[Alen - i] = ArrString[i] - '0';
}
// 将第二个字符串转换为整型数组,高位在后,低位在前
for(int i = 0; i < Blen; i++){
BrrInt[Blen - i] = BrrString[i] - '0';
}
// 逐位相加并进位
for(int i = 1; i <= len; i++){
CrrInt[i] += ArrInt[i] + BrrInt[i]; // 当前位的值等于同位相加之和
CrrInt[i + 1] = CrrInt[i] / 10; // 下一位加上进位
CrrInt[i] = CrrInt[i] % 10; // 当前位只保留个位数
}
// 去除前导零
while(CrrInt[len + 1] == 0 && len > 0){
len--;
}
// 输出结果
for(int i = len + 1; i > 0; i--){
cout << CrrInt[i];
}
}
代码逻辑:
- 首先,使用
cin分别输入两个字符串ArrString和BrrString。 - 然后,通过
strlen函数获取两个字符串的长度,并取其中较长的长度作为变量len的值。 - 定义三个整型数组
ArrInt、BrrInt和CrrInt,分别用于存储两个字符串转换的整型数组以及相加结果的整型数组。 - 将
ArrString和BrrString中的字符转换成整型存入ArrInt和BrrInt数组中,高位在后,低位在前。 - 使用循环将两个整型数组
ArrInt和BrrInt逐位相加,并考虑进位情况,结果存入CrrInt数组中。 - 去除结果数组
CrrInt中的前导零。 - 最后,按照逆序的顺序依次输出结果数组
CrrInt中的数字。

博客介绍了两个字符串数字相加的代码逻辑。先输入两个字符串,获取其长度并取较长值。定义三个整型数组,将字符串转成整型存入数组,逐位相加并考虑进位,结果存于另一数组。去除前导零后,逆序输出结果数组数字。
1555

被折叠的 条评论
为什么被折叠?



