问道怎么隐藏别的玩家:用C语言编写意义的程序(只能用函数和指针编写)

来源:百度文库 编辑:高校问答 时间:2024/04/28 07:10:09
有20个人围成一圈,顺序排号.从第一个开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位.

#include "stdio.h"

void main()

{

int i = 0; //循环变量

int k = 0; //报数的计数器

int quit_num = 0; //退出的人数

int n; //总人数

int m; //报数的最大数

int num[100]; //保存所有人的编号

int *p = num; //初始化指针,使其指向num数组

printf("Please input number of person: n = ");

scanf("%d", &n);

printf("Please input the number m = ");

scanf("%d", &m);

/*给所有的人编号为1到n */

for (i = 0 ; i < n ; i ++ )

{

*(p + i) = i + 1;

}

i = 0;

/*当未退出人数大于1时 执行循环*/

while(quit_num < n - 1)

{

if(*(p+i) != 0) k++; //已经出圈的人不参与报数

//报数为m时

if( k == m )

{

*(p + i) = 0; //退出圈子时将此人的编号置为0

quit_num ++;

k = 0; //重新报数

}

i ++;

if (i == n) i = 0; //一圈报完后,再从头循环

}

while (*p == 0) p ++; //查找留在圈中的人

printf("The last one’s number is : %d\n" , *p);

}

好像前几天有人问过同样的问题。