演算法筆記 大整數運算 a b

2021-10-22 09:35:04 字數 1039 閱讀 2781

問題描述:

實現乙個加法器,使其能夠輸出a+b的值。

輸入要求:

輸入包括兩個數a和b,其中a和b的位數不超過1000位。

關鍵易錯:

1.將char型陣列轉換成int型陣列

2.int型陣列的大小應該比1000大,因為兩個數相加可能是1001位。

3.考慮a和b的正負問題。

#includeusing namespace std;

struct bign

}; bign change(char str)

return c;

}void print(bign a)

printf("\n");

}bool bigt(bign a,bign b)

else if(a.len=0;i--)

} return flag; }}

int main()

str1[strlen(str1)-1]='\0';

bign a=change(str1);

bign b=change(str2);

if(bigt(a,b))

else

} else if(str1[0]!='-'&&str2[0]=='-')

str2[strlen(str2)-1]='\0';

bign a=change(str1);

bign b=change(str2);

if(bigt(b,a))

else

}else if(str1[0]=='-'&&str2[0]=='-')

str1[strlen(str1)-1]='\0';

for(int i=0;istr2[strlen(str2)-1]='\0';

bign a=change(str1);

bign b=change(str2);

printf("-");

print(add(a,b));

} else

} return 0;

}

演算法筆記 5 6 大整數運算

規則 1 整數的高位存放在陣列的高位,低位存放在陣列的低位 2 輸入字串存放到字元陣列內,正常情況下是高位存放在陣列的低位,低位存放在陣列的高位,因此需要定義函式change 轉換 3 輸出時,逆序輸出,先輸出高位,再輸出低位 include include includeusing namespa...

演算法筆記 大整數

對一道a b的題目,如果a和b的範圍在int範圍內,那麼相信大家很快就能寫出程式。但是如果a和b是有著1000個數字的整數,恐怕就沒有辦法用已有的資料型別來表示了,這時就只能老實去模擬加減乘除的過程。解題思路 使用陣列來儲存整數字串,然後低位存放低位,高位存放高位 在進行大整數加減運算的時候,若出現...

超長整數運算(大整數運算)

問題描述 將形如1234567890123456789不能儲存在long變數中的數稱為超長整數或大整數。現討論大整數的加減乘除運算。思想方法 用陣列儲存超長整數,且為處理的簡單起見約定每個元素存放相同位的數字。如 每個元素存放4位。1 加法運算 void add int a,int b,int c ...