| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 477 人关注过本帖
标题:请兄弟姐妹们帮一把!
只看楼主 加入收藏
遮天云
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:农村一小伙
等 级:贵宾
威 望:12
帖 子:1132
专家分:2671
注 册:2010-6-1
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
请兄弟姐妹们帮一把!
#include<stdio.h>
#define M 10
#define N 3
void main(void)
{
int a[M], b[M];      
int i, j, k=0;
   for(i = 0; i < M; i++)              
      a[i] = i + 1;
   for(i=0, j = 0; k<=M-1; i++)
   {
       if (a[i]==0)
       {
       if (i==M-1)
           i=-1;
       continue;
       }
     
       if (++j==N)
       {
       b[k++] = a[i];
       j=0;
       a[i]=0;
       }
       if (i==M-1)
       i=-1;
   }
   printf("按次序输出出圈人的编号为\n");
   for(i = 0;i < M - 1; i++)         
       printf("%6d", b[i]);
   printf("\n最后一人编号为%6d\n", b[M-1]);              
}
这个是论坛里那个轮流报数的题目!!这是论坛好友发的帖子,不过我还有一点不明白的就是那个i=-1咋解释啊,就是这题
n个人围成一个圈,每个人对应一个编号,比如说,10个人,编号就是1——10。现在从第一个开始报数1,2,3这三个数。报到三的人就退出圈子,这样报到最后留下来的那个是员阿里编号为几的?(比如4个人,第一轮下来1——4报的数分别是1,2,3,1.报数为3的退出。此时,编号为1的要接上轮的编号为4的继续报数,应报数2.)

搜索更多相关主题的帖子: 兄弟 姐妹 
2010-06-12 17:44
kingmacrobo
Rank: 2
来 自:HUST
等 级:论坛游民
帖 子:39
专家分:49
注 册:2010-6-1
收藏
得分:20 
这不是我写的吗。。。
这里的      
if (i==M-1)
i=-1;
意思是:
当循环走到编号为M这个人(即一圈的最后一个人)时,在i=-1和for(i=0, j = 0; k<=M-1; i++)中i++的作用下,
使i=0,即从第一个人开始继续循环。、
明白了吧。。。
2010-06-13 12:16
遮天云
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:农村一小伙
等 级:贵宾
威 望:12
帖 子:1132
专家分:2671
注 册:2010-6-1
收藏
得分:0 
嘿嘿!就是您写的啊!谢谢您的讲解哈
2010-06-13 17:41
快速回复:请兄弟姐妹们帮一把!
数据加载中...
 
   



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

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