| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1353 人关注过本帖
标题:用数组写的约瑟夫问题, 运行错误
只看楼主 加入收藏
寻梦飞翔
Rank: 1
等 级:新手上路
帖 子:76
专家分:9
注 册:2010-3-15
结帖率:94.12%
收藏
已结贴  问题点数:20 回复次数:15 
用数组写的约瑟夫问题, 运行错误
请高手指点一下错误:
#define N 100
main()
{int i,k,m,num[N],n;
scanf("%d",&n);
if(n>N) return 0;
  for(i=0;i<n;i++)
    num[i]=i+1;
  k=0;
  m=0;
  i=0;
     while(m<n-1)
      {if(num[i]!=0)
        k++;
       if(k==3)
        { num[i]==0;
           k=0;
           m++;}
          i=(i+1)%n;
      }
  i=0;
while(num[i]==0)
i++;
printf("\n%d",i);
}
搜索更多相关主题的帖子: 运行 约瑟夫 
2010-03-21 16:32
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:5 
   while(m<n-1)
      {if(num[i]!=0)
        k++;
       if(k==3)
        { num[i]==0;
           k=0;
           m++;}
          i=(i+1)%n;
      }
  i=0;
while(num[i]==0)
i++;

printf("\n%d",i);
}
if(n>N) return 0;
2010-03-21 16:42
寻梦飞翔
Rank: 1
等 级:新手上路
帖 子:76
专家分:9
注 册:2010-3-15
收藏
得分:0 
恕小弟愚钝,还是不太明白?请问怎样解决呢?
2010-03-21 16:52
白色轨迹
Rank: 2
等 级:论坛游民
帖 子:19
专家分:42
注 册:2010-3-20
收藏
得分:0 
好像没有函数头。#include "stdio.h"

我刚才添加上去就可以运行了。
2010-03-21 16:55
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:5 
#define N 100
main()
{int i,k,m,num[N],n;
scanf("%d",&n);//         首先赋值n
if(n>N) return 0;
  for(i=0;i<n;i++)
    num[i]=i+1;         //然后num数组的值为1-n的数字
  k=0;
  m=0;
  i=0;
     while(m<n-1)
      {if(num[i]!=0)
        k++;
       if(k==3)
        { num[i]==0;//num你这个语句想表达什么意思
           k=0;
           m++;}
          i=(i+1)%n;
      }
  i=0;//重新给i赋值0
while(num[i]==0)//数组num不可能等于0 因为其为1-n的数字
i++;
printf("\n%d",i);//最后i的值输出为0
}
2010-03-21 17:10
寻梦飞翔
Rank: 1
等 级:新手上路
帖 子:76
专家分:9
注 册:2010-3-15
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册
加了啊,结果好像还是不对。
2010-03-21 17:14
寻梦飞翔
Rank: 1
等 级:新手上路
帖 子:76
专家分:9
注 册:2010-3-15
收藏
得分:0 
for 5楼



#define N 100
main()
{int i,k,m,num[N],n;
scanf("%d",&n);
if(n>N) return 0;
  for(i=0;i<n;i++)
    num[i]=i+1;
  k=0;
  m=0;
  i=0;
     while(m<n-1)
      {if(num[i]!=0)
        k++;
       if(k==3)
        { num[i]==0;//让数到3的人出去
           k=0;
           m++;}
          i=(i+1)%n;
      }//数数结束
  i=0;
while(num[i]==0)//所有出去的值都为0
i++;
printf("\n%d",i);
}
2010-03-21 17:20
寻梦飞翔
Rank: 1
等 级:新手上路
帖 子:76
专家分:9
注 册:2010-3-15
收藏
得分:0 
5楼有什么好的方法?
2010-03-21 17:21
寻梦飞翔
Rank: 1
等 级:新手上路
帖 子:76
专家分:9
注 册:2010-3-15
收藏
得分:0 
哪位高手能帮忙解决一下……
2010-03-22 16:53
小J
Rank: 8Rank: 8
等 级:等待验证会员
威 望:1
帖 子:282
专家分:704
注 册:2009-6-18
收藏
得分:5 
#include"stdio.h"
main()
{
int i,j,k,sum=0;
for(i=2;i<j;i++)//j是总数
{
sum=(sum+k)%i//k是退出的编号
}
printf("%d",sum+1);
}
2010-03-22 21:41
快速回复:用数组写的约瑟夫问题, 运行错误
数据加载中...
 
   



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

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