#include<stdio.h> int A[101][101]; void guiling() { for(int i=1;i<=10;i++) { for(int j=1;j<=10;j++) { A[i][j]=0; } } } void shuchu(int a) { for(int i=1;i<=a;i++) for(int j=1;j<=a;j++) { printf("%4d ",A[i][j]); if(j==a) { printf("\n"); } } printf("\n"); guiling(); } void jishu(int a) { A[1][(a+1)/2]=1; int a1=1,b1=(a+1)/2; int a2,b2; for(int k=2;k<=a*a;k++) { a2=a1,b2=b1; if(--a1==0) a1=a; if(++b1>a) b1=1; if(A[a1][b1]!=0) { a1=a2+1; if(a1>a) { a1=1; } b1=b2; } A[a1][b1]=k; } shuchu(a); } //void Kjie(int a,int b) //{ // // // //} // //void jie(int a,int b) //{ // // // //} void panduan() { for(int i=3;i<11;i++) { for(int j=3;j<11;j++) { if((i-1)%2==0&&i==j) { jishu(j); } // if(i%2==0&&i==j&&i!=6&&i!=10) // { // Kjie(i,j); // } // // if((i==6||i==10)&&i==j) // { // jie(i,j); // } } } } int main() { guiling(); panduan(); return 0; }为什么这段代码输出不正确
时间: 2024-03-11 15:50:35 浏览: 449
这段代码的输出不正确是因为 `guiling()` 函数在 `shuchu()` 函数中被调用,导致每次在输出完矩阵后,矩阵都被重新初始化了,因此无法正确输出幻方。
解决方法是将 `guiling()` 函数的调用放在 `panduan()` 函数中,在生成幻方之前初始化矩阵,如下所示:
```
void panduan() {
guiling(); // 初始化矩阵
for(int i=3;i<11;i++) {
for(int j=3;j<11;j++) {
if((i-1)%2==0&&i==j) {
jishu(j);
}
// 其他生成幻方的方法
}
}
}
```
这样就能够正确地输出幻方了。
阅读全文