| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1010 人关注过本帖, 1 人收藏
标题:求高人帮我看看这个“杀人”程序哪出错了?
只看楼主 加入收藏
platoooo
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-3-27
结帖率:0
收藏(1)
已结贴  问题点数:20 回复次数:13 
求高人帮我看看这个“杀人”程序哪出错了?
有这样一个问题:在罗马人占领桥塔波特侯,39个犹太人与J及他的朋友躲到一个洞中,39个犹太人决定宁愿死也不要被敌人抓到,于是决定了一个自杀方式。41个人排成一个圆圈,由第一个人开始报数 ,每报数到第三人该人就必须自杀,然后再由下一个重新报数,知道所有人都自杀为止。问怎么样安排座位J与他的朋友才能逃一死

我的程序:
#include<stdio.h>
#include<stdlib.h>
void main()
{
  int no[42],i,j,*p,m;
  for(i=1;i<42;i++)
  {
    no[i]=0;
  }
  p=&no[1];
  for(;*p==0;p++)
  {
    if(p>p+42)
    {
      p=no;
    }
    else
    {
      j++;
      if(j==3)
      {
       *p=1;
       j==0;
       m++;
      }
    }
   if(m=39)
   break;
   
}
for(i=1;i<42;i++)
{
  if(no[i]=0)
  printf("%d\n",i);
}
system("pause");
return 0;
}
搜索更多相关主题的帖子: 朋友 怎么样 include 犹太人 
2012-03-27 22:08
a646404908
Rank: 6Rank: 6
等 级:侠之大者
威 望:5
帖 子:189
专家分:492
注 册:2012-2-14
收藏
得分:3 
#include<stdio.h>
#include<stdlib.h>
int main()
{
  int no[42],i,j,*p,m;
  for(i=1;i<42;i++)
  {
    no[i]=0;
  }
  p=&no[1];
  for(;*p==0;p++)
  {
    if(*p>*p+42)
    {
      p=no;
    }
    else
    {
      j++;
      if(j==3)
      {
       *p=1;
       j=0;
       m++;
      }
    }
   if(m==39)
   break;
   
}
for(i=1;i<42;i++)
{
  if(no[i]==0)
  printf("%d\n",i);
}
system("pause");
return 0;
}
2012-03-27 22:19
platoooo
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-3-27
收藏
得分:0 
if(*p>*p+42)
这里是比较值的大小么?
我的意思是这里应该是比指针的大小。
2012-03-27 22:25
a646404908
Rank: 6Rank: 6
等 级:侠之大者
威 望:5
帖 子:189
专家分:492
注 册:2012-2-14
收藏
得分:0 
你的代码可以实现你要的要求吗?
2012-03-27 22:27
Eilliot
Rank: 6Rank: 6
等 级:侠之大者
帖 子:41
专家分:418
注 册:2012-3-26
收藏
得分:3 
这不是约瑟夫环嘛丶这个有个公式   楼主自己百度吧

2012-03-27 22:39
platoooo
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-3-27
收藏
得分:0 
好的,谢谢。
2012-03-27 23:00
天涯海角sxl
Rank: 2
等 级:论坛游民
帖 子:20
专家分:20
注 册:2012-2-20
收藏
得分:3 
#include<stdio.h>
#define M 41
void main()
{
  int sort(int no[M]);
  int no[M],i,j=0,l=M,*p;
  p=no;
  for(i=0;i<M;i++)
  {
      no[i]=i+1;
  }

  while(l>2)
  {
      for(i=0;i<l;i++)
      {
         if((p+1-no)%3==j)
         {
             no[i]=0;
         }
         p++;
      }
      l=M-sort(no);
  }
        for(i=0;i<M;i++)
      {
          if(no[i]!=0)
          printf("%d\n",no[i]);
      }
}

int sort(int a[M])
{
    int *p,*q,m,i;
    p=a;
    q=a;
    while(p-a<M)
    {
        if(*p!=0)
        {
           *q=*p;
           q++;
        }   
        p++;
    }
     m=p-q;
     for(i=1;i<=m;i++)
     {
         *(p-i)=0;
     }
     return m;
}

楼主可个应该可以吧,你试一下
2012-03-28 11:41
C_戴忠意
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:2
帖 子:575
专家分:1349
注 册:2011-10-21
收藏
得分:3 
这不是约瑟夫环嘛丶这个有个公式   楼主自己百度吧

编程之路定要走完……
2012-03-28 11:48
platoooo
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2012-3-27
收藏
得分:0 
回复 7楼 天涯海角sxl
m=p-q;
     for(i=1;i<=m;i++)
     {
         *(p-i)=0;
     }
     return m;
这段有点不能理解,哥们能解释下么
2012-03-29 20:07
迷上编程
Rank: 2
等 级:论坛游民
帖 子:140
专家分:86
注 册:2012-3-11
收藏
得分:3 
这个名字太霸道!!
2012-03-29 21:38
快速回复:求高人帮我看看这个“杀人”程序哪出错了?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015294 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved