使用创建的模数函数更新。但是,在编译时,输入两个数字后,它什么也不返回。
#include<stdio.h>
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;
}
答案 0 :(得分:1)
如你所知,除法实际上只是一种减法的快捷形式,余数是除数时留下的数字的一部分。因此,请考虑从num1中重复减去num2,直到您的数字小于num2。这就是你的模数。我会把代码留给你。
示例:7%3:
7 - 3 = 4
4 - 3 = 1
1 < 3, so 7 % 3 = 1
答案 1 :(得分:0)
接受回答后
只需计算商,使商成为整数并计算模数。根据您使用的modulus的定义,可能需要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:% e y:% 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);
}