首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

请大神见见这段代码

2013-07-08 
请大神看看这段代码题目:有N个人围成一圈,从第一个人开始报数(1报到3),凡报到3的人退出圈子,问最后留下的

请大神看看这段代码
题目:有N个人围成一圈,从第一个人开始报数(1报到3),凡报到3的人退出圈子,问最后留下的是原来第几号的那位
#include<stdio.h>
void main()
{
int str[80],i,n,*p,j=0,x=0,k;
printf("请输入人数:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
str[i]=i+1;
}
p=str;
for(i=0;i<n;i++)
{
j++;
if(j%3==0)
{
for(k=i;k<n-1;k++)
{
str[k]=str[k+1];
}
j=0;
n--;
}
p++;
if(*p=='\0')
{
i=0;
p=str;
}
}
printf("%d",*p);
}


请问这段代码算法错在哪?
[解决办法]
你那个错的太多了。。我写个简单的给你吧。。


#include<stdio.h>
void main()
{
int i,n,k;
printf("请输入人数:");
scanf("%d", &n);
for(k = 0, i = 1; i <= n; ++i) k = (k + 3) % i;
printf("%d\n", k + 1);
}

热点排行