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