有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出(pascal

来源:百度知道 编辑:UC知道 时间:2024/05/18 01:44:10
有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出
圈子,问最后留下的是原来第几号的那位

题目:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

  1. 程序分析:
  2.程序源代码:
  #define nmax 50
  main()
  {
  int i,k,m,n,num[nmax],*p;
  printf("please input the total of numbers:");
  scanf("%d",&n);
  p=num;
  for(i=0;i<n;i++)
  *(p+i)=i+1;
  i=0;
  k=0;
  m=0;
  while(m<n-1)
  {
  if(*(p+i)!=0) k++;
  if(k==3)
  { *(p+i)=0;
  k=0;
  m++;
  }
  i++;
  if(i==n) i=0;
  }
  while(*p==0) p++;
  printf("%d is left\n",*p);
  }

  你看懂了吗?看懂就送分吧
  如果看不懂你就是瞎问

  再送点详解给你

  #include <stdio.h>

  #define N 50 // 排队人数(可任意更改)
  #define CAL 3 //凡报3的人出列(可任意更改)

  //下面是排队编号函数:从h 开始的n个人依次编号1到n
  void stdline(int *h,int n)
  {
  int i;
  for(i=1;i<n+1;i++) *(h+i-1)=i;
  }

  /*下面函数表示从指针h处开始的人数为boy个人

有n个人围成一圈,顺序排号。 2:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子, n个人围成一圈,从第m个人开始顺序报号,凡报到p的人退出圈子,输出依次退出圈子的人来的序号 有 N 个人围成一圈参加游戏,游戏的规则是: N个人围成一圈,甲乙之间巧有R个人的概率是多少,只考虑甲到乙顺时钟方向. n个人围成一圈和排成一列的排列方法分别怎么计算? 20. n个人围成一圈,1,2,3循环报数,报到3的人退出 设有n个人坐一圈并按顺时针方向从1到n编号, 13个人围成一圈,从第一个人开始顺序报号1、2、3。凡报到3者退出圈子。找出最后留在圈子的人原来的号码 出圈问题:出圈,n个围成一圈,数到第m个人出圈,再从m个人的下一个人数,依次循环