2025年C语言-关于求余

C语言-关于求余求余是一种数学计算方法 指一个数除以另一个数 不够除的部分就是余数 就是求余的结果 整除就是一个数除以另一个数 刚刚好的倍数 这里没有四舍五入 不够一倍的都将舍去 一 求余负数 求余一个负数 验证方法 运算 1000 次 验证求余正数和求余负数的区别 定义 a b

大家好,我是讯享网,很高兴认识大家。

求余是一种数学计算方法,指一个数除以另一个数,不够除的部分就是余数,就是求余的结果。整除就是一个数除以另一个数,刚刚好的倍数,这里没有四舍五入,不够一倍的都将舍去。

一、求余负数

  • 求余一个负数

验证方法:运算1000次,验证求余正数和求余负数的区别。定义a、b、c三个变量,a从1开始自加2至2000,b从1开始自加1至1000,c从-1开始自减1至-1000,让a在每次循环中分别求余b和c并打印结果。

代码如下:

#include <stdio.h> #include <stdlib.h> int main() { int a, b=1, c=-1; for (a = 1; a <= 2000; a+=2) { printf("a值:%d b值:%d c值:%d 求余b:%d ", a, b, c, a % b); printf("求余c:%d\n", a % c); b++; c--; } return 0; }

讯享网

 运行结果如下:


讯享网

结论:求余按绝对值计算,求余正负数结果一样 

  • 被求余数为负数

 验证方法:运算1000次,正数和负数求余的区别。定义a、b、c三个变量,a从-1开始自减2至-2000,b从1开始自加1至1000,c从-1开始自减1至-1000,让a在每次循环中分别求余b和c并打印结果。

代码如下:

讯享网#include <stdio.h> #include <stdlib.h> int main() { int a, b=1, c=-1; for (a = -1; a >= -2000; a-=2) { printf("a值:%d b值:%d c值:%d 求余b:%d ", a, b, c, a % b); printf("求余c:%d\n", a % c); b++; c--; } return 0; }

运行结果如下:

 结论:求余按绝对值计算,求余正负数结果一样,但如果被求余数为负数则求余结果一定为负数

二、求余小数与求余分数

结论:求余本质上是整数间的除法,在整数的除法中,只有能整除与不能整除两种情况,当不能整除时,才产生余数,所以要求被求余数和求余数都必须为整数,即要求“%”两边必须为整数。

a%b                (a必须整数,b必须整数)

三、求余数绝对值大于被求余数绝对值

  1. “%”两边皆为正数
  2. “%”左边为正数,右边为负数
  3. “%”左边为负数,右边为正数
  4. “%”左右皆为负数

 验证方法:运算4000次,求余数绝对值始终大于被求余数绝对值,第一个1000次被求余数与求余数皆为正数,第二个1000次被求余数为负数,求余数为正数,第三个1000次被求余数为负数,求余数为正数,第四个1000次被求余数与求余数皆为负数,通过这四个1000次运算来验证在求余数绝对值大于被求余数绝对值的情况下,被求余数与求余数符号变化下的求余结果。

代码如下:

#include <stdio.h> #include <stdlib.h> int main() { int a1, b1 = 2, a2 = 1, b2 = -2, a3 = -1, b3 = 2, a4 = -1,b4 = -2; for (a1 = 1; a1 <= 1000; a1++) { printf("a值:%d b值:%d a%%b: % d",a1,b1, a1 % b1); b1++; printf(" a值:%d b值:%d a%%b: % d", a2, b2, a2 % b2); a2++; b2--; printf(" a值:%d b值:%d a%%b: % d", a3, b3, a3 % b3); a3--; b3++; printf(" a值:%d b值:%d a%%b: % d\n", a4, b4, a4 % b4); a4--; b4--; } return 0; }

运行结果如下:

结论:求余绝对值大于自身绝对值的数结果仍为其自身。 

四、求余数大小与求余结果范围间的关系

验证方法:定义a、b、c三个变量,让a从1开始自加1至100,循环100次,每次循环打印a%b的结果,a每循环100次,b、c值加1,b从1开始,c从0开始,当c=100时结束循环,共循环10000次,验证求余数在1~100范围内求余结果的范围变化。

代码如下:

讯享网#include <stdio.h> #include <stdlib.h> int main() { int a=0, b=1,c=0; while(a<=100) { a++; printf("a值:%d a%%b:%d ",a,a % b); if (a == 100) { printf("\nb值:%d\n", b); printf("---------------------------------------------------------------------------------------------------\n"); a = 0; b++; c++; if (c == 100) { break; } } } return 0; }

运行结果如下:

观察发现:

b值(求余数)为1时,求余结果始终为0 

b值为2时,求余结果始终在(0~1)间变化

b值为3时,求余结果始终在(0~2)间变化

...

b值为98时,求余结果始终在(0~97)间变化

b值为99时,求余结果始终在(0~98)间变化

b值为100时,求余结果始终在(0~99)间变化

...

b值为n时,求余结果始终在(0~n-1)间变化

结论:求余数为n时,求余结果的范围为0~n-1

小讯
上一篇 2025-01-28 09:56
下一篇 2025-01-05 08:32

相关推荐

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