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...