鬼畜材料练习生 2020-07-10 21:08 采纳率: 66.7%
浏览 110

C++ 求助!为什么返回值是80?


//这是一个象棋审局函数的一部分,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;
 }
  • 写回答

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单片机|单片机|测试代码)