7-5 矩阵运算 (10 分)

  • Post author:
  • Post category:其他


7-5 矩阵运算 (10 分)

给定一个n×n的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。

输入格式:

输入第一行给出正整数n(1<n≤10);随后n行,每行给出n个整数,其间以空格分隔。

输出格式:

在一行中给出该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。

输入样例:

4

2 3 4 1

5 6 1 1

7 1 8 1

1 1 1 1

输出样例:

35

//其实这道题,我一开始的思路就是把二维数组中所有的数字全部求和,然后再减去副对角线,最后一列和最后一行的元素,这其实就是典型的人类的思维,其实完全可以让计算机判断行下表和列下标,来判断是否需要加。

/*int main()

{


int n,allsum=0,sum;

int i,j;

scanf(“%d”,&n);

int a[n][n];

for(i=0;i<n;i++)

{


for(j=0;j<n;j++)

{


scanf(“%d”,&a[i][j]);

allsum+=a[i][j];

}

}

for(i=0;i<n;i++)

{


for(j=0;j<n;j++)

{


if(i

n-1||j

n-1)

allsum-=a[i][j];

}

for(j=n-i-1;j>=0;j–)

{


allsum-=a[i][j];

}

}

sum=allsum+a[0][n-1]+a[n-1][n-1]+a[n-1][0];

printf(“%d”,sum);

return 0;

}*/

//一下是改进后的代码= – =,可读性大大提高

int main()

{


int n,i,j,sum=0;

scanf(“%d”, &n);

int a[n][n];

for(i=0;i<n;i++)

{

	for(j=0; j<n; j++)
	{
		scanf("%d", &a[i][j]);
		if(i!=n-1&&j!=n-1&&(j+i)!=n-1)
		{
			sum+=a[i][j];
		}
	}
}
printf("%d", sum);
	
return 0;

}



版权声明:本文为Guooooozy原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。