C编程利用二维数组求方阵主次对角线之和; 急,求C语言帝帮忙
发布网友
发布时间:2023-10-28 20:04
我来回答
共2个回答
热心网友
时间:2024-11-26 19:50
#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;
}
如果不是的话你可以给我留言,要是对的话记得给我加分, 呵呵
热心网友
时间:2024-11-26 19:51
我是自己推出公式来的..分两种情况,奇数数组和偶数数组,奇数数组主次对角线之和要减去中间的一个多余的元素,偶数无多余的元素,主次对角线元素之和等于一排元素的个数*两个对角之和除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#的,如果你没有看懂我的想法的话你就直接把上面代码带到你原来的代码中就行了 不懂问我