题目描述
请编写一个方法,实现整数的乘法、减法和除法运算(这里的除指整除)。只允许使用加号。
给定两个正整数int a,int b,同时给定一个int type代表运算的类型,1为求a * b,0为求a / b,-1为求a - b。请返回计算的结果,保证数据合法且结果一定在int范围内。
测试样例:
1,2,1
返回:2
思路:减法直接使用补码变为加法:按位取反+1,要看清题目给出的a,b都是正整数
#include<iostream>
using namespace std;
int Calc(int a,int b,int type)
{
int c = 0;
switch(type)
{
case 1: //乘法
for(int i = 0; i < b; ++i)
c += a;
break;
case 0:
if(b == 0)
{
cout << "除数不能为0" <<endl;
c = 0;
}
if(a == 0 || a < b)
c = 0;
c = 0;
while(a > b)
{
c++;
a = a + (~b) + 1;
}
break;
case -1:
c = a +(~b) + 1; //减法直接变成按位取反+1
break;
default:
cout << "运算符出错"<<endl;
break;
}
return c;
}
int main()
{
cout << Calc(9,2,0) <<endl;
cout << "hello..."<<endl;
return 0;
}