| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 336 人关注过本帖
标题:这个猴子选大王的c语言应该如何理解,谁能帮我一点一点的翻译下
只看楼主 加入收藏
吴金源
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2014-12-17
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:2 
这个猴子选大王的c语言应该如何理解,谁能帮我一点一点的翻译下
#include <stdio.h>                        
#include <stdlib.h>
#define n 19
#define m 4

typedef struct monkey
{
int num;
struct monkey *next;
} Monkey,*LINK;

void main()
{
LINK p,head,p2;
int i;
head=p=p2=(LINK)malloc(sizeof(Monkey));//三个指针指向同一块内存

for(i=1;i<n;i++)
{
p=(LINK)malloc(sizeof(Monkey));
p2->next=p;
p2=p;
}

p2->next=head;//把链表的首尾相连
p=head;//p指向了第一个结点

printf("对猴子进行编号!\n");
for(i=1;i<=n;i++)
{
p->num=i;//从第一个结点到最后一个结点依次给猴子编号
printf("%d号猴子:%d\n",p->num,p->num);
p=p->next;
}//循环结束,p指向了最后一个结点

i=0;
p=head;//再把p指向第一个结点

while(1)
{
i++;
printf("%d号猴子报:%d\n",p->num,i);
if(p->next==p)
break;//此为while循环的出口

if(i==m)//if语句中是删除结点的过程
{
i=0;
printf("%d号猴被淘汰\n",p->num);
printf("\n");
p2->next=p->next;//在此删除结点p
p=p2->next;//p指向它的下一个结点
continue;
}
else
{
if(i==m-1)
p2=p;//保存将要退出结点的前一个结点(存到p2中)
p=p->next;
}
}
printf("胜出:%d",p->num);//最后剩下的结点就是获胜的结点
}
搜索更多相关主题的帖子: monkey include c语言 大王 如何 
2014-12-17 14:44
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:20 
程序代码:
#include <stdio.h>                       

#include <stdlib.h>

unsigned MonkeyKing( unsigned n, unsigned m )
{
    int* buf = calloc( n, sizeof(int) );
    // buf是个链表,第p项的值(buf[p])保存着下一项的索引到p的相对距离减一

#define NEXTOF(p) ((p+buf[p]+1)%n)
    int p = 0;
    for( unsigned i=1; p!=NEXTOF(p); ++i, p=NEXTOF(p) )
    {
        if( i == m-1 )
        {
            printf( "-%d\n", NEXTOF(p)+1 );
            buf[p] = NEXTOF( NEXTOF(p) ) - p - 1;
            i = 0;
        }
    }
#undef NEXTOF
    free( buf );
    return p+1;
}

int main()
{
    printf( "=%d\n", MonkeyKing(19,4) );

    return 0;
}
2014-12-17 16:11
我只是个学生
Rank: 3Rank: 3
来 自:中石大
等 级:论坛游侠
威 望:1
帖 子:57
专家分:190
注 册:2014-12-14
收藏
得分:0 
一点点翻译太麻烦了,你有不懂的地方指出来,先试着自己标示下注释,然后放到帖子里吧。

我们的善良将助长一个孩子不劳而获的懒惰心理
2014-12-17 17:02
快速回复:这个猴子选大王的c语言应该如何理解,谁能帮我一点一点的翻译下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014920 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved