先創建一個結構(struct),AN1 和 AN2,AN1為累加結果,AN2讀入每次輸入的大數並與AN1相加:
#define NUMLEN 200
struct AddNum
{
int num[NUMLEN];
int length;
};
struct AddNum AN1, AN2;
char numStr[101];
再讀入字串並反轉為整數陣列(integer array):
gets(numStr);
if (numStr[0] == '0') break;
AN2.length = strlen(numStr) - 1;
for (i = AN2.length, j = 0; i >= 0; i --, j ++)
AN2.num[j] = numStr[i] - '0';
for (i = 0; i < NUMLEN; i ++)
{
AN1.num[i] += AN2.num[i];
if (AN1.num[i] >= 10)
AN1.num[i + 1] ++, AN1.num[i] %= 10;
}
最後AN1和AN2相加:
for (i = 0; i < NUMLEN; i ++)
{
AN1.num[i] += AN2.num[i];
if (AN1.num[i] >= 10)
AN1.num[i + 1] ++, AN1.num[i] %= 10;
}
再將結果印出就可以了。
By David.K
p424題目連結
回ACM題庫目錄
回首頁
沒有留言:
張貼留言