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

Hello,modulus!

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

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

取余运算计算过程结果
-10 %3-1
3%-103
10%-31
-3%10-3
10%-31
0%520
-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!

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个简单的使用 Python 和 Tkinter 实现的科学计算器,可以进行加、减、乘、除、幂和取余运算,并且具有清除功能。 ```python from tkinter import * class Calculator: def __init__(self, master): self.master = master master.title("科学计算器") # 创建输入框 self.entry = Entry(master, width=35, borderwidth=5) self.entry.grid(row=0, column=0, columnspan=4, padx=10, pady=10) # 创建按钮 self.button_1 = Button(master, text="1", padx=40, pady=20, command=lambda: self.button_click(1)) self.button_2 = Button(master, text="2", padx=40, pady=20, command=lambda: self.button_click(2)) self.button_3 = Button(master, text="3", padx=40, pady=20, command=lambda: self.button_click(3)) self.button_4 = Button(master, text="4", padx=40, pady=20, command=lambda: self.button_click(4)) self.button_5 = Button(master, text="5", padx=40, pady=20, command=lambda: self.button_click(5)) self.button_6 = Button(master, text="6", padx=40, pady=20, command=lambda: self.button_click(6)) self.button_7 = Button(master, text="7", padx=40, pady=20, command=lambda: self.button_click(7)) self.button_8 = Button(master, text="8", padx=40, pady=20, command=lambda: self.button_click(8)) self.button_9 = Button(master, text="9", padx=40, pady=20, command=lambda: self.button_click(9)) self.button_0 = Button(master, text="0", padx=40, pady=20, command=lambda: self.button_click(0)) self.button_add = Button(master, text="+", padx=39, pady=20, command=self.button_add) self.button_subtract = Button(master, text="-", padx=41, pady=20, command=self.button_subtract) self.button_multiply = Button(master, text="*", padx=40, pady=20, command=self.button_multiply) self.button_divide = Button(master, text="/", padx=41, pady=20, command=self.button_divide) self.button_power = Button(master, text="^", padx=39, pady=20, command=self.button_power) self.button_modulus = Button(master, text="%", padx=40, pady=20, command=self.button_modulus) self.button_clear = Button(master, text="清空", padx=76, pady=20, command=self.button_clear) self.button_equal = Button(master, text="=", padx=91, pady=20, command=self.button_equal) # 添加按钮到窗口 self.button_1.grid(row=3, column=0) self.button_2.grid(row=3, column=1) self.button_3.grid(row=3, column=2) self.button_4.grid(row=2, column=0) self.button_5.grid(row=2, column=1) self.button_6.grid(row=2, column=2) self.button_7.grid(row=1, column=0) self.button_8.grid(row=1, column=1) self.button_9.grid(row=1, column=2) self.button_0.grid(row=4, column=0) self.button_clear.grid(row=4, column=1, columnspan=2) self.button_add.grid(row=5, column=0) self.button_subtract.grid(row=6, column=0) self.button_multiply.grid(row=6, column=1) self.button_divide.grid(row=6, column=2) self.button_power.grid(row=5, column=1) self.button_modulus.grid(row=5, column=2) self.button_equal.grid(row=4, column=3, columnspan=2) self.first_number = None self.operation = None # 按钮事件函数 def button_click(self, number): current = self.entry.get() self.entry.delete(0, END) self.entry.insert(0, str(current) + str(number)) def button_clear(self): self.entry.delete(0, END) self.first_number = None self.operation = None def button_add(self): self.first_number = float(self.entry.get()) self.entry.delete(0, END) self.operation = "+" def button_subtract(self): self.first_number = float(self.entry.get()) self.entry.delete(0, END) self.operation = "-" def button_multiply(self): self.first_number = float(self.entry.get()) self.entry.delete(0, END) self.operation = "*" def button_divide(self): self.first_number = float(self.entry.get()) self.entry.delete(0, END) self.operation = "/" def button_power(self): self.first_number = float(self.entry.get()) self.entry.delete(0, END) self.operation = "^" def button_modulus(self): self.first_number = float(self.entry.get()) self.entry.delete(0, END) self.operation = "%" def button_equal(self): second_number = float(self.entry.get()) self.entry.delete(0, END) if self.operation == "+": result = self.first_number + second_number elif self.operation == "-": result = self.first_number - second_number elif self.operation == "*": result = self.first_number * second_number elif self.operation == "/": result = self.first_number / second_number elif self.operation == "^": result = self.first_number ** second_number elif self.operation == "%": result = self.first_number % second_number self.entry.insert(0, result) # 创建主窗口 root = Tk() my_calculator = Calculator(root) root.mainloop() ``` 运行上述代码,即可看到一个具有加、减、乘、除、幂和取余运算,并且具有清除功能的科学计算器界面。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值