qq_38340356 2017-04-15 15:44 采纳率: 100%
浏览 1055
已采纳

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

#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;
}图片图片

  • 写回答

1条回答 默认 最新

  • coolsunxu 2017-04-16 04:23
    关注

    你的判断出错了。这里

     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的部分都错了
    下面是改过的运行结果
    图片说明

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?
  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发