模数运算符如何工作?

时间:2012-09-23 22:50:34

标签: c++ modulus

假设我需要格式化数组的输出以在每行显示固定数量的元素。我如何使用模数运算来做到这一点?

使用C ++,下面的代码适用于每行显示6个元素,但我不知道它是如何工作的?

for ( count = 0 ; count < size ; count++)
{
    cout << somearray[count];
    if( count % 6 == 5) cout << endl;
}

如果我想每行显示5个元素怎么办?我如何找到所需的确切表达式?

5 个答案:

答案 0 :(得分:34)

在C ++表达式中a % b返回a除以b的余数(如果它们是正数。对于负数,结果的符号是实现定义的)。例如:

5 % 2 = 1
13 % 5 = 3

有了这些知识,我们可以尝试理解您的代码。条件count % 6 == 5表示当除数计数的剩余部分为5时,将写入换行符。这种情况多久发生一次?相隔6行(练习:写入数字1..30并在满足此条件的情况下加下划线),从第6行开始(计数= 5)。

要从代码中获得所需的行为,您应该将条件更改为count % 5 == 4,从第5行(count = 4)开始,每5行会给出换行符。

答案 1 :(得分:6)

基本上,模数运算符为您提供余数 数学中的简单例子剩下的是什么?剩下的11除以3?答案是2

同样的事情C ++有模数运算符(&#39;%&#39;)

解释的基本代码

#include <iostream>
using namespace std;


int main()
{
    int num = 11;
    cout << "remainder is " << (num % 3) << endl;

    return 0;
}

将显示

  

余数为2

答案 2 :(得分:2)

它为你提供了一个师的剩余部分。

int c=11, d=5;
cout << (c/d) * d + c % d; // gives you the value of c

答案 3 :(得分:2)

您可以将模数运算符视为给出余数。 count%6尽可能多地将6次计数除以并给出0到5之间的余数(这些都是可能的余数,因为你已经尽可能多地分出6次)。数组的元素都在for循环中打印,但每次余数为5(每第6个元素)时,它会输出换行符。这为每行提供了6个元素。每行5个元素,使用

  

if(count%5 == 4)

答案 4 :(得分:2)

这个JSFiddle项目可以帮助您理解模数的工作原理: http://jsfiddle.net/elazar170/7hhnagrj

 function modulus(x,y){
   var m = Math.floor(x / y);
   var r = m * y;
   return x - r;
 }