C 我不明白为什么这个循环会冻结

C 我不明白为什么这个循环会冻结,c,arrays,loops,if-statement,multidimensional-array,C,Arrays,Loops,If Statement,Multidimensional Array,有人能给我解释一下这个代码有什么问题吗??我的董事会不应该有人吗?(我上面有两个函数,一个生成随机数,另一个打印数组) 职能: void map(char a[3][3]){ int row, column; for(row=0;row<3;row++){ for(column=0;column<3;column++){ printf ("%c ", a[row][column]); }

有人能给我解释一下这个代码有什么问题吗??我的董事会不应该有人吗?(我上面有两个函数,一个生成随机数,另一个打印数组)

职能:

void map(char a[3][3]){

    int row, column;

    for(row=0;row<3;row++){

        for(column=0;column<3;column++){

            printf ("%c       ", a[row][column]);

        }
        printf("\n \n \n \n \n");
}
}
float getRand() {

    return ((rand() / (RAND_MAX+1.0))*9)+1;
}
void映射(字符a[3][3]){
int行,列;

对于(row=0;row假设
getRand
返回一个介于0和9之间的数字,循环迭代一次后,
array[g][x]
中有一个
O


在下一次迭代中,
ran
没有改变,因此
g
x
的值与以前相同。现在,
array[g][x]
包含一个
O
,因此执行else语句,并撤消
cntr2++
,该语句将保持值
1
,导致一个无休止的循环。

它做错了什么?它应该做什么而不是做什么?能否为函数map()和getRand()提供代码?立即在^^^^^^上使用调试器是的,但这不只是在查找已存在的值的情况下使用?对解释进行了一些扩展-希望这更有意义?非常感谢您的精彩解释!
srand( time(NULL) );
    int r,c,ui,cntr,cntr2,ran,g,x;
    char kb, aray[3][3]={{'.','.','.'},{'.','.','.'},{'.','.','.'}};
    getRand();
    ran=getRand();

for(cntr2=0;cntr2<5;cntr2++){
                g=ran/3;
                x=ran%3;
                if(aray[g][x]=='.'){
                    aray[g][x]='O';
                    system("cls");
                    map(aray);
                }
                else{
                    cntr2--;
                }

        }