编程论坛
注册
登录
编程论坛
→
C++教室
求助 如下题
wuchunbing
发布于 2012-11-02 14:36, 281 次点击
有17个人围成一圈(编号为0~16),从第0号的人开始从1报数,凡报到3的倍数的人离开圈子,然后再数下去。直到最后只剩下一
个人为止。问此人原来位置是多少号。
2 回复
#2
风之子MIKEY
2012-11-02 15:14
struct man
{
int id;
man *next;
};
struct man *GetMan(int sum)
{
struct man *p,*head;
int i,j;
p=NULL;
head=NULL;
for(i=0;i<sum;i++)
{
if(p==NULL){p=(struct man *)malloc(sizeof(struct man));head=p;}
else
{
p->next=(struct man *)malloc(sizeof(struct man));
p=p->next;
}
p->id=i+1;
p->next=NULL;
}
p->next=head;
return head;
}
main()
{
struct man *pman,*p;
int i;
pman=GetMan(17);
while(pman!=pman->next)
{
for(i=0;i<1;i++)
{
pman=pman->next;
}
p=pman->next;
pman->next=p->next;
pman=pman->next;
free(p);
}
printf("the number is:%d\n",pman->id);
free(pman);
return 0;
}
#3
wuchunbing
2012-11-02 16:37
多谢大师 我很多没学到呢 类和指针 还在艰难自学中
1