//这是一个象棋审局函数的一部分,C1是红方左侧的车,它右边只有一个能攻击到的点,也就是M1所处的位置,所以理论上讲SC1的返回值应该是1,但实际返回的是80!不知道是怎么一回事!
//调试时,按道理Cright处满足了if语句的条件后,就会执行break,也就是跳出循环,但实际上在此循环了很多次,大家救我!
#include<stdio.h>
char C1,C2,M1,M2,P1,P2,X1,X2,S1,S2,J,B1,B2,B3,B4,B5;
char c1,c2,m1,m2,p1,p2,x1,x2,s1,s2,j,b1,b2,b3,b4,b5;
float SC1;
char SBoard[9][10] =
{
C1, 0, 0, B1, 0, 0, b1, 0, 0, c1,
M1, 0, P1, 0, 0, 0, 0, p1, 0, m1,
X1, 0, 0, B2, 0, 0, b2, 0, 0, x1,
S1, 0, 0, 0, 0, 0, 0, 0, 0, s1,
J, 0, 0, B3, 0, 0, b3, 0, 0, j,
S2, 0, 0, 0, 0, 0, 0, 0, 0, s2,
X2, 0, 0, B4, 0, 0, b4, 0, 0, x2,
M2, 0, P1, 0, 0, 0, 0, p1, 0, m2,
C2, 0, 0, B5, 0, 0, b5, 0, 0, c2
} ;
int Jud(int x,int y,int k)
{
int style;
if(SBoard[x][y]==C1||SBoard[x][y]==M1||SBoard[x][y]==P1||SBoard[x][y]==X1||SBoard[x][y]==S1||SBoard[x][y]==J||SBoard[x][y]==C2||SBoard[x][y]==M2||SBoard[x][y]==P2||SBoard[x][y]==X2||SBoard[x][y]==S2||SBoard[x][y]==B1||SBoard[x][y]==B2||SBoard[x][y]==B3||SBoard[x][y]==B4||SBoard[x][y]==B5)
{
style=1;
}
else
{
if(SBoard[x][y]==0)
{
style=0;
}
else
{
style=-1;
}
}
if(k==0)
{
return style;
}
if(k==1)
{
return -style;
}
if(k==2)
{
if(style>0)
{
return style;
}
else
{
return -style;
}
}
}
float evaluate(int Jud1)
{
//0,1
//红,黑
int i,a,flag,flag3,temp1,temp2;
float SC1=0;
;
//统计实点和机动点
for (i=1;i<=9;i++)
{
for (a=1;a<=10;a++)
{
if (SBoard[i][a]==C1)
{
//Cright
for (temp1=i+1;temp1<=9;temp1++)
{
flag3=Jud(temp1,a,2);
if (flag3==1)
{
SC1++;
break;
}
else
{
SC1++;
}
}
}
}
}
if(Jud1==0)
{
return SC1;
}
}
int main()
{
float t;
t=evaluate(0);
printf("%f\n",t);
return 0;
}
C++ 求助!为什么返回值是80?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 日不落的希望 2020-07-11 11:53关注
if (flag3==1)
{
SC1++;
break;
}
else
{
SC1++;
}//检查一下这里,条件对不对SC1都自增了解决 无用评论 打赏 举报
悬赏问题
- ¥100 c语言,请帮蒟蒻看一个题
- ¥15 名为“Product”的列已属于此 DataTable
- ¥15 安卓adb backup备份应用数据失败
- ¥15 eclipse运行项目时遇到的问题
- ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
- ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
- ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
- ¥50 成都蓉城足球俱乐部小程序抢票
- ¥15 yolov7训练自己的数据集
- ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)