令人头痛的取余运算—modulus!

令人头痛的取余运算—modulus!Hello,modulus!我印象中的取模运算10除以3取余得1:10%3=120除以8取余得4:20%8=4印象中的取模运算,就这些了

Hello,modulus!

我印象中的取余运算
10除以3取余得1:10%3=1
20除以8取余得4:20%8=4
就是两个数相除除不尽时剩下的余数。

今天的遭遇, 让我重新认识了取余运算。

取余运算 计算过程 结果
-10 %3 -1
3%-10 3
10%-3 1
-3%10 -3
10%-3 1
0%52 0
-52%-10 -2

这下长了见识,没玩过这样的。
直接十万个什么,查了好多资料,没一个直截了当的。
自己算,还不如直接用C来跑一把呢!

示例代码

#include<stdio.h>

void main()
{ 
   
	puts("两个正数之间的取模运算");
	int i=5;
	int j=3;
	printf("5mod3\t%d\n",i%j);//结果等于2
	printf("3mod5\t%d\n",j%i);//结果等于3
//----------------------------------------------
	puts("两个负数之间的取模运算");
	i=-5;
	j=-3;
	printf("-5mod-3\t%d\n",i%j);//结果等于-2
	printf("-3mod-5\t%d\n",j%i);//结果等于-3
//---------------------------------------------- 
	puts("两个异号数之间的取模运算之一");
	i=-15;
	j=6;
	printf("-15mod6\t%d\n",i%j);//结果等于-3
	printf("6mod-15\t%d\n",j%i);//结果等于6
//---------------------------------------------- 
	puts("两个异号数之间的取模运算之二");
	i=20;
	j=-8;
	printf("20mod-8\t%d\n",i%j);//结果等于4
	printf("-8mod20\t%d\n",j%i);//结果等于-8
}

运行效果

在这里插入图片描述
跑起来倒是挺痛快的,到底怎么算的呢?

自然数与自然数之间的取余运算是一目了然的
在这里插入图片描述

而负数与负数、负数与正数它们之间的取余运算呢?

有负数参与的取余运算,取负数的绝对值进行取余运算,求出余数之后再给余数加上被除数的符号。

例如:
-10%3=-(10%3)=-1
-10%-3=-(10%3)=-1
-3%10=-(3%10)=-3
10%-3=(10%3)=1

到这里,也应该结束了。
其实还有一个地方,一开始也困扰到我了。
两个同号的数,比如说52和20,我能理解52%20=12,却不怎么理解20%52=20。
希望下面的代码会给你启发

#include<stdio.h>

void main()
{ 
   
int i=52;
int j=20;
printf("attention!\t20 mod 52 =\t%d\n",j%i);
puts("---------------------------");
printf("20/52 =\t%d\n",j/i);//20除以52的商,直接取整数部分,得0
int remainder=j-i*(j/i);//余数,可以通过被除数减去除数和商的积得到
printf("attention!\t20-52*(20/52) =\t%d\n",remainder);
}

在这里插入图片描述

Goodbye,modulus!

今天的文章令人头痛的取余运算—modulus!分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/64150.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注