問題描述:
實現乙個加法器,使其能夠輸出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 ...