/*1.幻方问题*/
int arr[100][100]={0}; //假设最多为100行、100列
printf("请输入1-100内的奇数:\n"); //只处理为奇数的方阵
int num;
scanf("%d",&num);
int i,j;
i=0;j=num/2;
arr[i][j]=1; //将第一个值存入中间位置
int iTemp,jTemp; //用于暂存当前位置
for(int k=2;k<=num*num;k++){
iTemp=i;
jTemp=j;
if(--i<0){ //判断当前位置是否超出上边界
i=num-1;
}
if(--j<0){ //判断当前位置是否超出左边界
j=num-1;
}
if(arr[i][j]>0){ //如果该位置已经有数,则在该位置下面添加数字
i=iTemp+1;
if(i==num){
i=0;
}
j=jTemp;;
}
arr[i][j]=k;
}
for(int m=0;m<num;m++){
for(int n=0;n<num;n++){
printf("%d\t",arr[m][n]);
}
printf("\n");
}
03-14
04-24
560
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
12-04
4448
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)