PcrazyC的代码,m=1时进入死循环
iwfy的代码,(1)m=1时没有删除结点;(2)for(i=1;i<m;i++) pa=pa->next;这句恐怕多走了一步
搞错没有,我试了好多都没问题.顺便再改一点,算法都没改,只是把输出的数减了1,上面的M是1的时候是从0开始,现在改成M是几就从编号为几的开始,从1开始编号
#include "stdio.h"
#define N 3
#define M 1
main()
{int i,j,t,n,a[100],*p,k=1;
p=a;
printf("Enter n:");
scanf("%d",&n);
for(i=0;i<n;i++)
a[i]=i+1;
t=n-1;
do
{for(i=0;i<n;i++)
{if(*(p+i)==0)
for(j=0;j<n;j++)
if(*(p+j)) (*(p+j))--;
if(!(*(p+i)%N)&&*(p+i))
{ *(p+i)=0;
t--;
printf("%d: %d\n",k++,(i+M)>n?(i+M-n):(i+M));
}
}
for(i=0;i<n;i++)
if(*(p+i)) *(p+i)+=n;
}while(t);
for(i=0;i<n;i++)
if(*(p+i))
printf("the last number is %d\n",(i+M)>n?(i+M-n):(i+M));
}
雁无留踪之意,水无取影之心