[英]How does the modulus operator work?
假設我需要格式化數組的輸出以顯示每行固定數量的元素。 我如何使用模數運算來做到這一點?
使用 C++,下面的代碼可用於每行顯示 6 個元素,但我不知道它是如何以及為什么工作的?
for ( count = 0 ; count < size ; count++)
{
cout << somearray[count];
if( count % 6 == 5) cout << endl;
}
如果我想每行顯示 5 個元素怎么辦? 我如何找到所需的確切表達?
在 C++ 表達式中, a % b
返回 a 除以 b 的余數(如果它們是正數。對於結果的負數符號是實現定義的)。 例如:
5 % 2 = 1
13 % 5 = 3
有了這些知識,我們可以嘗試理解您的代碼。 條件count % 6 == 5
表示當除法計數的余數為 5 時將寫入換行符。 這種情況多久發生一次? 正好相隔 6 行(練習:寫數字 1..30 並在滿足此條件的數字下划線),從第 6 行(計數 = 5)開始。
要從您的代碼中獲得所需的行為,您應該將條件更改為count % 5 == 4
,這將使您每 5 行換行一次,從第 5 行(count = 4)開始。
基本上模數運算符給你余數簡單的數學示例 11 除以 3 的余數/余數是多少? 答案是 2
對於同樣的事情 C++ 有模運算符 ('%')
解釋的基本代碼
#include <iostream>
using namespace std;
int main()
{
int num = 11;
cout << "remainder is " << (num % 3) << endl;
return 0;
}
哪個會顯示
余數為 2
這個 JSFiddle 項目可以幫助您了解模數是如何工作的: http : //jsfiddle.net/elazar170/7hhnagrj
模數函數的工作原理是這樣的:
function modulus(x,y){
var m = Math.floor(x / y);
var r = m * y;
return x - r;
}
它給你一個除法的剩余部分。
int c=11, d=5;
cout << (c/d) * d + c % d; // gives you the value of c
您可以將模運算符視為給您一個余數。 count % 6 將 6 盡可能多地除以計數,並為您提供從 0 到 5 的余數(這些是所有可能的余數,因為您已經盡可能多地除以 6)。 數組的元素都在for循環中打印出來,但是每次余數為5(每6個元素)時,它輸出一個換行符。 這為您提供每行 6 個元素。 對於每行 5 個元素,請使用
如果(計數 % 5 == 4)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.