天天看点

两数相除(不用乘法、除法和mod运算符)—C语言

需要注意的问题:

  1. int 的范围是

    [-2^31,2^31-1],也就是【-2147483648,2147483647】

    ,如果-2147483648/-1结果会超出int 范围。
  2. 除法,乘法和mod都不能使用,那可以使用加减,移位。
  3. 只需保留商即可
  4. 保证数据在int范围。
两数相除(不用乘法、除法和mod运算符)—C语言

code:

#include<stdio.h>
using namespace std;
long main() {
	//a是被除数,b是除数
	long a, b;
	long c=0;
	scanf_s("%d%d", &a, &b);
	if (b==0)
	{
		printf("您的输入不合法,请重新输入:\n");
		return 0;
	}
	if (a == 0) {
		c = 0;
	}
	if (b >0 && a >0 && a-b<0)
	{
		c = 0;
	}
	if (b > 0 && a < 0 && a + b>0)
	{
		c = 0;
	}
	if (b < 0 && a>0 && a + b < 0)
	{
		c = 0;
	}
	if (b < 0 && a < 0 && a - b > 0)
	{
		c = 0;
	}
	while (b>0&&a>0&&a-b>=0)
	{
			a = a - b;
			c++;
	}
	while (b > 0 && a<0 && a+b<=0)
	{
		a = a+b;
		c--;
	}
	while (b<0&&a>0&&a+b>=0)
	{
		a = a + b;
		c--;
	}
	while (b < 0 && a<0 && a-b<=0)
	{
		a = a-b;
		c++;
	}
	printf("%d", c);
	return 0;
}
           

结果

两数相除(不用乘法、除法和mod运算符)—C语言
两数相除(不用乘法、除法和mod运算符)—C语言