新手求教,程序编不起来,运行不了,为什么??
#include<stdio.h>void ssprintf (int abc[9][9]);
int check1(int abc[9][9]);
void pojie(int abc[9][9]);
int check2(int a[9]);
int fun2(int* pzu ,int abc[9][9],int i);
int abc[9][9];
int main(void)
{
char d;
int a,b,c;
for(int e=1;e<=81;e++)
{ssprintf(abc);
printf("选行数");
scanf("%d",&a);
printf("选列数");
scanf("%d",&b);
printf("输入数值");
scanf("%d",&c);
abc[a][b]=c;
if(check1(abc)!=0)
{printf ("输入有误,请重新输入全部");
}
printf("继续吗?继续请按Y,否则开始破解");
scanf("%c",&d);
if(!(d=='y'||d=='Y'))
break;}
ssprintf(abc);
pojie(abc);
return 0;}
void ssprintf(int abc[9][9])
{
for(int a=0;a<=8;a++)
{printf(" - - - - - - - - - ");
for(int b=0 ;b<=8;b++)
printf("|%d",abc[a][b]);}
printf(" - - - - - - - - - ");
}
int check1(int abc[9][9])
{ int h=0;
int ab[9];
for(int e=0;e<=8;e++)
{for(int f=0;f<=8;f++)
ab[f]=abc[e][f];}
h+=check2(ab);
for(int e=0;e<=8;e++)
{for(int f=0;f<=8;f++)
ab[f]=abc[f][e];}
h+=check2(ab[9]);
for(int i=0;i<=6;i+=3)
{for(int j=0;j<=6;j+=3)
ab[0]=abc[i][j];ab[1]=abc[i][j+1];ab[2]=abc[i][j+2];
ab[3]= abc[i+1][j];ab[4]=abc[i+1][j+1];ab[5]=abc[i+1][j+2];
ab[6]=abc[i+2][j];ab[7]=abc[i+2][j+1];ab[8]=abc[i+2][j+2];
h+=check2(ab);}
return h;}
int check2(int a[9])
{int h=0;
for(int i=0;i<=8;i++)
{for(int j=0;j<=8;j++)
if(i==j)
continue;
if(a[i]==a[j]&&a[i]!=0)
h+=1;}
return h;}
void pojie(int abc[9][9])
{
int i=0;
int* pzu[81];
for(int a=0;a<=80;a++)
{if(abc[a]==0)
pzu[i]=abc[a];
i+=1;}
for(int j=0;j<=(i-1);j++)
*pzu[j]=1;
fun2(*pzu,abc[9][9],i);}
int fun2(int *pzu,int abc,int i)
{
for(int j=0;j<=9;j++)
{
pzu[i-1]=j;
i-=1;
if(check1(abc)!=0)
ssprintf(abc);
if(i>=0)
fun2( pzu[i],abc,i);}
return 0;}
编了个解数独的,却编不起来。。。。求指教。。。。[local]1[/local]