C语言有负号的除法以及求余运算规则

举例说明

a÷b=c…d
17÷5=3…2
被除数÷除数=商…余数

有负号的运算规则

求:

  • -17除以5的商和余数
  • 17除以-5的商和余数
  • -17除以-5的商和余数

答:

a÷b=c…d

用a代表被除数,用b代表除数,用c代表商,用d代表余数.

c的数值是|a|/|b|,c是正号还是负号由a和b的负号数量决定;d的正负号和a相同,数值为 a-c*b.

  • -17÷5=-3…-2

解释:-175分别取绝对值并相除,即17/5=3,因为只有一个负号,因此-17/5的商为-3;余数为-17-(-3*5),即余数为-2.

  • 17÷-5=-3…2

解释:17-5分别取绝对值并相除,即17/5=3,因为只有一个负号,因此17/-5的商为-3;余数为17-(-3*-5),即余数为2.

  • -17÷-5=3…-2

解释:-17-5分别取绝对值并相除,即17/5=3,因为有两个负号,负负得正,因此-17/-5的商为3;余数为-17-(3*-5),即余数为-2.

验证

用程序测试一下,代码如下:

#include 

void division(int dividend,int divisor)
{
	printf("%d/%d=%d\n",dividend,divisor,dividend/divisor);
	printf("%d%%%d=%d\n\n",dividend,divisor,dividend%divisor);
}


int main(void)
{
	int a,b,c,d;
	a = 17,b = 5;
	division(a,b);
	a = -17,b = 5;
	division(a,b);
	a = 17,b = -5;
	division(a,b);
	a = -17,b = -5;
	division(a,b);	
	
	return 0;
}

运行结果为:

17/5=3
17%5=2

-17/5=-3
-17%5=-2

17/-5=-3
17%-5=2

-17/-5=3
-17%-5=-2

C语言有负号的除法以及求余运算规则_第1张图片

你可能感兴趣的:(学习总结,C,语言学习)