1. 问题分析
- 加法操作
要实现 a+b 的基本思路就是对 a 执行 b 次 ++ 操作即可。 - 减法操作
要实现 a-b 的基本思路就是不断地对 b 执行 n 次 ++ 操作,直到等于 a 为止,记录这个过程中的操作次数。 - 乘法操作
要实现 a*b 的基本思路就是对 a 执行 b 次相加就能得到 a*b 的值。 - 除法操作
要实现 a/b 的基本思路为:利用之前的乘法操作,对 b 不断乘以 1,2,3,4… n,直到相乘结果 b*n > a 时,就能得到商为 n-1 。
2. 代码实现
#include <iostream>
int add(int a, int b)
{
if (a < 0 && b < 0)
{
std::cout << "can not use ++" << std::endl;
return -1;
}
if (a >= 0)
{
for (int i = 0; i < a; i++)
{
b++;
}
return b;
}
else
{
for (int i = 0; i < b; i++)
{
a++;
}
return a;
}
}
int sub(int a, int b)
{
if (a < b)
{
std::cout << "can not use ++" << std::endl;
return -1;
}
int ret = 0;
for (; b < a; b++)
{
ret++;
}
return ret;
}
int multi(int a, int b)
{
if (a < 0 || b < 0)
{
std::cout << "can not use ++" << std::endl;
return -1;
}
int ret = 0;
for (; b > 0; b--)
{
ret = add(ret, a);
}
return ret;
}
int divi(int a, int b)
{
if (a <= 0 || b <= 0)
{
std::cout << "can not use ++" << std::endl;
return -1;
}
int ret = 1;
int result = 0;
for (;;)
{
result = multi(b, ret);
if (result <= a)
{
ret++;
}
else
{
break;
}
}
return ret - 1;
}
int main()
{
std::cout << add(2, -10) << std::endl;
std::cout << sub(15, 10) << std::endl;
std::cout << multi(15, 10) << std::endl;
std::cout << divi(30, 10) << std::endl;
return 0;
}
|