求解幻方问题

#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]
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值