| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 501 人关注过本帖
标题:一道有点难的题,实在是想不出来,请大家来做做!
只看楼主 加入收藏
qqlilichong
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-11-20
收藏
 问题点数:0 回复次数:3 
一道有点难的题,实在是想不出来,请大家来做做!
题目:出圈游戏
一\要求:
请用C编写一个程序,模拟出圈游戏.
游戏规则是:设有N个人围坐一圈并按顺时针方向从1到N编号,从第S个人开始进行1到M的报数,报数到第M的人出圈,剩余的人又形成一个圈,再从他的下一个人重新开始1到M的报数,如此进行下去直到所有的人都出圈为止.
现要求按出圈次序输出这N个人的名字.
程序的功能要求如下:
1) 输入参加游戏的人员姓名清单
2) 输入出圈数字M,输入起始位置S,注意计数和位置都是从1开始的;
3) 按顺序输出依次出圈人的姓名
二\推荐实现步骤:
1编写MAIN函数
1) 定义保存参加游戏人员的姓名的数组,以及标志人员是否已出圈的数组,参考定义:
char players[20][10]; //人员名单
int isOuted[20]; //标志对应位置的人是否已出圈
注:假定游戏人数最多为20个
2) 提示用户"请输入参加出圈游戏人员名单",然后依次输入人员姓名,当姓名的第一个字母是"!"时表示输入结束
3) 提示用户"输入出圈数字M"
4) 提示用户"输入报数的起始位置S"
5) 输出参加游戏的人数,出圈数字,起始位置
6) 初始化标志出圈的数组,设置所有人员未出圈;
7) 模拟游戏,从起始位置S由1开始报数,报到M的人出圈,输出出圈人的姓名,设置已出圈标志,已出圈人数加1.自出圈人的下一个人开始,继续下一轮的游戏,直到N个游戏者全部出圈.
提示:
1) 注意起始位置和报数都是从1开始的,但数据下标是从0开始的.
2) 使用取模运算实现回转,给数组下标变量加1取模(数据大小N的模数),那么当报数到数组末尾后,就可以回到数组开头
3) 数组是同步的,数组元素一一对应,isOuted数组记录players对应位置的人是否已出圈,只有没出圈时报数才递增.
三\程序运行参考界面如下:
请输入参加出圈游戏人员名单
第1位:张三
第2位:李四
第3位:王五
第4位:赵六
第5位:田七
第6位:吴八
第7位:陈九
第8位:孙十
第9位:!
请输入出圈数字:3
请输入起始位置:5
共有8人参加游戏,出圈数字是3,起始位置5(田七)
开始游戏...
陈九出圈!
李四出圈!
田七出圈!
张三出圈!
吴八出圈!
赵六出圈!
孙十出圈!
王五出圈!
2006-12-02 11:37
卧龙孔明
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:59
帖 子:3872
专家分:684
注 册:2006-10-13
收藏
得分:0 
算法核心:一直循环直到圈中没有人,在每次循环中模拟,将出局的人依次输出即可

My Blog: www.aiexp.info
虽然我的路是从这里开始的,但是这里不再是乐土.感谢曾经影响过,引导过,帮助过我的董凯,飞燕,leeco,starwing,Rockcarry,soft_wind等等等等.别了,BCCN.
2006-12-02 19:56
iimiss
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2006-11-28
收藏
得分:0 
论坛有个猴子选大王的问题 和这个差不多 你去看看吧  挺多算法的 指针的我觉得最为简单 楼主可以参考啊
2006-12-02 20:13
hao0716
Rank: 4
等 级:业余侠客
威 望:1
帖 子:353
专家分:222
注 册:2006-4-11
收藏
得分:0 
很简单的题目 感觉用结构来做比较方便

2006-12-04 17:34
快速回复:一道有点难的题,实在是想不出来,请大家来做做!
数据加载中...
 
   



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

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