求大神看看这个为什么在OJ上显示格式错误
题目描述n 个人围成一圈, 并依次编号1~n,。从编号为1 的人开始,按顺时针方向每隔一人选出一个,剩下的人重新围成一圈,如此循环直到剩下两人,这剩下的两人就是幸运儿。如果你想成为最后两个幸运儿,请问开始时应该站在什么位置?(设3<=n<=50)
输入
有多个测试序列。每行是开始时的人数n
输出
第1 行是选出顺序,第2 行是两名幸运儿的开始位置(按升序排列),位置编号之间用一个空格分开。
样例输入
12
20
45
样例输出
2 4 6 8 10 12 3 7 11 5
1 9
2 4 6 8 10 12 14 16 18 20 3 7 11 15 19 5 13 9
1 17
2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38 40 42 44 3 7 11 15 19 23 27 31 35 39 43 5 13 21 29 37 45 9 25 41 17
1 33
#include<stdio.h>
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
int a[999]={0},c[999]={0},i,*p,m=0,j=0,d[999]={0},e[999]={0},g[999]={0};
for(i=0;i<n;i++)
{
a[i]=i+1;
}
p=a;
p++;
while(*p!=0)
{
printf("%d ",*p);
m++;
*p=0;
p+=2;
}
if(m<n-2)
{
j=0;
for(i=0;i<n;i++)
{
if(a[i]!=0)
{
c[j]=a[i];
j++;
}
}
p=c;
p++;
while(*p!=0)
{
printf("%d ",*p);
*p=0;
m++;
p+=2;
}
}
if(m<n-2)
{
j=0;
for(i=0;i<n;i++)
{
if(c[i]!=0)
{
d[j]=c[i];
j++;
}
}
p=d;
p++;
while(*p!=0)
{
printf("%d ",*p);
*p=0;
m++;
p+=2;
}
}
if(m<n-2)
{
j=0;
for(i=0;i<n;i++)
{
if(d[i]!=0)
{
e[j]=d[i];
j++;
}
}
p=e;
p++;
while(*p!=0)
{
printf("%d ",*p);
*p=0;
m++;
p+=2;
}
}
if(m<n-2)
{
j=0;
for(i=0;i<n;i++)
{
if(e[i]!=0)
{
g[j]=e[i];
j++;
}
}
p=g;
p++;
while(*p!=0)
{
printf("%d ",*p);
*p=0;
m++;
p+=2;
}
}
printf("\n1 ");
if(n>=3&&n<=4)
{
for(i=1;i<n;i++)
{
if(a[i]!=0)
{
printf("%d\n",a[i]);
}
}
}
if(n>=5&&n<=8)
{
for(i=1;i<n;i++)
{
if(c[i]!=0)
{
printf("%d\n",c[i]);
}
}
}
if(n>=9&&n<=16)
{
for(i=1;i<n;i++)
{
if(d[i]!=0)
{
printf("%d\n",d[i]);
}
}
}
if(n>=17&&n<=32)
{
for(i=1;i<n;i++)
{
if(e[i]!=0)
{
printf("%d\n",e[i]);
}
}
}
if(n>=33&&n<=50)
{
for(i=1;i<n;i++)
{
if(g[i]!=0)
{
printf("%d \n",g[i]);
}
}
}
}
return 0;
}