c语言题目:输入一个n*n矩阵个元素的值,求出两个对角线元素之和。

2024年11月22日 04:59
有5个网友回答
网友(1):

//修改了一下,如下参考一下吧:
#include
#define MAX 100 //定宽瞎义一个最大的范围
void main()
{
int a[MAX][MAX],n,i,j,sum=0; //原来这里数组定义不正确
printf("please input the n:");
scanf("%d",&n);
for(i=0;i {
for(j=0;j {
printf ("shuru a[%d][%d] zhi:",i,j);
scanf("%d",&a[i][j]);
}
}
for(i=0;i {
for(j=0;j if(i==j||j==n-1-i) //你这里原来高行有一个慎念空等号
sum+=a[i][j];
}
//这里不用减,因为没有将a[n/2][n/2]加两次
printf("sum = %d\n",sum);
}

网友(2):

//修改了一下,如下参考喊蚂一下吧:
#include

#define
MAX
100
//定义一个最大的范围
void
main()
{
int
a[MAX][MAX],n,i,j,sum=0;
//原来这里数组定义不正袜渗宴确
printf("please
input
the
n:");
scanf("%d",&n);
for(i=0;i{
for(j=0;j{
printf
("shuru
a[%d][%d]
zhi:",i,j);
scanf("%d",&a[i][j]);
}
}
for(i=0;i{
for(j=0;jif(i==j||j==n-1-i)
//你这里原来有一个等号
sum+=a[i][j];
}
//这里不用减,因为没有将a[n/2][n/2]加两次告银
printf("sum
=
%d\n",sum);
}

网友(3):

左对角线元素求和直接把a[i][i]相加就行了吧,右对角线a[n-i][i]相加

网友(4):

测试用例,时间复唯凯杂度O(n),空间销山祥复杂度O(1)

public static void main(String[] args) {

int[] res = diagonalAnd(new int[][]{{1, 2, 3}, {1, 1, 1}, {3, 2, 1}});

System.out.println(Arrays.toString(res));

}

public static int[] diagonalAnd(int[][] matrix){

int res1 = 0;//左上角-->亏搏右下角

int res2 = 0;//右上角-->左下角

int len = matrix.length;

for (int i = 0; i < len; i++) {

int n1 = matrix[i][i];

int n2 = matrix[i][len-i-1];

res1 += n1;

res2 += n2;

}
return new int[]{res1,res2};

网友(5):

啥?你搞了半天的代码编译都没通过。。。