You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写C程序 不使用乘除模运算符通过循环求两数余数

C语言仅用循环实现整数余数计算(禁用乘/除/取模运算符)

你现有代码的求商循环已经完成了核心的减法迭代,只需要在循环结束后做一步加法即可得到余数,全程没有用到禁止的三类运算符,具体实现如下:

修改后的完整代码

#include <stdio.h>

int main()
{
    int num1, num2;

    printf ("Input value for num1: ");
    scanf ("%d", &num1);
    printf ("Input value for num2: ");
    scanf ("%d", &num2);   

    // 除数为0的边界校验
    if (num2 == 0) {
        printf("num2 cannot be 0!\n");
        return 1;
    }

    int prod =0, i;
    // 原乘积逻辑适配正整数场景,如需兼容负数可额外单独处理符号位
    for(i = 1; i <= num1; i++){
        prod += num2;
    }

    int quo = 0 , rem = 0;
    for(rem = num1 - num2; rem >= 0; rem = rem-num2) {
        if(rem < 0)             
            break;
        else
            quo++;
    }

    // 余数计算逻辑:循环退出时rem为负数,加一次num2即可得到符合要求的余数
    rem = rem + num2;

    printf ("The product of %d and %d is: %d\n", num1, num2, prod);
    printf ("The integer quotient of %d and %d is: %d\n", num1, num2, quo);
    printf ("The remainder of %d and %d is: %d\n", num1, num2, rem);

    return 0;
}

逻辑验证示例

以输入num1=10、num2=3为例:

  • 求商循环中rem值依次变化为7、4、1、-2,此时循环退出
  • 执行rem = -2 + 3 = 1,得到正确余数1
    全程仅使用加法、减法和循环结构,完全符合禁用乘、除、取模运算符的要求。如需支持正负整数的余数计算,只需提前判断两个数的符号,先转成正数计算后再给余数对应添加符号即可,不需要用到禁止的运算符。

内容的提问来源于stack exchange,提问作者serra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 15:24:04