关于%取余的一些思考

在C语言中,取随机数rand()%n,获取0到n-1之间的整数, 如果是rand()%2那么值不是0就是1,不会有小数。

#include <stdio.h>

int main()
{
    int x;
    
    for (x=0;x<10;x++)
    {
        if(x%3==0) printf("x3= %d\n",x);

        if(x%5==0) printf("x5= %d\n",x);
    }
    
    return 0;
}

一共循环了10次,本来的想法是第一段代码打印3次,第二段代码打印2次。
但是实际运行:
在这里插入图片描述
但是第一段打印了4次,原因在于x=0时,属于特殊情况,任何值%取余都为0。
所以在这种情况下,循环只能从1开始,修改为x=1;x<=10
这样结果就正常了。
在这里插入图片描述
取%的数就和总循环数N建立起了比例关系。
想执行次数=总循环N/模数

当循环执行60次的时,想要一段代码只执行30次=60/2,模数取2即可。
模数=2,执行30次
模数=3,执行20次。
模数=4,执行15次。
模数=5,执行12次。
模数=6,执行10次。

但是要想划分的更细,比如想执行33次,42次,51次,再不改变总循环次数的时候,取余运算就做不到了。
只能通过if来人为划分。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值