1、實驗題目:長整型數運算,c中的long int所能表示的資料範圍有限,現要求程式設計完成超過long int所能表示的資料範圍以上的十進制正的長整數的加法和乘法運算。
2、實驗提示:兩個參與運算的長整數可用char a[256], b[256]表示,整個程式中要求完成以下幾個函數的編寫:
1) int readlongint(char * x); 此函數用于讀入一個正的長整數到x中,函數傳回長整數的實際長度;要求輸入時檢查所讀入的字元串是否是合法的長整數,如不是提示使用者直到輸入合法的長整數為止;
2) char *addition(char *x,char *y); 此函數用于實作用字元串表示的長整數的加法運算,其計算結果儲存在一個動态申請的字元數組空間(其長度為參與加法運算的兩個長整數中較長的一個的長度加1)中,函數傳回該數組的指針。
3) char *multiplacation(char * x,char *y);此函數用于實作用字元串表示的兩個長整數的乘法運算,可考慮先将乘數的從個位到最高位的每一位與被乘數相乘(這一步可利用addition函數實作),再進行向左偏移後相加完成;
注意:此程式設計最關鍵的問題是對字元數組的下标定位和動态申請恰當的記憶體空間以儲存計算結果,注意在乘法運算中回收不再使用的記憶體空間。
3、實作程式分為三個檔案,function.h、function.c、main.c。具體實作如下所示:
function.h頭檔案聲明操作函數


function.c是操作函數的實作,源代碼如下所示:


main.c是主函數部分,給出一個菜單進行選擇操作,代碼如下所示:


4、測試結果如下所示: