int main()
{
int N,M,*a
int i,j,position=1,total=0,chage/*total出队的人数*/
printf("Enter the N and M\n")
scanf("%d%d",&N,&M)
a=(int *)malloc(N*sizeof(int))
for (i=0i<Ni++)
a[i]=i+1
while(1)
{
position+=M-1
while (position>N-total)
position=position-N+total
chage=a[position-1]
for (j=positionj<N-totalj++)
a[j-1]=a[j]
a[N-total-1]=chage
total++
if (total==N)/*出队人数等于N,程序结束*/
{
for (i=0i<N-1i++)
printf("%d->",a[N-i-1])
printf("%d\n",a[0])
return 0
}
}
}
#include<stdio.h>int main(void)
{
int a[9999],n,i,count,num,*p
p=&a[0]
count=1
n=i=num=0
printf("Input n(n must be a natural number less than 10000):")
scanf("%d",&n)
if(n<=10000)
{
for(i=0i<ni++)
a[i]=i+1
while(num<n-1)
{
count++
p++ //这里就有越界的可能(p>&a[n-1]),如果这里越界了,那下
面的循环就不会执行了,那么p就一直++,直到num==n-1
if(p>&a[n-1]) //所以这里就要判断一下,或者开始时就把a的所有
元素全部初始化为0,就不用这个判断了
p=&a[0]
while(*p==0)
{
p++
if(p>&a[n-1])
p=&a[0]
}
if(count%3==0)
{
*p=0
num++
}
}
while(*p==0)
{
p++
if(p>&a[n-1])
p=&a[0]
}
printf("Last No. is:%d",*p)
}
else
printf("%d is out of range of valid values.",n)
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)