标签:02 25 填入 int 位置 ai 2021 aij 方阵
n阶魔阵问题(C语言设计)
问题分析
若要使一个方阵的主、副对角线数值之和均相等,可以通过依次将自然数填入方阵中的方法。共填 n 轮,每轮填 n 次。第一轮的第一次,将 1 填入方阵的中间一行的最后一列位置。设前一次填入的位置是 aij;每轮中第 2 至第 n 次将数填入 ai+1,j+1,
若遇到下列两种情况之一,则填写位置按以下规则: 1.aij 是最后一列(即 j=n)位置,则将下一个数填入 ai+1,1;
- aij 是最后一行(即 i=n)位置,则将下一个数填入 a1,j+1。每新一轮的第一次填入 ai,j-1。
程序中关键模块的描述:
1.生成一个每个元素都为0的n 阶矩阵;
2.先将最中间行的最后一列填入1;
3.从 2 开始,第一轮:从2到n 按照元素填放顺序依次填入矩阵中,然后从n+1 到 2n继续填入,直至最后填入第 n2 个元素;
4.求出各行,列,以及主副对角线元素之和并输出;
5.输出目标矩阵。
具体代码
#include<stdio.h>
int main()
{
int n;
scanf("%d",&n);
int arr[n+5][n+5];
int sum = 1,i = n/2+1,j = n,a = 0;
for(int num = 1;num <= n;num++)
{
int ans = 0;
while(ans != n)
{
if(j == n+1) j = 1;
if(i == n+1) i = 1;
ans++;
arr[i][j] = sum;
sum++;
if(ans != n)
{
i++;
j++;
}
}
j--;
}
for(int a = 1;a <= n;a++)
{
for(int b = 1;b <= n;b++)
{
printf("%d ",arr[a][b]);
}
printf("\n");
}
}
标签:02,25,填入,int,位置,ai,2021,aij,方阵 来源: https://blog.csdn.net/qq_48751603/article/details/114059588
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。