我使用FOR循环遍历数组来检查条件,但它似乎复制了我想要打印的变量。 这是我的代码:
/*Printing the matrix*/
for(row=0;row<15;row++)
{
for(col=0;col<8;col++)
{
for(a=0;a<sizeof(row_sel)/(sizeof(row_sel[0]));a++)
{
if(row==row_sel[a] && col==col_sel[a])
{
printf("|%d|",matrix[row][col]);
}
else
{
printf(" %d ",matrix[row][col]);
}
}
}
printf("\n");
}
我试图打印的是:
|0| 6 7 3 6 6 9 5
0 0 0 0 0 0 0 0
2 8 8 4 8 4 0 0
0 0 0 0 0 0 0 0
5 0 8 7 9 5 5 3
0 0 0 0 0 0 0 0
2 7 8 5 3 3 8 6
0 0 0 0 0 0 0 0
6 6 4 2 9 6 2 1
0 0 0 0 0 0 0 0
9 4 0 6 6 7 0 4
0 0 0 0 0 0 0 0
4 3 8 9 0 2 2 7
0 0 0 0 0 0 0 0
0 3 6 7 8 3 5 |2|
但是我得到了这个输出,我不知道为什么值重复,循环应该已经结束或跳过语句:
|0| 0 0 1 1 1 2 2 2 7 7 7 7 7 7 3 3 3 6 6 6 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 6 6 6 3 3 3 2 2 2 0 0 0 4 4 4 2 2 2 9 9 9
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5 5 5 4 4 4 6 6 6 3 3 3 5 5 5 8 8 8 6 6 6 5 5 5
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5 5 5 7 7 7 1 1 1 9 9 9 1 1 1 2 2 2 0 0 0 4 4 4
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9 9 9 7 7 7 3 3 3 6 6 6 8 8 8 0 0 0 3 3 3 8 8 8
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5 5 5 2 2 2 6 6 6 5 5 5 2 2 2 7 7 7 5 5 5 5 5 5
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
5 5 5 7 7 7 8 8 8 3 3 3 2 2 2 1 1 1 1 1 1 6 6 6
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
9 9 9 6 6 6 9 9 9 7 7 7 2 2 2 6 6 6 2 2 2 5 |5| 5
我出错的地方有哪些提示?非常感谢任何帮助。
答案 0 :(得分:1)
您的问题:
您打印每个 a的矩阵的每个值,但您只想打印一次。
解决方案:
你必须将if-else语句移出最里面的循环:
for(row=0;row<15;row++)
{
for(col=0;col<8;col++)
{
bool foundMatch = false;
for(a=0;!foundMatch && a<sizeof(row_sel)/(sizeof(row_sel[0]));a++)
{
foundMatch = row==row_sel[a] && col==col_sel[a];
}
if(foundMatch)
{
printf("|%d|",matrix[row][col]);
}
else
{
printf(" %d ",matrix[row][col]);
}
}
printf("\n");
}
为什么/如何运作
内部循环将一直运行,直到foundMatch
为真,或a
超出范围。
foundMatch
a
,则{p> row==row_sel[a] && col==col_sel[a]
设置为true。
如果true
为真,则会打印 |%d|
。