试图从模数中得到余数但有一些麻烦 – 用C表示

更新了创建的模数函数。 但是,虽然它确实编译,但在输入两个数字后,它什么都不返回。

#include int main(){ double num1, num2, num3; printf("Enter two double numbers > "); scanf("%lf", &num1); scanf("%lf", &num2); num3 = num2; while (num3 > num1) { if (num3 > num1) { num3 = num3-num1; } else { printf("%.4lf float modulo %.4lf is %.4lf", num1, num2, num3); } } return 0; } 

如你所知,除法实际上只是一种减法的快捷forms,余数是除数时留下的数字的一部分。 因此,请考虑从num1重复减去num2,直到您的数字小于num2。 那是你的模数。 我会把代码留给你。

示例:7%3:

 7 - 3 = 4 4 - 3 = 1 1 < 3, so 7 % 3 = 1 

接受答复后

只需计算商,使商为整数并计算模数。 根据您使用的模数的定义,可能需要if (x > 0)而不是if (q > 0)

 double fmod1877731(double x, double y) { double q = x/y; if (q > 0) q = floor(q); else q = ceil(q); return x - y*q; } void fmodtest(double x, double y) { double z0 = fmod(x,y); double z1 = fmod1877731(x,y); printf("x:% ey:% e z0:% 0.20e z1:% 0.20e\n", x,y,z0,z1); } int main(void) { fmodtest(10.0,3.0); fmodtest(10.0,-3.0); fmodtest(-10.0,3.0); fmodtest(-10.0,-3.0); fmodtest(10.0,1.23); fmodtest(10.0,15); }