C语言中用户定义函数的执行问题

C语言中用户定义函数的执行问题,c,function,C,Function,我一直在开发一个c程序,其中我为不同的目的创建了函数,但很少有函数没有正确执行,也就是说,它们执行了一段时间,也有一段时间没有执行,它只是执行变量初始化的第一行,然后,它直接跳转到返回部分,并给出变量的初始化值,即使给定的条件为真。以下是其中一个函数的代码: int thirdMove() { int r=0; if(sq[5]=='0') { if(sq[1]=='X') { if(sq[2]=='X'

我一直在开发一个c程序,其中我为不同的目的创建了函数,但很少有函数没有正确执行,也就是说,它们执行了一段时间,也有一段时间没有执行,它只是执行变量初始化的第一行,然后,它直接跳转到返回部分,并给出变量的初始化值,即使给定的条件为真。以下是其中一个函数的代码:

int thirdMove()
{
      int r=0;
     if(sq[5]=='0')
     {
        if(sq[1]=='X')
        {
             if(sq[2]=='X' && sq[3]=='0' && sq[7]=='7')
             {
                   r=7;
             }
             else if(sq[2]=='X' && sq[3]=='0' && sq[7]=='X')
             {
                   r=4;
             }
             else if(sq[3]=='X' && sq[2]=='0' && sq[8]=='8')
             {  
                 r=8;
             }
             else if(sq[3]=='X' && sq[2]=='0' && sq[8]=='X')
             {
                    while(1)
                   {
                       r=random();
                       if(r==4 || r==6)
                       {
                          break;
                       }
                       else
                       {
                          continue;
                       }
                    }
             }
             else if(sq[4]=='X' && sq[7]=='0' && sq[3]=='3')
             {
                r=3;
             }
             else if(sq[4]=='X' && sq[7]=='0' && sq[3]=='X')
             {
                r=2;
             }
             else if(sq[6]=='X' && sq[3]=='0' && sq[7]=='7')
             {
                r=7;
             }
             else if(sq[6]=='X' && sq[3]=='0' && sq[7]=='X')
             {
                r=4;
             }
             else if(sq[7]=='X' && sq[3]=='0' && sq[6]=='6')
             {
                r=6;
             }
             else if(sq[7]=='X' && sq[3]=='0' && sq[6]=='X')
             {
                while(1)
                 {
                    r=random();
                    if(r==2 || r==8)
                     {
                         break;
                     }
                    else
                     {
                         continue;
                     }
                 }
             }
             else if(sq[8]=='X' && sq[7]=='0' && sq[3]=='3')
             {
                 r=3;
             }
             else if(sq[8]=='X' && sq[7]=='0' && sq[3]=='X')
             {
                 r=2;
             }
             else if(sq[9]=='X' && sq[2]=='0' && sq[8]=='8')
             {
                 r=8;
             }
             else if(sq[9]=='X' && sq[2]=='0' && sq[8]=='X')
             {
                 r=7;
             }
             else if(sq[9]=='X' && sq[4]=='0' && sq[6]=='6')
             {
                 r=6;
             }
             else if(sq[9]=='X' && sq[4]=='0' && sq[6]=='X')
             {
                 r=3;
             }
             else if(sq[9]=='X' && sq[6]=='0' &&  sq[4]=='4')
             {
                 r=4;
             }
             else if(sq[9]=='X' && sq[6]=='0' &&  sq[4]=='X')
             {
                 r=7;
             }
             else if(sq[9]=='X' && sq[8]=='0' &&  sq[2]=='2')
             {
                  r=2;
             }
             else if(sq[9]=='X' && sq[8]=='0' &&  sq[2]=='X')
             {
                 r=3;
             }
        }   
        else if(sq[2]=='X')
        {
           if(sq[3]=='X' && sq[1]=='0' && sq[9]=='9')
           {
               r=9;
           } 
           else if(sq[3]=='X' && sq[1]=='0' && sq[9]=='X')
           {
               r=6;
           }
           else if(sq[4]=='X' && sq[1]=='0' && sq[9]=='9')
           {
               r=9;
           }
           else if(sq[4]=='X' && sq[1]=='0' && sq[9]=='X')
           {
                 while(1)
                 {
                    r=random();
                    if(r==3 || r==7)
                     {
                         break;
                     }
                    else
                     {
                         continue;
                     }
                 }
           }
           else if(sq[6]=='X' && sq[3]=='0' && sq[7]=='7')
           {
               r=7;
           }
           else if(sq[6]=='X' && sq[3]=='0' && sq[7]=='X')
           {
                 while(1)
                 {
                    r=random();
                    if(r==1 || r==9)
                     {
                         break;
                     }
                    else
                     {
                         continue;
                     }
                 }
           }
           else if(sq[7]=='X' && sq[1]=='0' && sq[9]=='9')
           {
               r=9;
           }
           else if(sq[7]=='X' && sq[1]=='0' && sq[9]=='X')
           {
               r=8;
           }
           else if(sq[8]=='X' && sq[1]=='0' && sq[9]=='9')
           {
               r=9;
           }
           else if(sq[8]=='X' && sq[1]=='0' && sq[9]=='X')
           {
               r=7;
           }
           else if(sq[8]=='X' && sq[3]=='0' && sq[7]=='7')
           {
               r=7;
           }
           else if(sq[8]=='X' && sq[3]=='0' && sq[7]=='X')
           {
                r=9; 
           }
           else if(sq[8]=='X' && sq[7]=='0' && sq[3]=='3')
           {
               r=3;
           }
           else if(sq[8]=='X' && sq[7]=='0' && sq[3]=='X')
           {
               r=1;
           }
           else if(sq[8]=='X' && sq[9]=='0' && sq[1]=='1')
           {
               r=1;
           }
           else if(sq[8]=='X' && sq[9]=='0' && sq[1]=='X')
           {
                r=7; 
           }
           else if(sq[9]=='X' && sq[3]=='0' && sq[7]=='7')
           {
               r=7;
           }
           else if(sq[9]=='X' && sq[3]=='0' && sq[7]=='X')
           {
               r=8;
           }    
        }
        else if(sq[3]=='X')
        {
            if(sq[4]=='X' && sq[1]=='0' && sq[9]=='9')
            {
                r=9;
            }
            else if(sq[4]=='X' && sq[1]=='0' && sq[9]=='X')
            {
                r=6;
            }
            else if(sq[6]=='X' && sq[9]=='0' && sq[1]=='1')
            {
                r=1;
            }
            else if(sq[6]=='X' && sq[9]=='0' && sq[1]=='X')
            {
                r=2;
            }
            else if(sq[7]=='X' && sq[2]=='0' && sq[8]=='8')
            {
                r=8;
            }
            else if(sq[7]=='X' && sq[2]=='0' && sq[8]=='X')
            {
                r=9;
            }
            else if(sq[7]=='X' && sq[4]=='0' && sq[6]=='6')
            {
                r=6;
            }
            else if(sq[7]=='X' && sq[4]=='0' && sq[6]=='X')
            {
                r=9;
            }
            else if(sq[7]=='X' && sq[6]=='0' && sq[4]=='4')
            {
                r=4;
            }
            else if(sq[7]=='X' && sq[6]=='0' && sq[4]=='X')
            {
                r=1;
            }
            else if(sq[7]=='X' && sq[8]=='0' && sq[2]=='2')
            {
                r=2;
            }
            else if(sq[7]=='X' && sq[8]=='0' && sq[2]=='X')
            {
                r=1;
            }
            else if(sq[8]=='X' && sq[9]=='0' && sq[1]=='1')
            {
                r=1;
            }
            else if(sq[8]=='X' && sq[9]=='0' && sq[1]=='X')
            {
                r=2;
            }
            else if(sq[9]=='X' && sq[7]=='0' && sq[4]=='4')
            {
                r=4;
            }
            else if(sq[9]=='X' && sq[7]=='0' && sq[4]=='X')
            {
                 while(1)
                 {
                    r=random();
                    if(r==2 || r==8)
                     {
                         break;
                     }
                    else
                     {
                         continue;
                     }
                 }
            }
        }
        else if(sq[4]=='X')
        {

        }
     }
     else if(sq[5]=='X')
     {

     }
   return r;
}
在这个函数中,它必须执行一些条件,如果它们为真,那么它应该根据条件返回值,但它只返回分配给变量r的0。 调试函数时,它终止于
int r=0
即使条件为真,也返回错误的值。
类似地,我还有两个具有相同操作类型的函数,它们导致了相同的问题。
请帮助我解决这个问题,并请简化您的建议或解决方案,以便更好地理解我,因为我是一个初学者。

感谢您
char*sq=“ooooo”例如,该函数正确地跳转返回。你凭什么认为它不应该?sq的
sq
的内容是什么,它让你期待一种不同的行为。简言之,请做一个简单的解释。看来你丰富的条件都没有受到影响。当您输入此函数或在调试器中检查它们时,您是否尝试过打印所有有问题的值?请尝试在
返回之前插入
否则{/*未满足任何条件*/}
,这也是输出
sq
的好地方。正如M Oehm所建议的,如果你简化它,这个问题对你和其他人来说会更容易解决。你能制作一个仍然有相同问题的较短程序吗?要从两个数字中随机选择一个:
if(random()%2)r=2;否则r=8