试图从模数中得到余数但有一些麻烦 - 在C中

时间:2014-10-31 19:57:22

标签: c modulus

使用创建的模数函数更新。但是,在编译时,输入两个数字后,它什么也不返回。

#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; 
}

2 个答案:

答案 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);
}