运算符运用 B2010 带余除法

· · 题解

刚刚开始学习 C/C++ 的同学们看到这道题是否有一点慌呢?

例如,正常情况下,我们有 \dfrac 5 3= 1.\dot{6}\approx1.67,怎样才能获得这样的效果呢?

5\div 3=1\quad\cdots\cdots2

事实上,C/C++ 提供了取模运算符 %,功能就是计算余数。

可是,怎样才能获得商数部分呢?

C/C++ 提供了一种功能,叫做整型截断,意思是如果你进行 int/int 或其他整型除法时,答案会自动保留整数部分,即向下取整。换言之,以下代码结果如注释:

int a=5/3; //5/3=1.666.... 截断为 1

这样我们就可以 AC 这道题目了!

#include <bits/stdc++.h>
using namespace std;
int main(void) {
    int a,b;
    scanf("%d%d",&a,&b);
    printf("%d %d",a/b,a%b);
    return 0;
}

extend

一些扩展。

  1. 实际使用要判断除数是否为 0
  2. 浮点数除法可以使用强制类型转换来取整,如:
    int a=(int)(5.0/3.0);  //两组括号可以省略其中任意一组

    也可以使用库函数 floor()

    int a=floor(5.0/3.0);
  3. % 运算符是 \texttt{Binary Operator},意味着它只能用于整型 。浮点数的取模要用库函数 fmod()
    double a=fmod(5.0,3.0); //a=2.0