【题目描述】
计算两个双精度浮点数a和b的相除的余数,a和b都是双精度浮点数。这里余数(r)的定义是:a=k×b+r,其中k是整数,0≤r<b。
【输入】
输入仅一行,包括两个双精度浮点数a和b。
【输出】
输出也仅一行,a÷b的余数。
【输入样例】
73.263 0.9973
【输出样例】
0.4601
【程序分析】
方法一:
通过对a/b用向下取整,求得商k
通过r=a-k*b求得浮点数得余数(余数可能非整数)
方法二:
利用fmod函数求浮点数得余数
【程序实现】
方法一:
#include <stdio.h>
#include <math.h>
int main() {
double a, b;
scanf("%lf %lf", &a, &b);
// 计算 k = floor(a / b)
double k = floor(a / b);
// 计算余数 r = a - k * b
double r = a - k * b;
printf("%.4lf\n", r);
return 0;
}
方法二:
#include <stdio.h>
#include <math.h>
int main() {
double a, b;
scanf("%lf %lf", &a, &b);
// 使用fmod函数直接计算浮点数余数
double r = fmod(a, b);
printf("%.4lf\n", r);
return 0;
}
fmod函数特点:
- 返回 a−n×b(其中 n=⌊a/b⌋)
- 结果符号与 a相同
- 满足 0≤∣r∣<∣b∣
237

被折叠的 条评论
为什么被折叠?



