C語言計算兩個50位數之和

2025-01-05 15:00:11 字數 3084 閱讀 3418

50位數的加減乘除c語言**

1樓:匿名使用者

文冊罩虛庫裡這篇文章適合你看。州燃高精悶運度四則運算。

c語言程式中怎樣實現"任意兩個32位數相加"

2樓:依舊飄流

/*我做了乙個,你看看,應該可以很容易懂得*//*原來做的是任意兩個大數(小於50位的數)相加的*//*你這個只要求32位,所以也應該適合的*//*不過這段**是有缺陷的,但你的要求來說,是滿足要求的*/#include

#define m 50

main()

比較兩個的長短,把長的那個放到c裡,短的放到d裡*/else if(ia==ib&&(a[0]+b[0]-'0'>'9'))

else /*比較兩個的長短,把長的那個放到c裡,短的放到d裡*/ic=strlen(c);

id=strlen(d);/*求出實際參加運算的c,d的長度*/do/* 處理進位,逢十進一,原位減十,前位加一*/}while(ic!=0&&id!=0);

*具體情況,請參見以下***/

3樓:網友

正如樓上 heephi 所說, 用陣列來存放 32 位數,就是陣列每個元素存入這個 32 位數的每一位。

如 有數 11111111112222222222333333333300

那麼陣列其實就是。

在此基礎上, 對每位進行相加, 遵循 滿十進一的規則。

看樣例:#include

int main()

int i;

char buf[33]; /* 用於存入輸入的數字(其實就是字串) */

printf("請輸入數 a: "); scanf("%s", buf);

for (i = 0; i < 32; i++)

a[i] = buf[i] -0x30;

因為 '0' 的 ascii 碼是48, 0x30 表示十六進位也就是十進位的 48,所以 '0' - 0x30 就是 0, '9' - 0x30 就是 9, 也就實現了數字字元轉為數字 */

printf("請輸入數 b: "); scanf("%s", buf);

for (i = 0; i < 32; i++)

b[i] = buf[i] -0x30;

因為 '0' 的 ascii 碼是48, 0x30 表示十六進位也就是十進位的 48,所以 '0' - 0x30 就是 0, '9' - 0x30 就是 9, 也就實現了數字字元轉為數字 */

* 好了, 現在就是實現相加了 */

for (i = 31; i >= 0; i--)

* 相加完成, 現在輸出結果 a + b = c */

printf("\t");

for (i = 0; i < 32; i++)

printf(" +\t");

for (i = 0; i < 32; i++)

printf("---n\t");

for (i = 0; i < 32; i++)

printf("");

return 0;

這個程式有些缺陷:

1. 必須兩個數均為 32 位, 所以不能計算乙個 32 位數與位數小於 32 的數相加。

2. 當兩數相加大於 32 位數時, 只能顯示最後 32 位數, 也就是溢位。

3. 不能實現負數相加。

程式執行結果:

請輸入數 a: 66554433221100998877665544332211

請輸入數 b: 11223344556677889900112233445566

4樓:渾曜邇

用個陣列來存放這個32位的數就行了。

用c語言程式設計完成兩個1000位以內的正整數的加法運算

5樓:網友

#include

#include

#include

int main()

char a[1000],b[1000];

scanf("%d",&t);

while(t > 0)

a[i] = '\0';

printf("b = ");

i = 0;

while(1)

b[i] = '\0';

lena = strlen(a);

lenb = strlen(b);

carry = 0; // 進位。

k = 0;

從個位開始加,逆向儲存相加結果。

for(i = lena - 1,j = lenb - 1; i >= 0 &&j >= 0; -i,--j)

while(i >= 0)

while(j >= 0)

if(carry) c[k++]= carry + '0';

c[k] = '\0';

for(i = 0;i < k / 2;i++)printf("%s + s = %s",a,b,c);

t;return 0;}

6樓:繆遐思菅淑

使用字元陣列。

char num1[1000], num2[1000],sum[1001];取出字元陣列最後一位的數字。

可以用temp1=num1[1000]-'0';

反之數字轉為字元。

加上'0'設定乙個進位標誌。

使用迴圈就好了。

7樓:醉墨輓歌

這是用的指標,懶得看,明明自己寫幾步就搞定的幹嘛要寫成這樣,浪費人力物力,降低程式執行速度。

c語言統計數字位數問題

8樓:匿名使用者

789 / 10 = 7878 / 10 = 77 / 10 = 0進行了3次這樣就得出789是3位數 a[3]= 則 m=2*10^(2-0) +3*10^(2-1) +4*10^(2-2) = 234

c語言實現兩個二進位位的交換

9樓:網友

前面的就是位操作啊,記住&0=0、|1=1這兩個原則不就很簡單了。

兩個數之和是6 16,其中數的最後一位數是0,如果把0去掉,就與另數相同,這兩個數的差是,急急

是0.000吧!兩個數分別是3.080 3.08 應給符合要求吧!呵呵。兩個數的差是0,一個數為 3 080另一個數為 3.08.6.16 du10 1 0.56 6.16 0.56 5.6 檢查一下題,兩zhi個dao數版之和是6.16?權?兩個數之和是616?兩個數之和是616,其中一個數的最後...

用0,1,3,4,5,6,7,9 組成兩個三位數,這兩個三位數最小差是多少,最大差是多少

8個陣列成倆3位數?錯了吧 最小差 304 197 最大差 976 103 最小差是401 397 4 最大差是976 103 873 用0,1,2,3,4,5,6,7,8,9組成兩組三位數它們的和最大是幾?最小是幾?最大值 975 864 1839 最小值 104 235 339 一個三位數,各位...

兩個2位數的積是216,這兩個數的和是多少要過程

216 18 12 和 18 12 30 兩個數的和是36,兩個數旳差是12,這兩個數是多少 分別是 37 12 2 24.5 37 12 2 12.5 滿意請及時採納 加設兩個數是a和b a b 36 a b 12 兩式相加,2a 36 12 48,所以a 24,b 12 這兩個數分別是24和12...