#include<iostream>
#include<cstring>
using namespace std;
string Add(string str1, string str2){
//get the length:
int len1 = str1.length(),len2 = str2.length();
string str;
//在多余的位置上补0
if (len1 < len2){
for (int i=0; i < len2-len1; i++)
str1 = '0' + str1;
}
if (len1 > len2){
for (int i = 0; i < len1 - len2; i++)
str2 = '0' + str2;
}
//cout << str1 << "||" << str2 << endl;
//Add : 主灵魂
int temp, in = 0, len = max(len1, len2);
for (int i = len-1; i>=0; i--){
temp = str1[i]-'0' + str2[i]-'0' + in;
in = temp/10;
temp = temp % 10;
str = char(temp+'0') + str; //切记要在把数字转换为字符的时候要加‘0’
}
if (in) str = char(in + '0') + str;
return str;
}
int cmp(string str1, string str2){
if (str1 > str2) return 1;
else if(str1 < str2) return -1;
else return 0;
}
string subtraction(string str1, string str2){
int cmp_ = cmp(str1, str2);
if (cmp_ == -1) {string str = str2; str2 = str1, str1 = str;}
else if(cmp_ == 0) return "0";
int len1= str1.length(), len2 = str2.length();
if(len1 > len2){
for (int i=0; i<len1-len2; i++){
str2 = '0' + str2;
}
}
if (len2 > len1)
for (int i=0; i<len2-len1; i++){
str1 = '0' + str1;
}
string str;
int len = max( len1, len2);
int temp, in = 0;
for (int i = len-1; i >= 0; i--){
temp = (str1[i]-'0') - (str2[i] -'0') - in;
if (temp >= 0){
in = 0;
}
else {
temp += 10;
in = 1;
}
str = char(temp+'0')+str;
}
int i;
for (i=0; i<str.length(); i++){
if(str[i] != '0') {break;}
}
if (cmp_ == -1)
return '-'+str;
return str;
}
int main(){
string x1, x2;
cin >> x1 >> x2;
cout << "加法:" << Add(x1, x2) << endl;
cout << "减法:" << subtraction(x1, x2) << endl; //直接输出
printf("\n\n\n");
return 0;
}
(忘记调试了...)