#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
中的数字。