#include<iostream>
#include<iomanip>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<cstring>
#include<typeinfo>
#include<sstream>
#include<fstream>
#include<algorithm>
#include<map>
using namespace std;
int cn[100];
int lencn = 0; //重载func,length额外存储
*operator+(const string a,const string b){ //重载优先级 > 系统
int an[100],bn[100];
memset(an,0,sizeof(an));
memset(bn,0,sizeof(bn));
int lena = a.length();
int lenb = b.length();
//2.存储
for(int i=0;i<lena;i++){
an[lena - i -1] = a[i] - '0'; //倒着输入好对位
}
for(int i=0;i<lenb;i++){
bn[lenb - i -1] = b[i] - '0'; //倒着输入好对位
}
//3.运算
const int lenc = lena>lenb ? lena+1 : lenb+1; //①确定位的范围
//int cn[lenc],x=0; //进位
int x=0;
for(int i=0;i<lenc;i++){
cn[i] = an[i] + bn[i] + x; //②单位运算
//进位运算不用if,%的亲和性很强
x = cn[i]/10; //③进位运算
cn[i] %=10;
}
lencn = cn[lenc-1]==0 ? lenc-1 : lenc; //④退位运算 ->去除前导0
//额外存储length
return cn; //局部变量的地址也是临时的
}
int main()
{
string a,b;
int *c;
cout << "输入:";
cin >> a >> b; //1.接收
c = a + b;
for(int i=lencn-1;i>=0;i--){ //倒着输出
cout << c[i];
}
}
//cout << "输入:";
第一节 重载全局+运算符(不实用!!!)
最新推荐文章于 2022-11-26 17:00:34 发布