提交时间:2025-01-30 16:36:59

运行 ID: 60612

#include <bits/stdc++.h> using namespace std; int a[100],b[100],temp[100],ans[100]; /*输出数组元素*/ void print(int a[]) { for(int i = a[0]; i >= 1; i --) cout<<a[i]; } /*字符串转数字数组*/ void string_to_number(string s, int num[]) { num[0] = s.length(); for(int i = 1; i <= num[0]; i ++) { num[i] = s[num[0]-i] - '0'; //cout<<num[i]; } } /*高精度加法*/ void add(int a[],int b[]) { int n; n = (a[0] > b[0]) ? a[0] : b[0]; //一共处理加法的次数=两个加数的最多位数 //n = (st1.length() > st2.length()) ? st1.length() : st2.length(); // 从低位开始,下标为1是个位 for(int i = 1; i <= n; i ++) { int t = a[i] + b[i] + temp[i-1]; //两个加数的当前数位之和 + 低位的进位 if(t >= 10) //进位处理 { ans[i] = t % 10; temp[i] = t / 10; //当前数位向高位进位的数字 if(i == n) n ++; //如果最高位还有一个进位,那就多一位进行加法 } else ans[i] = t; } ans[0] = n; //计算结果是n位的数字 } int main() { // 1. 创建数据:字符串输入、倒序补0 string s1; string s2; cin>>s1>>s2; string_to_number(s1,a); // 将字符串存入整数数组 string_to_number(s2,b); // 2. 对应位相加:各数位对齐,进位处理 add(a,b); // 3. 输出结果:去前导0,倒序输出 print(ans); return 0; }