生活随笔
收集整理的這篇文章主要介紹了
【C语言】通过原子操作实现加减乘除操作Ⅱ
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
只允許使用+、賦值語句、判斷語句、有限循環(huán)語句實現(xiàn)兩個整數(shù)的減法、乘法和除法(整除)運算
由提供的操作,我們需要先設計兩個函數(shù):
negate():改變整數(shù)符號abs():求整數(shù)絕對值
各功能運算設計如下:
a-b=a+negate(b)。若a>=0,a*b=(b累加a次);若a<0,a*b=-(b累加abs(a)次)。x=a/b,即a=bx,在a>0并且b>0時,x=累加b小于或等于a的最多次數(shù)。再考慮b為負數(shù)的其他情況。
#include <stdio.h>int negate(int a
) { int neg
= 0;int d
= (a
< 0 ? 1 : -1);while (a
!= 0) {neg
+= d
;a
+= d
;}return neg
;
}int abs(int a
) { if (a
< 0) {return negate(a
);} else {return a
;}
}int sub(int a
, int b
) { return a
+negate(b
);
}int mult(int a
, int b
) { int result
= 0;for (int i
= abs(a
); i
> 0; i
--) {result
+= b
;}if (a
> 0) {return result
;} else {return negate(result
);}
}int div(int a
, int b
) { int a1
= abs(a
);int b1
= abs(b
);int product
= b1
;int x
= 0;while (product
<= a1
) {product
+= b1
;x
++;}if ((a
< 0 && b
< 0) || (a
> 0 && b
> 0)) {return x
;} else {return negate(x
);}
}int main() {int a
= -5, b
= 3;printf("%d-%d=%d\n", a
, b
, sub(a
, b
));printf("%d*%d=%d\n", a
, b
, mult(a
, b
));printf("%d/%d=%d\n", a
, b
, div(a
, b
));
}
運行結(jié)果
總結(jié)
以上是生活随笔為你收集整理的【C语言】通过原子操作实现加减乘除操作Ⅱ的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。