- 在只容许使用++操作符号的情况下。请完成下面代码,实现减法、乘法、除法。注意:假设操作数全为
正数
,并且可以不考虑性能
。不能使用--
、*
、/
等操作符。
a)乘法
int multi(int op1,int op2){//op1*op2}
b)减法
int sub(int op1, int op2){//op1 - op2}
c)除法
int div(int op1, int op2){//op1/op2}
分析:
乘法:a*b就等于b个a相加。题目也说了不考虑性能。
减法:a-b就等于a+(-1)*b;就等于a加上b的相反数,得到b的相反数就解决了。
除法:a/b=n;就是说有n个b相加小于等于a;可以采用b一直加,直到大于a结束。
参考解法:
//乘法
int multi(int op1, int op2) {
int sum = 0;
for (int i = 0; i < op2; i++) {
sum += op1;
}
return sum;
}
//减法
int subs(int op1, int op2) {
op2 = ~op2;
op2 += 1;
return op1 + op2;
}
//除法
int divs(int op1, int op2) {
int result=0;
int num = 0;
for (int i = 0; result <= op1; i++) {
result += op2;
num++;
}
return num-1;
}