c語言 100位大整數除法 最好用字串或者陣列

時間 2021-10-30 06:19:43

1樓:聖鸞

#include

#define maxint 1000

int compare(int a,int b);

int bigplus(int a,int b,int c);

int bigsub(int a,int b,int c);

int bigmult(int a,unsigned int b,int c);

int bigmult2(int a,int b,int c);

int bigdiv(int a,unsigned int b,int c,int *d);

int bigdiv2(int a,int b,int c,int d);

int main(int argc, char *ar**)

; //被乘數或被除數

int b[maxint]=; //乘數或除數

int c[maxint],d[maxint]; //c存放商,d存放餘數

int div=1234; //小乘數或小除數

int k=0;

int *res=&k; //小余數整數指標

bigplus(a,b,c);

bigsub(a,b,c);

bigmult(a,div,c);

bigmult2(a,b,c);

bigdiv(a,div,c,res);

bigdiv2(a,b,c,d);

getchar();

return 0;

}int compare(int a,int b) //比較大整數的大小

}int bigplus(int a,int b,int c) //大整數加法

}if (c[i+1]>0) len++;

c[0]=len; //c[0]儲存結果陣列實際長度

printf("big integers add: ";

for (i=len;i>=1;i--)

printf("%d",c[i]); //列印結果

printf("\n";

return 0;

}int bigsub(int a,int b,int c) //大整數減法

}else

for (i=1;i<=len;i++) //計算每一位的值

}while (len>1 && c[len]==0) //去掉高位的0

len--;

c[0]=len;

printf("big integers sub= ";

if (a[0]=1;i--) //列印結果

printf("%d",c[i]);

printf("\n";

return 0;

}int bigmult(int a,unsigned int b,int c)//高精度乘以低精度

if (c[len]==0) len--; //處理高進位為0情況

printf("big integrs multi small integer: ";

for (i=len;i>=1;i--)

printf("%d",c[i]);

printf("\n";

}int bigmult2(int a,int b,int c) //高精度乘以高精度

int bigdiv(int a,unsigned int b,int c,int *d) //高精度除以低精度

while (len>1 && c[len]==0) len--; //去高位0

printf("big integer div small integer: ";

for (i=len;i>=1;i--) //列印結果

printf("%d",c[i]);

printf("\tarithmetic compliment:%d",*d);

printf("\n";

}int bigdiv2(int a,int b,int c,int d) //高精度除以高精度

for (i=0;i=1;i--) //逐位相除

}while (j>0 && d[j]==0) //去掉高位0

j--;

d[0]=j;

c[i]++; //商所在位值加1 }}

j=b[0];

while (c[j]==0 && j>0) j--; //求商陣列c長度

c[0]=j;

printf("big integers div result: ";

for (i=c[0];i>=1;i--) //列印商

printf("%d",c[i]);

printf("\tarithmetic compliment: "; //列印餘數

for (i=d[0];i>=1;i--)

printf("%d",d[i]);

printf("\n");}

2樓:李江森的小屋

你需要多少位的,和什麼樣的運算,我可以幫助你的。

求c語言程式設計大整數除法思路講解!!!急!!

3樓:哲學家超人

以陣列儲存數字,然後根據除法的定義進行計算。即:

被除數x,除數y,假設分別為m,n位,則需要用m,n個位元組長度的字串儲存這兩個數字;

然後從高位除起,就像我們手動運算一樣的過程。

比如1234除以32,先用123除以32,得到商和餘數,餘數和餘下的數字一起繼續運算……直到得到最終結果。一般acm演算法書上有源程式

4樓:水紙谷幽

1,大整數除法運算,不同於其它的大整數運算,它不需要對字串進行逆轉,這主要是因為大整數除法是模擬手算過程,從最高位開始試商。

2,試商的過程是呼叫大整數減法和比較函式的過程,這裡的減法運算只實現大數減小數的情形。

3,被除數為m位,除數為n位,則商最多為m位,餘數最多為n位。

可以試試先以字串形式輸入,在進行運算

跪求c語言演算法神,大整數除法超簡單**(通過)的原理

5樓:

這就是一個除法運算的。你除法怎麼算,它就算算的,就是一個模擬過程。只不過他用了累積減除數的方法代替了乘法的運算,這個只對應於二個數長度差不多的時候,才有效率。

首先,judge這個是比較函式。比如二個字串對應數字的大小。

比如 283456 / 7

temp2是每個位上的數, temp1是被除數。

一開始 。

temp2 = 0

temp1=0;

temp1 = multi1(temp1, 5);

temp1 = multi1(temp1, 2);

這二句有點多餘,就是一個乘以10的操作。可以直接移字串末尾加個『0』

先是 temp2=2 temp1=temp1*10+temp2= 2 由於2<7繼續迴圈

接下來是temp2=8 temp1=temp1*10+temp2=28 28>7 。 不斷累減,相當 於

a=28 ,b=7 while(a>b) 這個樣子。

。。。過程就是這樣。

怎樣用c語言去計算大整數除法啊,求教

6樓:杜曼珠

-.- 回憶下小學時候是怎麼算除法的吧

7樓:匿名使用者

你好!你要求的最大位數是多少呢

C語言如何計算除法,保留兩位小數。下邊程式的結果為什麼是

幻翼高達 需要準備的材料分別有 電腦 c語言編譯器。1 首先,開啟c語言編譯器,新建一個初始.cpp檔案,例如 test.cpp。2 在test.cpp檔案中,調整c語言 double c c 1.0 a b 3 編譯器執行test.cpp檔案,此時成功將除法保留2位整數輸出。 c語言做除法,只需要...

c語言編輯器,什麼C語言編輯器最好用

visual c 我半年前和你情況一樣,也是個入門沒多久的新手。那時也專門問過別人什麼軟體對新手比較適用。有人給我介紹過一個很基礎的編譯器,剛開始是挺不錯的,介面簡單。不過學了兩章後發現很多變數型別都不支援,並且只有執行功能,沒有其它visual c 所具有的功能 我暫時還沒研究透徹,不過發現目前已...

c語言求大神按位卻0卻為什麼是,C語言求大神!!! 按位取反,0取反為什麼是 1不是1?

i為int型別 通常佔4個位元組 0的原碼 0000 0000 0000 0000 0000 0000 0000 0000 取反 1111 1111 1111 1111 1111 1111 1111 1111 最高位是1所以是負數,求其原始資料,方法是 再次取反加1 符號位不變 取反 1000 00...