假设我需要格式化数组的输出以显示每行固定数量的元素。我怎么去做这个使用模数运算?模运算符是如何工作的?
使用C++,下面的代码每行显示6个元素,但我不知道它是如何工作的?
for (count = 0 ; count < size ; count++)
{
cout << somearray[count];
if(count % 6 == 5) cout << endl;
}
如果我想每行显示5个元素,该怎么办?我如何找到所需的确切表达式?
假设我需要格式化数组的输出以显示每行固定数量的元素。我怎么去做这个使用模数运算?模运算符是如何工作的?
使用C++,下面的代码每行显示6个元素,但我不知道它是如何工作的?
for (count = 0 ; count < size ; count++)
{
cout << somearray[count];
if(count % 6 == 5) cout << endl;
}
如果我想每行显示5个元素,该怎么办?我如何找到所需的确切表达式?
它给你一个部门的其余部分。
int c=11, d=5;
cout << (c/d) * d + c % d; // gives you the value of c
您可以将模运算符想象为给你一个余数。计数%6将尽可能多次除尽6次,并给出0到5之间的余数(这些都是可能的余数,因为您已经尽可能多地分出了6次)。数组的元素全部打印在for循环中,但每次剩余为5(每6个元素)时,它会输出一个换行符。这给你每行6个元素。对于每行5个元素,使用
如果(计数%5 == 4)
a % b
返回剩余
(如果它们都是正的。对于负数符号的结果是实现定义的)。例如:
5 % 2 = 1
13 % 5 = 3
有了这些知识,我们可以尝试了解您的代码。条件count % 6 == 5
意味着当6的余数除以5时将写入换行符。这种情况发生的频率如何?从第6行开始(count = 5),相隔6行(练习:写入数字1..30并强调满足此条件的数字)。
为了从你的代码中获得所需的行为,你应该改变条件为count % 5 == 4
,从第5行开始(计数= 4),每5行会给你换行。
此的jsfiddle项目能够帮助您了解如何工作模量: http://jsfiddle.net/elazar170/7hhnagrj
function modulus(x,y){
var m = Math.floor(x/y);
var r = m * y;
return x - r;
}
基本上模运算给你剩下 简单的例子,在数学方面有什么遗留/ 11余除以3?答案是2
对于同样的事C++有模运算符( '%')
用于解释
#include <iostream>
using namespace std;
int main()
{
int num = 11;
cout << "remainder is " << (num % 3) << endl;
return 0;
}
基本代码将显示
余数为2
“对于负数sig n的结果是实现定义的“这在C++ 11中是不正确的 - 参见ISO14882:2011(e)5.6-4或https://stackoverflow.com/questions/7594508。 –