求模运算符c

在C语言中,取模运算(也称为取余运算)使用取模运算符*%* 来实现。数学上称为mod。取模运算的基本形式是x % y,表示x除以y的余数。

取模运算的基本原理

取模运算的基本公式是:

x % y = x - y * (x / y)

其中,x / y 表示整数除法的结果1。例如:

#include <stdio.h>

int main() {

int a = -3;

int b = 2;

int result = a % b;

printf("%d %% %d = %d\n", a, b, result); // 输出:-3 % 2 = -1

return 0;

}

在这个例子中,-3 % 2 的结果是*-1* ,因为*-3 - 2 * (-3 / 2) = -3 - 2 * (-1) = -3 + 2 = -1* 1

取模运算的应用

取模运算在C语言中有许多实际应用,以下是一些常见的用法:

  • 判断奇偶性 :通过对一个整数进行模2运算,可以判断其奇偶性。如果结果为0,则表示该数为偶数;如果结果为1,则表示该数为奇数2

int num = 5;

if (num % 2 == 0) {

printf("%d 是偶数\n", num);

} else {

printf("%d 是奇数\n", num);

}

  • 循环取值范围 :通过对一个数进行模运算,可以将其限制在一个指定的范围内循环。例如,对于一个范围为0到9的计数器,执行计数器值counter = counter % 10 ,可以确保计数器的值在0到9之间循环2

for (int i = 0; i < 20; i++) {

printf("%d ", i % 10);

}

// 输出:0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9

  • 分割数字 :通过对一个整数进行模运算,可以将其分割成整数位和小数位。例如,对于整数的百位、十位和个位,可以使用num / 100 获取百位,使用*(num / 10) % 10* 获取十位,使用num % 10 获取个位2

int num = 1234;

int hundreds = (num / 100) % 10;

int tens = (num / 10) % 10;

int ones = num % 10;

printf("百位:%d, 十位:%d, 个位:%d\n", hundreds, tens, ones); // 输出:百位:2, 十位:3, 个位:4

  • 年份计算 :模运算可以用于判断年份是否为闰年。根据闰年的定义,如果一个年份能被4整除但不能被100整除,或者能被400整除,那么它就是闰年2

int year = 2024;

if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {

printf("%d 是闰年\n", year);

} else {

printf("%d 不是闰年\n", year);

}

通过以上示例,可以看出取模运算在C语言中有着广泛的应用,尤其在数字处理和循环控制方面。

相关推荐
CoderCodingNo18 分钟前
【GESP】C++五级练习题 luogu-P1865 A % B Problem
开发语言·c++·算法
大闲在人28 分钟前
7. 供应链与制造过程术语:“周期时间”
算法·供应链管理·智能制造·工业工程
小熳芋32 分钟前
443. 压缩字符串-python-双指针
算法
Charlie_lll41 分钟前
力扣解题-移动零
后端·算法·leetcode
chaser&upper42 分钟前
矩阵革命:在 AtomGit 解码 CANN ops-nn 如何构建 AIGC 的“线性基石”
程序人生·算法
weixin_499771551 小时前
C++中的组合模式
开发语言·c++·算法
iAkuya1 小时前
(leetcode)力扣100 62N皇后问题 (普通回溯(使用set存储),位运算回溯)
算法·leetcode·职场和发展
近津薪荼1 小时前
dfs专题5——(二叉搜索树中第 K 小的元素)
c++·学习·算法·深度优先
xiaoye-duck1 小时前
吃透 C++ STL list:从基础使用到特性对比,解锁链表容器高效用法
c++·算法·stl
松☆1 小时前
CANN与大模型推理:在边缘端高效运行7B参数语言模型的实践指南
人工智能·算法·语言模型