二维数组5*5矩阵每行之和,每列之和,跟角线之和都相等,用C语言 应该怎么编? 每行数字是1-5各使用一次

问题描述:

二维数组5*5矩阵每行之和,每列之和,跟角线之和都相等,用C语言 应该怎么编? 每行数字是1-5各使用一次
C语言怎么弄呢
1个回答 分类:综合 2014-12-14

问题解答:

我来补答
#include
#define N 5
int main()
{
\x05int i,j,t;
\x05int a[N],r[N];
\x05for(i = 0;i < N;i++)
\x05{
\x05\x05a[i] = i + 1;
\x05\x05r[i] = 2 * i;
\x05}
\x05for(i = 0;i < N;i++)
\x05{
\x05\x05for(j = 0;j < N;j++)
\x05\x05\x05printf("%3d",a[(j+r[i])%N]);
\x05\x05printf("\n");
\x05}
\x05return 0;
}
代码思路是每行循环输出,在r[i] = 2 * i; 中,与i相乘的数不但单是2,只要是与N互质的数,皆能使每一列数互不同(和当然就是1+2+3……),至于每行的数,也就是数组里的数了(1,2,3……)
对于特定的N,取适当的数与i相乘赋值给r[i],可使对角线上的数各不相同.
比如N = 5时r[i] = 2 * i或r[i] = 3 * i都可以.
当N为5,7,11……时,满足条件.
不要以为N为质数都可以,3就不行.
如今N = 5,刚好可以.
 
 
展开全文阅读
剩余:2000