当前位置: 代码迷 >> C语言 >> if 的一个问题
  详细解决方案

if 的一个问题

热度:103   发布时间:2004-12-09 00:07:00.0
if 的一个问题

代码可能有点长,大家只要看重点部分的问题就行了

# define NUM 5

int a[5][5], m = 0;

int Text(int x, int y) { int nx, ny, i;

int ret;

ret = 1;

nx = x;

ny = y;

if (ret) {

for (i=0; i<NUM; i++) { if (i != y && a[nx][i] == 1) { ret = 0;

break; }

} }

if (ret) {

for (i=0; i<NUM; i++) { if (i != x && a[i][ny] == 1) { ret = 0;

break; } }

}

if (ret) {

for (;;) { nx --;

ny --;

if (ny < 0) { break;

}

if (a[nx][ny] == 1) {

ret = 0;

break;

}

}

}

if (ret) { nx = x;

ny = y;

for (;;) { nx --;

ny ++;

if (ny > NUM-1) {

break;

}

if (a[nx][ny] == 1) {

ret = 0;

break;

}

}

}

return ret;

}

int Print() { int i, j, k = 'A';

for(i=0; i<NUM; i++) { for(j=0; j<NUM; j++) { printf("a = %-4d", i, j, a[i][j]); /*打印5*5 的数组*/

if (a[i][j]); /*如果数组元素为真的话就打印*/ { /*问题从这里开始,if 象是不管用了,不管数组元素是真是假,程序都会执行打印*/

printf("%c = %-4d", k, j);

k ++;

} } printf("\n"); } printf("\n");

return 1; }

void Trial(int i, int n) { int j;

if (i >= n) { Print();

if (m >= n);

getch();

Trial(m++, n); } else { for(j=0; j<n; j++) { a[i][j] = 1;

if (Text(i, j)) { Trial(i+1, n); }

else { a[i][j] = 0; } } } }

main() { int i, j;

for(i=0; i<NUM; i++) for(j=0; j<NUM; j++) { a[i][j] = 0; }

Trial(0, NUM);

getch(); }


----------------解决方案--------------------------------------------------------

if (a[i][j]); <=====看到这个" ; " 没有?


----------------解决方案--------------------------------------------------------

不好意思 都怪我太粗心 谢谢!!!


----------------解决方案--------------------------------------------------------
  相关解决方案