gpt4 book ai didi

c - 使用出租车几何的距离 : weird output

转载 作者:太空宇宙 更新时间:2023-11-04 02:08:05 29 4
gpt4 key购买 nike

我正在尝试一种基于指标的算法,称为 taxicab metric .然后我的目标是创建一个简单的例子,你有一个简单的 3x3 矩阵,在第一个位置你有 1。从中你计算其他位置的距离,如下所示:

1 2 3

2 3 4

3 4 5

为此,我创建了以下代码:

#include <stdio.h>
#include <stdlib.h>


int main ()
{
int matrix[3][3]={1,0,0,0,0,0,0,0,0}, i, j;
for ( i=0; i<3; i++)
{
for( j=0; j<3; j++)
matrix[i][j]= abs(i-1)+ abs (j-1)+1;//taxicab algorithm
printf("%d ",matrix[i][j]);//prints the matrix
printf("\n");

}
return 0;
}

然而,输出是

0

0

3

我不知道为什么会这样。为什么它只打印第一列???为什么1变成了0?

最佳答案

语法错误,第二个 for 循环没有括号。这对于单行语句是可以的,但是没有括号,if, for, while, etc,只适用于它之后的第一行(直到分号)。为多行 for 循环添加方括号:

for (i=0; i<3; i++)
{
for(j=0; j<3; j++)
{
matrix[i][j] = abs(i-1) + abs(j-1) + 1; //taxicab algorithm
printf("%d ",matrix[i][j]); //prints the matrix
}
printf("\n");
}

在您的代码中,这导致 print 语句没有像您想象的那样经常被调用。

(出于这个原因,我实际上建议始终在所有 for 循环和大多数 if 语句中使用方括号)

关于c - 使用出租车几何的距离 : weird output,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18518338/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com