您的位置:

猴子大王c语言,猴子选大王C语言

本文目录一览:

猴子选大王,C语言描述 请相信解释我的代码!

给你原文做了注释。还不懂hi我

#include stdio.h

#includemalloc.h

typedef struct LNode

{

int num;

struct LNode *next;

}LNode, *LinkList; //定义结点

LinkList InitList(LinkList L,int n) //初始化循环链表

{

LinkList p,q;

int i;

L = (LinkList)malloc(sizeof(LNode)); //头结点

L-num = 1; //一号猴子

q=L;

for(i = 2; i = n; i++) //从二号猴子开始生成结点

{

p = (LinkList)malloc(sizeof(LNode));

p-num = i;

q-next=p;

q=p;

}

q-next = L; //使链表循环起来

return L;

}

void ListDelete_L(LinkList L,int n)

{

LinkList p,q;

int j=1; //j为计数器

p=L;

while(p-next!=p) //p-next=p时是只剩一个结点。

{

while(j!=n-1) //当j=n-1时应该将该结点的下一个结点删除。当就j!=n-1时就应该指针向后移,同时计数器加一

{

p=p-next;

j++;

}

q=p-next; //q即为被点到的猴子

p-next=p-next-next; //删除q结点

printf("%d\n",q-num);

free(q);//释放

j=0; //计数器清零,重新开始计数

}

printf("%d",p-num);//此时的结点就是大王

free(p);

}

int main()

{

LinkList L=NULL;

int n,m,e=0;

printf("请输入猴子个数:");

scanf("%d",m);

printf("请输入n值:");

scanf("%d",n);

if(mn){printf("m应该 大于n请重新输入");return 0 ;

}

L=InitList(L,m);

printf("出列的顺序为:");

ListDelete_L( L,n);

return 0;

}

C语言程序设计,猴子选大王

#includestdio.h

#includestdlib.h

main()

{ int a[50];

int i,j,M,N,t=0;

printf("input two number.\n");

scanf("%d %d",N,M);

for(i=0;iN;i++)

a[i]=i+1;

for(j=1,i=0;;j++,i++)

{

if(i==N)i=0;

if(a[i]==0){j--;continue;}

if(j%M==0){a[i]=0;t++;}

if(N-t==1)break;

}

for(i=0;iN;i++)

if(a[i]!=0) printf("猴王是第%d个.\n",a[i]);

system("pause");

}

试试...

求高手帮忙调试一下“猴子选大王C语言代码”诚谢!本人新手学C语言

#include stdio.h

#define SHUMU 10

void main()

{

int i=0, weizhi=0,shumu=10;

int houzi[SHUMU]={1,1,1,1,1,1,1,1,1,1};

while(shumu1)

{

i=1;

while(i6)

{ weizhi++;

if(weizhi9) weizhi=weizhi-10;

if(houzi[weizhi]=1) i++;

}

houzi[weizhi]=0;

shumu--;

}

i=0;

while(i10)

{

printf("第%d只猴子是大王\n", i);

i++;

}

}