| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 453 人关注过本帖
标题:[求助]有个程序不太明白,大家给看看
只看楼主 加入收藏
dreamcast103
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-2-1
收藏
 问题点数:0 回复次数:2 
[求助]有个程序不太明白,大家给看看
设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第个m人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所有的人都出圈为止。现要求按出圈次序,每10人一组,给出这n个人的顺序表。请考生编制函数Josegh()实现此功能并调用函数WriteDat()把结果p输出到文件OUT.DAT中。
设n=100,c=1,m=10.
(1)将1到n个人的序号存入一维数组p中;
(2)若第i个人报数后出圈,则将p[i]置于数组的倒数第i个位置上,而原来第i+1个至倒数第i个元素依次向前移动一个位置;
(3)重复第(2)步直至圈中只剩下p[1]为止。



void Josegh(void)
{
int i,j,s1,w;
s1=s;
for(i=1;i<=n;i++)
p[i-1]=i;
for(i=n;i>=2;i--)
{s1=(s1+m-1)%i;
if(s1==0)
s1=i;
w=p[s1-1];
for(j=s1;j<i;j++)
p[j-1]=p[j];
p[i-1]=w;
}
}
大家给看看这个子程序中的 为什么s1=(s1+m-1)%i
中的s1+m还要减去一,百思不得其解.
搜索更多相关主题的帖子: 顺时针 倒数 元素 
2006-02-06 19:12
dreamcast103
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-2-1
收藏
得分:0 

呵呵~~知道为啥啦...

2006-02-06 19:24
koby_cz
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2006-2-4
收藏
得分:0 
还有有点不懂哦  嘿嘿  看不懂为什么啊  可否解释下~~~~
2006-02-06 21:01
快速回复:[求助]有个程序不太明白,大家给看看
数据加载中...
 
   



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

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