#include<iostream>
#include<cstring>
using namespace std;
#define MAX_LEN 200
int an1[MAX_LEN + 10];
int an2[MAX_LEN + 10];
char szLine1[MAX_LEN + 10];
char szLine2[MAX_LEN + 10];
int main()
{
cin >> szLine1;
cin >> szLine2;
int i, j;
//庫函數(shù)memset是將地址an1開始的sizeof(an1)字節(jié)內(nèi)容置成0;
//memset在cstring內(nèi)
memset(an1, 0, sizeof(an1));//initialize;
memset(an2, 0, sizeof(an2));//initialize;
//將szLine1里的字符串?dāng)?shù)字存到an中馋评;
int nLen1 = strlen(szLine1);
j = 0;
for (i = nLen1 - 1; i >= 0; i--) {
an1[j] = szLine1[i] - '0';/*s[i]是一個字符變量疗琉,當(dāng)s="123"的時候,s[0]='1',s[1]='2',s[2]='3';
這里的s[i] - '0'的實質(zhì)就是將單個字符轉(zhuǎn)化為單個數(shù)字才沧。當(dāng)字符類型的變量賦值給整型變量的時候,系統(tǒng)會自動將其轉(zhuǎn)換成ASCII碼。'0'的ASCII碼為48襟士,'1'為49,依次類推嚷量。
n * 10的含義就是要將已處理的部分向左移一位陋桂。在剛才的字符串s轉(zhuǎn)換到第二位的時候
n = 12 * 10 + (51 - 48);
這一段代碼就是將一個字符串轉(zhuǎn)換成數(shù)字。*/
j++;
}
int nLen2 = strlen(szLine2);
j = 0;
for (i = nLen2 - 1; i >= 0; i--) {
an2[j] = szLine2[i] - '0';
j++;
}
// 逐位相加
for (i = 0; i < MAX_LEN; i++) {
an1[i] += an2[i];//結(jié)果存在an1中蝶溶;
if (an1[i] >= 10) {//進位
an1[i] -= 10;
an1[i + 1]++;
}
}
bool bStartOutput = false;//用于跳過多余的前導(dǎo)0嗜历;
for (i = MAX_LEN;i>=0; i--) {
if (bStartOutput) {
cout << an1[i];
}
else if (an1[i]) {
cout << an1[i];
bStartOutput = true;//遇到第一個非零數(shù)后開始輸出
}
}
if (an1[i] == 0 && an2[j] == 0)//意外情況防止
{
cout << "0";
}
system("pause");
}
最后得考慮都為0的情況。