高分请高手来修改这最后一个错误!Lvalue required in function panduan
int a[12]={5,5,5,5,5,5,5,5,5,5,5,5};
int playerA,playerB;
void zouchi(int i,int *p)
{ int m,q,h;
for(;;)
{ for(h=i;h <i+a[i];h++)
{ q=h+1;
if(q> 11)q=0;
a[q]++;
}
m=i+a[i]+2;
if(m> 11)m=0;
if(a[m-1]==0)
{ if(a[m]!=0)
{ (*p)=(*p)+a[m];
a[m]=0;
break;
}
else break;
}
else i=m-1;
}
}
int panduan(int *p2,int f)
{ int c[12],g,m,p,q,max,t,h;
for(g=f;g <f+6;g++)
{ for(;;)
{ for(h=f;f <f+*(p2+f);h++)
{ q=h+1;
if(q> 11)q=0;
*(p2+q)++;
}
m=*(p2+f)+f+2;
if(m> 11)m=0;
if(*(p2+m-1)==0)
{ if(*(p2+m)!=0)
{ c[g]=*(p2+m);
*(p2+m)=0;
break;
}
else break;
}
else f=m-1;
}
}
max=c[f],t=f;
for(h=f+1;h <f+6;h++)
{ if(c[h]> max)
{ max=c[h];
t=h;
}
}
return t;
}
main()
{ int *p,s,b[12],flagA,flagB,i;
do{
p=&playerA;
for(s=0;s <12;s++)
b[s]=a[s];
zouchi(panduan(b,0),p);
runB: flagB=0;
for(i=6;i <12;i++)
if(a[i]!=0)flagB++;
if(flagB==0) goto runA;
p=&playerB;
for(s=0;s <12;s++)
b[s]=a[s];
i=panduan(b,6);
zouchi(i,p);
runA: flagA=0;
for(i=0;i <6;i++)
if(a[i]!=0)flagA++;
if(flagA==0) goto runB;
}while(flagA!=0||flagB!=0);
printf( "%d,%d ",playerA,playerB);
}
[解决办法]
单从编译来说
*(p2+q)++;
改为
(*(p2+q))++;就没问题了.