我正在努力理解if ((x + y) % 2 == 0)
...我无法理解它背后的逻辑。
var drawTable = "";
var size = 8;
for (x = 1; x <= size; x++) {
for (y = 1; y <= size; y++) {
if ((x + y) % 2 == 0) {
drawTable += " ";
} else {
drawTable += "#";
}
}
drawTable += "\n"
}
console.log(drawTable);
谢谢,
Kaue Pacheco
答案 0 :(得分:1)
if ((x + y) % 2 == 0)
与if (x + y) is an even number
相同。
答案 1 :(得分:1)
((x + y) % 2 == 0)
仅在x+y
为偶数时才为真,否则为假。
如果为true,则会添加空格,否则会添加#符号。
答案 2 :(得分:1)
显示x和y的总和是否为偶数。如果x = 1且y = 3,则x + y将为4,并且将分割4。如果它有一个0余数(就像数字4那样),它是一个偶数。否则,这是一个奇数。
如果您的余数为零,您的代码将仅执行((x + y)%2 == 0)的if条件内的内容。希望这有助于^ _ ^
答案 3 :(得分:0)
正如所有其他答案所述,如果#include <stdio.h>
#include <stdbool.h>
bool online(int size, int r, int c){
if(size < 1)
return false;
int last = size-1;
if((r == 0 || r == last) && (0 <= c && c <= last))
return true;
if((c == 0 || c == last) && (0 <= r && r <= last))
return true;
return online(size-4, r-2, c-2);
}
int main(void){
int t, n, size;
scanf("%d", &t);
while(t--){
scanf("%d", &n);
size = 4*n-3;//1 + 4*(size-1);
for(int r = 0; r < size; ++r){
for(int c = 0; c < size; ++c){
if(online(size, r, c))
putchar('*');
else
putchar(' ');
}
putchar('\n');
}
putchar('\n');
}
}
是偶数,它会打印出一个空格,如果它是奇数,它会打印出一个&#39;#&#39;。这似乎是创建一个棋盘图案。由于你将从x = 1和y = 1开始,第一行将以空格开始(因为x + y是偶数),然后是&#39;#&#39;,后跟一个空格。 ..直到y为9.然后将退出内部for循环并开始一个新行。在这个新行上,x将从2开始,y从1开始,所以#&#39;#&#39;将被打印(因为x + y是奇数),然后是空格,然后是......直到y再次为8。然后将启动一个新行,这将继续直到x为9.此时将打印出一个棋盘格。
答案 4 :(得分:0)
if((x + y)%2 == 0)如果你想进一步解释这个。
模数&#39; %
&#39;用于获得除法的其余部分。
如果你有例如:
5 % 2 = ?
在这种情况下,它会将5除以2.现在答案将是remainder
,而不是quotient
。
所以答案是:
5 % 2 = 1
你会知道它是even
还是odd
,因为你将5除以2,其余的将通过将它与{{1}进行比较来区分它是偶数还是奇数}。显然,所有等于 0 的都是偶数。