#include<stdio.h>
#define MAX 15
int main()
{
int m, mm, i, j, k, ni, nj;
int magic[MAX][MAX] = {0};
printf("Enter the number you wanted:"); //提示输入幻方的阶数 m
scanf("%d", &m);
if((m <= 0)||(m % 2 == 0)) //当幻方阶数小于 0 或为偶数时返回
{
printf("Error in input data.\n");
return 0; // main函数必须返回值。不能写成 return; 否则会反馈错误。
}
mm = m * m;
i = 0; //第一个值的位置
j = m / 2;
for(k = 1; k <= mm; k++)
{
magic[i][j] = k; //位于第 i+1 行,第 j+1 列
//求右上方方格的坐标
if (0 == i) //如果此数在第 1 行
ni = m - 1; //则下一个数在 最后一行 (第 m 行)
else //如果此数不在第一行
ni = i - 1; //则下一个数在 此数(第 i+1 行)的上一行(第 i 行)
if (j == m - 1) //如果此数在最后一列
nj = 0; //则下一个数在第 1 列
else //如果此数不在最后一列
nj = j + 1; //则下一个数在 此数(第 j+1 列)的后一列(第 j+2 列)
//判断右上方方格是否已有数
if (0 == magic[ni][nj]) //右上方无值
{
i = ni;
j = nj;
}
else //右上方方格已填上数
i++; //下移一行
}
for(i=0; i < m; i++) //显示填充的结果
{
for(j = 0; j < m; j++)
printf("%4d", magic[i][j]);
printf("\n");
}
return 0;
}
下面进入错误总结:
(1)[Error]return-statement with no value, in function returning ‘int’[-fpermissive]
if((m <= 0)||(m % 2 == 0)) //当幻方阶数小于 0 或为偶数时返回
{
printf(“Error in input data.\n”);
return 0;
// main函数必须返回值。不能写成 return; 否则会反馈错误 [Error]return-statement with no value, in function returning ‘int’[-fpermissive]
}