作者在 2011-05-16 23:27:12 发布以下内容
n只猴子要选大王,选举办法如下:所有猴子按1,2,...,n编号围成一圈,从第1号开始按1,2,...,m报数,反报m号的退出圈外,如此循环报数,直到圈外剩下一只猴子时,这只猴子就是大王。n和m由键盘输入,打印出最后剩下的猴子号。编写一个程序实现上述函数。
#include<stdio.h>
typedef int MAXSIZE[100];
main (){
MAXSIZE a;
int m, n, i, count=0, d=0;//d用来记录退出圈外的猴子的数目
do{
printf("Please input m and n:\n");
scanf("%d,%d",&n,&m);
}while (n<=m);
for (i=0; i<n; i++)
a[i]=i+1;
while (d<n)
for (i=0; i<n; i++)
if (a[i]!=0){
count++; //报一次数
if (count==m) //第i个猴子退出
{
printf ("%d\n",a[i]);
a[i]=0;
count=0;
d++;
}
}
printf ("退出圈外的猴子数目:%d\n",d);
}
typedef int MAXSIZE[100];
main (){
MAXSIZE a;
int m, n, i, count=0, d=0;//d用来记录退出圈外的猴子的数目
do{
printf("Please input m and n:\n");
scanf("%d,%d",&n,&m);
}while (n<=m);
for (i=0; i<n; i++)
a[i]=i+1;
while (d<n)
for (i=0; i<n; i++)
if (a[i]!=0){
count++; //报一次数
if (count==m) //第i个猴子退出
{
printf ("%d\n",a[i]);
a[i]=0;
count=0;
d++;
}
}
printf ("退出圈外的猴子数目:%d\n",d);
}