c语言问题 急用 帮帮忙

来源:百度知道 编辑:UC知道 时间:2024/05/26 12:41:42
编写程序实现如下功能:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。

#include <stdio.h>
void main()
{int i,k,m,n,num[50],*p;
printf("请输入人数:");
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\n",*p);
}

#include <stdlib.h>
#include <stdio.h>
#include <malloc.h>

void main()
{
int n, i, j, k;
int *p;

printf("请输入人数:");
scanf("%d", &n);
p = (int *)malloc(sizeof(int) * n);

for (i = 1; i <= n; ++i)
p[i-1] = i;

k = n; j = 0;
while (k > 1)
{
for (i = 0; i < n; ++i)
{
if (p[i] != 0 && ++j % 3 == 0)
{
j = 0;
--k;
p[i] = 0;
}
}