标题:新手求教:猴子选大王问题。。错在哪了?
只看楼主
love31座森林
Rank: 1
等 级:新手上路
帖 子:3
专家分:5
注 册:2014-5-6
结帖率:100%
已结贴  问题点数:20 回复次数:6 
新手求教:猴子选大王问题。。错在哪了?
#include<iostream>
using namespace std;
void main()
{   int n,i,k,a[100],m,j=0;
    cout<<"请输入猴子数为:";
    cin>>n;
    cout<<"请输入报数;";
    cin>>m;
    for(i=0;i<n;i++)
        a[i]=1;
    i=0;
    while(j<n)
    {k=1;
        while(k<m)
        {   if(a[i]!=0){k++; i=(i+1)%n;}
        else i=(i+1)%n;}
            if(a[i]==0)j--;
                 else  a[i]=0;
                        
    j++;}
    for(i=0;i<n;i++)
    {if(a[i]!=0)cout<<i+1<<endl;}
}
搜索更多相关主题的帖子: 大王 
2014-05-18 17:13
funyh250
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:26
帖 子:290
专家分:1573
注 册:2013-12-25
得分:5 
一句句读下去你就知道错哪了

刚开始学多看书多琢磨
实在琢磨不透上机敲敲

学习是大事   吃喝拉撒睡是小事   其他的那都不是事
2014-05-18 17:31
love31座森林
Rank: 1
等 级:新手上路
帖 子:3
专家分:5
注 册:2014-5-6
得分:0 
回复 2 楼 funyh250
关键是运行不对,,,但不知道错哪了。。。。。。
2014-05-18 17:55
yxq211046
Rank: 2
等 级:论坛游民
帖 子:22
专家分:36
注 册:2014-4-17
得分:5 
while (k<m)
{
 if (a[i] != 0){ k++; i = (i + 1) % n; }
 else i = (i + 1) % n;
}
好像第二次的时候会出现死循环
第一次完后,a[1]=0,
第二次就不会执行if (a[i] != 0){ k++; i = (i + 1) % n; },k=1永远小于m,然后一直执行else i = (i + 1) % n;
2014-05-19 09:50
jjfai
Rank: 2
等 级:论坛游民
帖 子:10
专家分:13
注 册:2013-3-21
得分:5 
while(j<n)
    {k=1;
        while(k<m)
         {   if(a[i]!=0){k++; i=(i+1)%n;}
        else i=(i+1)%n;}
            if(a[i]==0)j--;
                 else  a[i]=0;
                        
                 j++;}
这个循环有问题,注意看j值的变化!!!!!!
2014-05-19 10:36
jjfai
Rank: 2
等 级:论坛游民
帖 子:10
专家分:13
注 册:2013-3-21
得分:0 
#include<iostream>       //猴子选大王
using namespace std;
void main()
{   int n,i,k,a[100],m,j=0;   
    cout<<"请输入猴子数为:";
    cin>>n;
    cout<<"请输入报数;";
    cin>>m;
    for(i=0;i<n;i++)
        a[i]=1;
    i=0;
    while(j<n)
    {
        k=0;
        while(k<m)
         {   if(a[i]!=0)
            {
            k++; i=(i+1)%(n+1);
             }
             else
            i=(i+1)%(n+1);
         }
            if(a[i-1]==0)
                j--;
            else  
                a[i-1]=0;
                j++;
    }
    for(i=0;i<n;i++)
    {
        if(a[i]!=0)
        cout<<i+1<<endl;
    }
}
2014-05-19 11:32
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
得分:5 
有点看不明白是按什么规则来选。把各个变量所指意义的注释贴出来大家研究啊。
2014-05-20 22:35



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-431735-1-1.html




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

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