我是新手 有问题请高手解答,,谢谢啊
我最近学习C语言中碰到一个问题,请高手指教啊!题目:n个人围成一圈,1,2,3循环报数,报到3的人退出。到最后只余1人,输出最后留下的是第几号?
编写程序如下
#include<math.h>
#include<stdio.h>
#include<string.h>
check (int nub[],int n)
{ int *pt,i,j,k;
for(k=0,i=1;n-k>1;)
{for(pt=nub;pt<(nub+n);pt++,i++)
{if(*pt==0)
{i--;}
else if(i%3==0) //在这个不加else 的话运行结果是不对的,我个人感觉加不加对运算结果应该无影响,请大虾说明下。!!//
{*pt=0;
k++;
}
}
}
}
main()
{ int a[100],*p,n,i;
printf("input the unmber of people.\n");
scanf("%d",&n);
for(p=a,i=1;p<a+n;p++)
*p=i++;
p=a;
check(p,n);
for(p=a;p<a+n;p++)
{ if(*p==0) continue;
printf("%d,",*p);
}
getch();
}
非常感谢啊!!