| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
共有 5326 人关注过本帖
标题:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的 ...
取消只看楼主 加入收藏
kiss_白水
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2008-10-6
收藏
 问题点数:0 回复次数:4 
有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位
我自己写的程序如下,编译没问题,但得不到正确答案,希望帮忙纠错

#include<stdio.h>
#define N 20
int main()
{
    int i,s,a[N+1];
    a[0]=0;
    for(i=1;i<=N;i++)
    a[i]=i;
    s=0;
    for(i=1;i<=N;i++) {
    if(a[i]!=0)
      { s++;
        if(s%3==0) a[i]=0; }
    if(i==N&&s==1) break;
    if(i==N) {i=0;s=s%3;}
    }
    for(i=1;i<=N;i++)
    if(a[i]!=0)
    printf("%d\n",i);
    scanf(" ");
    return 0;
}
2008-10-20 20:02
kiss_白水
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2008-10-6
收藏
得分:0 
运行之后什么都没有,只是光标在那闪
2008-10-20 20:18
kiss_白水
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2008-10-6
收藏
得分:0 
谢谢了
但我想问我的算法错在哪里
2008-10-20 21:13
kiss_白水
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2008-10-6
收藏
得分:0 
谢了
格式我会注意的

重点是我想知道错在哪,该怎么改
2008-10-20 21:52
kiss_白水
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2008-10-6
收藏
得分:0 
谢谢各位了,的确是跳出的条件有问题,我增加了一个计数器,计数0的个数,当计数器等于N-1是跳出,这样就行了
经测试成功
代码如下:
#include<stdio.h>
#define N 9
int main()
{
    int i,s,a[N+1],flag;
    a[0]=0;
    flag=0;
    for(i=1;i<=N;i++)
    a[i]=i;
    s=0;
    for(i=1;i<=N;i++)
    {
        if(a[i]!=0)
        {
            s++;
            if(s%3==0)
            {
                a[i]=0; flag++;
            }
        }
        if(flag==N-1) break;
        if(i==N)
        {
            i=0;s=s%3;
        }
    }
    for(i=1;i<=N;i++)
    if(a[i]!=0)
    printf("%d\n",i);
    scanf(" ");
    return 0;
}
2008-10-21 15:07
快速回复:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报 ...
数据加载中...
 
   



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

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017946 second(s), 10 queries.
Copyright©2004-2025, BC-CN.NET, All Rights Reserved