#include <iostream> #include <iomanip> using namespace std; //计算3阶幻方 int main() { int a[4][4]; int n=4; int row; int k; for(int d1=1;d1<=9;d1++)//the first number for(int d2=1;d2<=9;d2++)//the second number { if(d2==d1) continue; for(int d3=1;d3<=9;d3++)//the third number { if(d3==d1 ||d3==d2) continue; if(d1+d2+d3==15) { for(int d4=1;d4<=9;d4++)//4 { if(d4==d1||d4==d2||d4==d3) continue; for(int d5=1;d5<=9;d5++)//5 { if(d5==d1||d5==d2||d5==d3||d5==d4) continue; for(int d6=1;d6<=9;d6++)//6 { if(d6==d1||d6==d2||d6==d3||d6==d4||d6==d5) continue; if(d4+d5+d6==15) { for(int d7=1;d7<=9;d7++)//7 { if(d7==d1||d7==d2||d7==d3||d7==d4||d7==d5||d7==d6) continue; for(int d8=1;d8<=9;d8++)//8 { if(d8==d1||d8==d2||d8==d3||d8==d4||d8==d5||d8==d6||d8==d7) continue; for(int d9=1;d9<=9;d9++)//9 { if(d9==d1||d9==d2||d9==d3||d9==d4||d9==d5||d9==d6||d9==d7||d9==d8) continue; if( d7+d8+d9==15&& d1+d4+d7==15&& d2+d5+d8==15&& d3+d6+d9==15&& d1+d5+d9==15&& d3+d5+d7==15 ) { a[1][1]=d1;a[1][2]=d2;a[1][3]=d3; a[2][1]=d4;a[2][2]=d5;a[2][3]=d6; a[3][1]=d7;a[3][2]=d8;a[3][3]=d9; } } } } } } } } } } } int u=0; for(int f=1;f<=3;f++) for(int ff=1;ff<=3;ff++) { cout<<setw(10)<<a[f][ff]; u++; if(u%3==0) cout<<endl; } system("pause"); return 0; } 在改进之中,有更好的方法,望多多分享!哈哈