| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3169 人关注过本帖
标题:学了一年的c,这道题还是不会(sad)
只看楼主 加入收藏
我是一个黑客
Rank: 1
等 级:新手上路
帖 子:69
专家分:2
注 册:2018-6-11
结帖率:81.82%
收藏
已结贴  问题点数:20 回复次数:18 
学了一年的c,这道题还是不会(sad)
有n个学生围城一圈,顺序排号,从第1个学生开始报数(从1到3报数),凡报到3的学生退出圈子,到最后只留下一名学生,问最后留下来的是原来第几号学生?
搜索更多相关主题的帖子: 学生 顺序 报数 退出 
2018-07-31 12:22
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:4 
那你在网上搜索过吗?
https://zhuanlan.
2018-07-31 12:42
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
收藏
得分:10 
#include <stdio.h>
#define n 100
int main()
{  int a[n],i,quit_num,k;
  for(i=0;i<n;i++)/*数组a存放原始编号*/
    a[i]=i+1;
  quit_num=0;/*出圈人数*/
  i=0;
  k=0;
  while(quit_num<n-1)/*直到只剩下1人时*/
    {if(a[i]!=0)k++;
      if(k==3)
        {a[i]=0;
         quit_num++;
         k=0;
       }
      i++;
      if(i==n)i=0;
     }
     for(i=0;i<n;i++)
     if(a[i]!=0)
         printf("%d",a[i]);
}
2018-07-31 13:30
王黄丽
Rank: 1
等 级:新手上路
帖 子:53
专家分:4
注 册:2018-7-27
收藏
得分:4 
回复 楼主 我是一个黑客
我把上边那个大神都改了一下

#include <stdio.h>
 #define n 100
 int main()
 {  int a[n],i,quit_num,k;
   for(i=0;i<n;i++)/*数组a存放原始编号*/
     a[i]=i+1;
   quit_num=0;/*出圈人数*/
   i=0;
   k=0;
   while(quit_num<n-1)/*直到只剩下1人时*/
     {if(a[i]!=0)k++;
       if(k==3)
         {a[i]=0;
          quit_num++;
          k=0;
        }
       i++;
       if(i==n)i=0;
      }
      for(i=0;i<n;i++)
      if(a[i]!=0)
          printf("%d\n",a[i]);
      return 0;
 }
2018-07-31 13:37
流浪猪头
Rank: 2
等 级:论坛游民
帖 子:40
专家分:65
注 册:2018-7-23
收藏
得分:2 
3楼是大佬
2018-07-31 16:58
我是一个黑客
Rank: 1
等 级:新手上路
帖 子:69
专家分:2
注 册:2018-6-11
收藏
得分:0 
回复 楼主 我是一个黑客
没有,这是什么呀
2018-07-31 18:09
我是一个黑客
Rank: 1
等 级:新手上路
帖 子:69
专家分:2
注 册:2018-6-11
收藏
得分:0 
回复 2楼 rjsp
谢谢哦,我发现你好活跃啊,我经常看到你啊
2018-07-31 21:14
我是一个黑客
Rank: 1
等 级:新手上路
帖 子:69
专家分:2
注 册:2018-6-11
收藏
得分:0 
回复 3楼 自学的数学
哈哈,谢谢啦,不过不要return 0也是可以实现的,我也不知道为什么
2018-07-31 21:16
外部三电铃
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:那一年
等 级:贵宾
威 望:57
帖 子:2013
专家分:7306
注 册:2007-12-17
收藏
得分:0 
以下是引用我是一个黑客在2018-7-31 21:14:56的发言:

谢谢哦,我发现你好活跃啊,我经常看到你啊


被版主说几句没什么,都是为了你好

那一年,苍井空还是处女
2018-07-31 21:38
呵无敌
Rank: 1
等 级:新手上路
帖 子:5
专家分:3
注 册:2018-8-2
收藏
得分:0 
这样也可以吧:
程序代码:
#include <stdio.h>
#define n 100

int main()
{
    int array[n] = {};
    int quitNum  = 0;
    int nCount   = 0;

    for(int i = 0; quitNum < n - 1; ++i)
    {
        if(i >= n)
            i = 0;
        if(array[i] == 1)
            continue;
        ++nCount;
        if(nCount == 3)
        {
            array[i] = 1;
            nCount = 0;
            ++quitNum;
        }
    }
    
    for(int i = 0; i < n; ++i)
    {
        if(array[i] == 0)
        {
            printf("最后留下来的是原来第%d号学生", i + 1);
            break;
        }
    }

    return 0;
}
2018-08-02 22:13
快速回复:学了一年的c,这道题还是不会(sad)
数据加载中...
 
   



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

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