我怎么想在double for循环中生成这样的东西?这样输出将变成类似
的输出O O O O O O O O O
O 1 O 1 O 1 O 1 O
O O O O O O O O O
O 1 O 1 O 1 O 1 O
O O O O O O O O O
O 1 O 1 O 1 O 1 O
O O O O O O O O O
O 1 O 1 O 1 O 1 O
O O O O O O O O O
我的尝试如下:
for (int i = 0; i < 8; i++)
{
for (int j = 0; j < 8; j++)
{
//Insert code here
if (j % 2 == 0)
{
array[b][a] = 0;
}
else if (i % 2 == 0 )
{
array[b][a] = 1;
}
}
}
我知道%涉及,但我不能在这里得到逻辑,以便 2d数组的角落全部为0 ,有人可以引导我通过吗?
答案 0 :(得分:2)
当我查看该输出时,我看到的模式是当行和列都具有奇数索引时输出为1
。否则,该数组具有0
。
请注意,向下记录不涉及代码。这只是用简单的英语写的事实。首先要做到这一点非常重要。
如果x
,则x % 2 == 1
为奇数。
bool isOdd(int x) {
return x % 2 == 1;
}
void work() {
int array[9][9];
for (int i = 0; i < 9; i++) {
for (int j = 0; j < 9; j++) {
if (isOdd(i) && isOdd(j))
array[i][j] = 1;
else
array[i][j] = 0;
}
}
}
答案 1 :(得分:1)
for (int i=0; i<9; i++) {
for (int j=0; j<9; j++) {
array[i][j] = ((j%2 && i%2)?1:0);
}
}
答案 2 :(得分:0)
您希望列索引为奇数且行索引为奇数,因此二维数组中1
的正确条件为:
(i%2==1) && (j%2==1)
答案 3 :(得分:0)
解决重大问题的一般方法是将它们分解为更小的问题。
练习1
您有两个功能:
print_zeroes
打印000000000
print_zeroes_and_ones
打印010101010
编写一个循环,交替调用这些函数,以便打印所需的网格。
练习2
编写函数print_zeroes
。
练习3
编写函数print_zeroes_and_ones
。
额外信用
print_a_line
,该函数在执行print_zeroes
和prints_zeroes_and_ones
print_a_line
打印网格的循环。答案 4 :(得分:0)
例如,您可以通过以下方式执行此操作
#include <iostream>
int main()
{
const size_t N = 9;
int a[N][N];
for ( size_t i = 0; i < N; i++ )
{
for ( size_t j = 0; j < N; j++ ) a[i][j] = i % 2 + j % 2 == 2;
}
for ( auto &row : a )
{
for ( int x : row ) std::cout << x << ' ';
std::cout << std::endl;
}
return 0;
}
输出
0 0 0 0 0 0 0 0 0
0 1 0 1 0 1 0 1 0
0 0 0 0 0 0 0 0 0
0 1 0 1 0 1 0 1 0
0 0 0 0 0 0 0 0 0
0 1 0 1 0 1 0 1 0
0 0 0 0 0 0 0 0 0
0 1 0 1 0 1 0 1 0
0 0 0 0 0 0 0 0 0
或者你可以用零初始化数组,例如
int a[N][N] = {};
然后在循环中只填充数组的奇数行。
例如
#include <iostream>
int main()
{
const size_t N = 9;
int a[N][N] = {};
for ( size_t i = 1; i < N; i += 2 )
{
for ( size_t j = 0; j < N; j++ ) a[i][j] = j % 2;
}
for ( auto &row : a )
{
for ( int x : row ) std::cout << x << ' ';
std::cout << std::endl;
}
return 0;
}
程序输出与上面显示的相同。
或者你可以简单地在循环中使用奇数行和列。
#include <iostream>
int main()
{
const size_t N = 9;
int a[N][N] = {};
for ( size_t i = 1; i < N; i += 2 )
{
for ( size_t j = 1; j < N; j += 2 ) a[i][j] = 1;
}
for ( auto &row : a )
{
for ( int x : row ) std::cout << x << ' ';
std::cout << std::endl;
}
return 0;
}