C 之自定義API函式「大數相乘演算法」

2021-06-22 04:48:22 字數 1234 閱讀 1486

前言:

之所以取題目的前部分為自定義api函式(不斷更新中),是因為筆者想形成一套演算法良好、介面清晰、方便編寫程式的演算法之意,也是為了日後更好呼叫演算法,遇到相似的問題直接呼叫即可,以及方便大家使用,開發出更高效率的程式。其中的效率不敢說最好,還希望大家互相交流,共同進步!下面進入正題。

普通的乘法計算用int、long、double都可以解決,但有時候需要處理的數字過大,從而產生溢位,以下是實現任意長度的正整數a*b的演算法,即大數相乘,這個演算法比較簡單易懂,思路如下:

1、在主函式用char型陣列a和b分別儲存輸入的數字a和b;

2、對字串陣列a和b每一位互相相乘,像小學時候學的豎式乘法,結果儲存在字串陣列s,但是不進行進製處理;

3、對字串陣列s每一位進行進製處理;

4、將字串陣列s賦給char型陣列c,返回結果。

char版本:

//大數相乘,實現大數a*b

char* getmultiplyvalue(char a,char b) //引數a:char型陣列a的陣列名;引數b:char型陣列b的陣列名;

//如果最高位沒有進製,則捨棄開頭0

i=0;

while(s[i]==0)

i++;

//儲存結果到字串

for(j=0;i

另外,附上string版本的,

#include using namespace std;

//大數相乘,實現大數a*b

string getmultiplyvalue(string a,string b) //引數a:string型a的變數名;引數b:string型b的變數名;

//如果最高位沒有進製,則捨棄開頭0

i=0;

while(s[i]==0)

i++;

//儲存結果到字串

for(j=0;i

下面給出的是char版本的執行例項(string版本同理),更徹底教會大家如何使用,

#include using namespace std;

int main()

{ char a[255],b[255];

cin>>a>>b; //輸入數字a,b

cout<

希望對大家有所幫助~

自定義函式 Excel之自定義函式

在excel中,當系統函式不能滿足我們的需求時候,我們可以使用vba自定義函式,如抓取網頁資料,翻譯詞彙,手機號歸屬地查詢等。下面將介紹2個自定義函式,idymd函式 身份證年月日性別 通過身份證號,返回性別,出生年月日。語法 idymd id 引數 id,身份證號,預設身份證長度18位。vba 如...

MySQL之自定義函式

自定義函式 使用者定義函式 udf 是一種對mysql擴充套件的途徑,其用法與內建函式相同 自定義函式需要兩個必要條件 引數和返回值 函式可以返回任意型別的值,同樣可以接收這些型別的引數,最多1024個引數 1.建立自定義函式 create function function name return...

MySQL之自定義函式

mysql中已經有很多函式,如時間函式等,但是有時這些函式不能滿足自己的設計需求,此時需要自定義函式,使用者自定義函式 user defined functuin,udf 是對mysql的擴充套件,其用法和內建函式相同 函式需要具備 引數 返回值 對於函式體中的部分可以是 1 函式體由合法的sql語...