计算二维网格 C 中的字符数
Count number of char in a 2D grid C
我正在尝试使用 2 个 for
循环计算二维网格中有多少个字符。代码如下所示:
int number_of_boxes( int player, int height, int width, char**gameBoard ){
int boxCount, i , a;
for(i=0; i < (height*2) + 1 ; i++){
for ( a = 0 ; a < (width * 2) + 1 ; a++){
if(gameBoard[i][a] == (char)(player + 64)) boxCount++;
}
}
return boxCount;
}
player
变量是每个玩家的索引,但在网格中它们显示 ASCII 字符。
1 = A,2 = B 等等,方法是将 64 添加到索引并将其视为 char
。 if
状态旨在检查数组数组中的每个字符的 ASCII 字符,如果找到一个实例则将其添加到计数器中。
出于某种原因,此函数中的 if
语句传递了太多次,当唯一可能的最大值为 [=18 时,函数返回 122
或 120
=].我的 if
说法错了吗?
你还没有初始化boxCount。
int boxCount, i , a;
因此 boxCount 当前存储了一些垃圾值。我认为这就是为什么您假设 if 语句运行许多 times.Try 初始化 boxCount.
int boxCount=0, i , a;
您错过了 boxCount
的初始化:
替换
int boxCount, i , a;
和
int boxCount=0, i , a;
因为递增未初始化的值是未定义。
我正在尝试使用 2 个 for
循环计算二维网格中有多少个字符。代码如下所示:
int number_of_boxes( int player, int height, int width, char**gameBoard ){
int boxCount, i , a;
for(i=0; i < (height*2) + 1 ; i++){
for ( a = 0 ; a < (width * 2) + 1 ; a++){
if(gameBoard[i][a] == (char)(player + 64)) boxCount++;
}
}
return boxCount;
}
player
变量是每个玩家的索引,但在网格中它们显示 ASCII 字符。
1 = A,2 = B 等等,方法是将 64 添加到索引并将其视为 char
。 if
状态旨在检查数组数组中的每个字符的 ASCII 字符,如果找到一个实例则将其添加到计数器中。
出于某种原因,此函数中的 if
语句传递了太多次,当唯一可能的最大值为 [=18 时,函数返回 122
或 120
=].我的 if
说法错了吗?
你还没有初始化boxCount。
int boxCount, i , a;
因此 boxCount 当前存储了一些垃圾值。我认为这就是为什么您假设 if 语句运行许多 times.Try 初始化 boxCount.
int boxCount=0, i , a;
您错过了 boxCount
的初始化:
替换
int boxCount, i , a;
和
int boxCount=0, i , a;
因为递增未初始化的值是未定义。