如何编写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
相关产品推荐
相关产品推荐

