掷骰子游戏,下面代码哪里多了?找了好久都没找出来,求大神指点!!!

#include

int sum(int);
int main()
{
int a,b,n,i;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d %d",&a,&b);
int times=1;
int z=1,j=0,point[100];
for(;;)
{
a=a+z-1;b=b+z-1;
int x,y;
x=sum(a)%6+1;
y=sum(b)%6+1;
point[j]=x+y;

      if(times==1&&(point[j]==11||point[j]==7))
      {
          printf("success!\n");
          break;
      }
      if(times==1&&(point[j]==2||point[j]==3||point[j]==12))
      {
          printf("fail!\n");
          break;
      }
      if(times>1&&point[j]==point[0])
      {
          printf("success!\n");
          break;
      }
      if(times>1&&point[j]==7)
      {
         printf("fail!\n");
          break;
      }
      j+=1;
      z=z+1;
      times+=1;

    }
}
return 0;

}

int sum(int k)
{
int i=0,s=0,N;
for(;;)
{
N=k%10;
k=k/10;
s+=N;
if(N==0)break;
i++;
}
return s;
}图片图片

0

1个回答

你的判断出错了。这里

 N=k%10;
k=k/10;
s+=N;
if(N==0)break;
i++;
}

应该改为:

 N=k%10;
k=k/10;
s+=N;
if(k==0)break;
i++;
}

所以你的数中间含有0的部分都错了
下面是改过的运行结果
图片说明

1
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!