demo2_简单的报数游戏
来源:互联网 发布:linux ftp命令用法 编辑:程序博客网 时间:2024/06/06 04:54
题目:有n个人围成一圈,顺序排号,从第一个开始报数(从1到num报数),凡报到num的人退出圈子,问最后最后留下的是原来第几号的那位.
/*
*Filename: count_num_game.h
*Author :
*Description:
*/
#ifndef COUNT_THREE_H
#define COUNT_THREE_H
#define MAXSIZE 512 //定义最大参与人数
/*
*Name: Sequence()
*Function: 实现将所有参与者进行编号
*Arguements: 第一个参数是由所有参与者编号后所组成的数组,
第二个参数是参与的总人数
*/
void Sequence(int *person,int person_num);
/*
*Name: Locate()
*Function: 将最终剩下的人员定位到是原来的第几个
*Arguements: 第一个参数是由所有参与者编号后所组成的数组,
第二个参数是参与的总人数
第三个参数是需要报的数,比如报3出局
*Returnvalue: 成功返回表示位置
*/
int Locate(int *person,int person_num,int out_num);
#endif
/*
*Filename: count_num_game.c
*Author :
*Description:
*/
#include "count_num_game.h"
#include <stdio.h>
/*
*Name: Sequence()
*Function: 实现将所有参与者进行编号
*Arguements: 第一个参数是由所有参与者编号后所组成的数组,
第二个参数是参与的总人数
*/
void Sequence(int *person,int person_num)
{
int i;
for(i = 0;i < person_num;i ++)
{
//对参与者进行编号
*(person + i) = i + 1;
}
}
/*
*Name: Locate()
*Function: 将最终剩下的人员定位到是原来的第几个
*Arguements: 第一个参数是由所有参与者编号后所组成的数组,
第二个参数是参与的总人数
第三个参数是需要报的数,比如报3出局
*Returnvalue: 成功返回位置
*/
int Locate(int *person,int person_num,int out_num)
{
//记录出局的总人数
int total_out = 0;
//计数变量
int count = 0;
int i = 0;
while(total_out < person_num - 1)
{
if(*(person + i)!= 0) //i从0开始,若该位置成员已经被置0,表明离开,不参见计数,跳过此步
{
count ++; //k开始计数
}
//当正好计数到需要出局的数时
if(count == out_num)
{
//对该位置0,且把计数变量置0,出局总人数自增
person[i] = 0;
count = 0;
total_out ++;
}
i ++;
//到结尾处,调至开始处
if(i == person_num )
{
i = 0;
}
}
return 0;
}
*Filename: main.c
*Author :
*Description:
*/
#include <stdio.h>
#include <stdlib.h>
#include "count_num_game.h"
int main(int argc,char *argv[])
{
int i = 0;
int out_num; //需要报的号码
int person_num =0;
int person[MAXSIZE];//定义最大容量为MAXSIZE的数组
if(3 != argc)
{
printf("Warning:./test <person's num> <need out num>\n");
return -1;
}
person_num = atoi(argv[1]);//从命令行接收总人数
out_num = atoi(argv[2]);//从命令行接收需要报的数
printf("The total person's num is %d\n",person_num);
printf("The count number is %d\n",out_num);//输出提示信息
Sequence(person,person_num);//进行编号
Locate(person,person_num,out_num);//进行定位
#if 0
while(*(person + i) == 0)
{
i ++;
}
#endif
while(person[i] == 0)
{
//printf("%d\n",person[i]);
i ++;
}
printf("The last person is Num: %d\n",*(person + i));
return 0;
}
- demo2_简单的报数游戏
- 报数游戏
- 报数游戏
- 报数游戏
- 报数游戏
- 报数游戏
- 报数游戏
- 报数游戏
- 报数游戏
- 报数游戏
- 报数游戏
- 报数游戏
- 报数游戏
- 报数游戏
- 约瑟夫环的实现《报数游戏》
- 报数游戏(约瑟夫环)
- 项目名称: 报数游戏
- B - 报数游戏
- nodejs--express开发博客系统(三)
- HEVC中的码率控制(RC)
- ExtJs4 MVC 提高加载速度 动态加载Controller
- 常用的排序算法的时间复杂度和空间复杂度
- 2013 ACM/ICPC Asia Regional Hangzhou Online 个人总结
- demo2_简单的报数游戏
- Sample Adaptive Offset 1 (SAO 样例自适应补偿)
- apk漏洞记录1:伪加密+设备管理器不可删+webview漏洞
- Linux下Oracle下监听服务动不动停止Listener.ora :WARNING: Subscription for node down event still pending
- iOS AppDelegate协议方法
- oracle 新功能model子句的简单使用
- Virtualbox报错------> VirtualBox虚拟机下鼠标不正常的解决方法
- 事件处理
- 黑马程序员——java第十八、十九天:IO流(一)