第1个回答 2011-04-08
#include <stdio.h>
#include <string.h>
#define n 8
void main(void)
{
unsigned char p[n];
unsigned char m,i;
unsigned char len,w;
for(i=0;i<n;i++)
{
p[i] = i+1;
printf("%d ",p[i]);
}
printf("\ninput m,i : ");
scanf("%d,%d",&m,&i);
if(i>n || i<1 || m<1)
{
printf("input error!\n");
return;
}
else
{
len = n;w = 0;
while(len>0)
{
w += (i+m-2)%len;
w = w%len;
printf("%d ",p[w]);
len --;
if(w<len)
memcpy(p+w,p+w+1,len-w);
}
}
printf("\n");
}
第2个回答 2011-04-13
#include<iostream.h>
void main()
{
int n,start,m,i,count,j;
while(cin>>n>>start>>m)
{
int *p=new int [n];
for(i=0;i<n;i++)
p[i]=i+1;
count=1;start--;
while(count<n)
{
cout<<p[start]<<" ";
for(j=start;j<n-count;j++)
{
p[j]=p[j+1];
}
start=(start+m-1)%(n-count);
count++;
}
cout<<p[0]<<endl;
}
}