黑马程序员技术交流社区

标题: 关于耶稣被当问题 [打印本页]

作者: 葛先生    时间: 2015-4-13 23:14
标题: 关于耶稣被当问题
题目:耶稣有15个门徒,其中有一个就是出卖耶稣的叛徒,请用排除法找出这位叛徒:15人围坐一圈,从第一个开始报号:1,2,3,1,2,3……,凡是报到“3”就退出圈子,最后留在圈内的人就是出卖耶稣的叛徒,请找出它原来的序号。(C语言)
代码:
#include <stdio.h>

int main()
{
  int a[15];  //定义数组
  for(int i=0;i<15;i++)  //给数组成员编号复值;
  {
    a[i]=i+1;
  }
  
prinf("出卖耶稣的是%d\n",test(sizeof(a)));
return 0;
}
int test(int a)  //利用递归。
{
int sum=15; //剩余人数。
int num=a;   //需要报数的人数。
int t=1;   //第一个人报的数


  for(int i=t;i<num+1;i++) //int i=t主要是后面如果最后一个人报数不是3时,第一个人接着报数的号数为t。
  {3
   {
     
    return a[i];  
   }      
   
   if(a[i]==num) //遍历到最后一个人,
   {
    if(i!=3)  //圆圈循环报数,使下次循环第一个人报数接着前面一个人的数报。
    {
      t==i+1;
    }
    int test(num=count);

   
   }
}

里面肯能有很多问题,我这没xcode手敲的。哪位神帮忙看下对不。心里有点顾忌啊,这题一时没想通,想了老长时间才凑合做出来。给些指导吧
作者: 葛先生    时间: 2015-4-13 23:18
标题: RE: 关于耶稣被当问题
#include <stdio.h>

int main()
{
  int a[15];  //定义数组
  for(int i=0;i<15;i++)  //给数组成员编号复值;
  {
    a[i]=i+1;
  }
  
prinf("出卖耶稣的是%d\n",test(sizeof(a)));
return 0;
}
int test(int a)  //利用递归。
{
int sum=15; //剩余人数。
int num=a;   //需要报数的人数。
int t=1;   //第一个人报的数


  for(int i=t;i<num+1;i++) //int i=t主要是后面如果最后一个人报数不是3时,第一个人接着报数的号数为t。
   {
   if(num==1);//只剩下一个人时,结果出来了。
   {  
    return a[i];  
   }      
   
   if(a[i]==num) //遍历到最后一个人,
   {
    if(i!=3)  //圆圈循环报数,使下次循环第一个人报数接着前面一个人的数报。
    {
      t==i+1;
    }
    int test(num=count);

   
   }
}


不小心上面那个删了点东西,这个补上了
作者: 葛先生    时间: 2015-4-14 00:09
葛先生 发表于 2015-4-13 23:18
#include

int main()

#include <stdio.h>

int main()
{
  int a[15];  //定义数组
  for(int i=0;i<15;i++)  //给数组成员编号复值;
  {
    a=i+1;
  }
  
prinf("出卖耶稣的是%d\n",test(sizeof(a)));
return 0;
}
int test(int a)  //利用递归。
{
int sum=15; //剩余人数。
int num=a;   //需要报数的人数。
int t=1;   //第一个人报的数


  for(int i=t;i<num+1;i++) //int i=t主要是后面如果最后一个人报数不是3时,第一个人接着报数的号数为t。

   if(i==3)//报到3就移除,报数人数-1。
   {
    a==a[i+1]
    num--;
   }
   {
   if(num==1);//只剩下一个人时,结果出来了。
   {  
    return a;  
   }      
   
   if(a==num) //遍历到最后一个人,
   {
    if(i!=3)  //圆圈循环报数,使下次循环第一个人报数接着前面一个人的数报。
    {
      num--;
      t==i+1;
    }
    int test(num=count);   
    }
   }
   
}
作者: 葛先生    时间: 2015-4-14 00:19
#include <stdio.h>
int test(int a)

int main()
{
  int a[15];  //定义数组
  for(int i=0;i<15;i++)  //给数组成员编号复值;
  {
    a[i]=i+1;
  }
  
prinf("出卖耶稣的是%d\n",test(sizeof(a)));
return 0;
}
int test(int a)  //利用递归。
{
int sum=15; //剩余人数。
int num=a;   //需要报数的人数。
int t=1;   //第一个人报的数


  for(int i=t;i<num+1;i++) //int i=t主要是后面如果最后一个人报数不是3时,第一个人接着报数的号数为t。
   {
   if(num==1);//只剩下一个人时,结果出来了。
   {  
    return a[i];  
   }      
   
   if(a[i]==num) //遍历到最后一个人,
   {
    if(i!=3)  //圆圈循环报数,使下次循环第一个人报数接着前面一个人的数报。
    {
      t==i+1;
    }
    int test(num=count);   
   }
}
作者: tyisbest    时间: 2015-4-14 00:35
这题目好久前就见到了,还真没想过
作者: 糊涂娃    时间: 2015-4-14 00:39
看起来挺好的..
作者: 葛先生    时间: 2015-4-14 00:57
tyisbest 发表于 2015-4-14 00:35
这题目好久前就见到了,还真没想过

还是多想想好啊,个人意见,但请往心里去
作者: 葛先生    时间: 2015-4-14 00:58

可能还有问题呢,只是我琢磨的真要晕了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2