C编程利用二维数组求方阵主次对角线之和; 急,求C语言帝帮忙

如题所述

第1个回答  2010-10-31
#include <stdio.h>
#define n 3

int main(void)
{
int i, j, sum;
int a[n][n];

printf("Please input a array\n");
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
scanf("%d", &a[i][j]);
}
}
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
printf("%3d", a[i][j]);
}
printf("\n");
}
sum = 0;
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
if((i==j) || (i+j==n-1))
{
sum += a[i][j];
}
}
}
printf("主对角线和次对角线之和是:%d\n", sum);
return 0;
}
如果不是的话你可以给我留言,要是对的话记得给我加分, 呵呵本回答被提问者和网友采纳
第2个回答  2018-05-07
我是自己推出公式来的..分两种情况,奇数数组和偶数数组,奇数数组主次对角线之和要减去中间的一个多余的元素,偶数无多余的元素,主次对角线元素之和等于一排元素的个数*两个对角之和除2,可以写成:
if (b%2!=0)
c=b*( a[0, b-1]+ a[ b-1,0])/2+ b*(a[0,0]+ a[ b-1, b-1])/2-( a[0,0]+ a[ b-1, b-1])/2; ( b为你定义的数组的元素个数,c为存放主次对角线之和的容器,a为多维数组;当二维数组元素的数量为奇数时,主次对角线之和相加再减去中间多余的一个元素)
else
c=b*( a[0, b-1]+ a[ b-1,0])/2+ b*(a[0,0]+ a[ b-1, b-1])/2; (当元素的数量为偶数,中间无重叠的元素,直接相加即可)
printf.......
我是学c#的,如果你没有看懂我的想法的话你就直接把上面代码带到你原来的代码中就行了 不懂问我