练习7-7 矩阵运算 (20分)
给定一个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
#include<stdio.h>
int main(void)
{
int a[10][10]={0};
int n,i,j,sum=0;
scanf("%d",&n);
for(i=0;i<n;i++) {
for(j=0;j<n;j++) {
scanf("%d",&a[i][j]);
sum +=a[i][j]; //计算整个矩阵元素的和
}
}
for(i=n-1,j=0;i>=0,j<n;j++,i--) {
sum -=a[i][j]; //减去副对角线的元素
}
for(i=0;i<n;i++) {
sum -=a[n-1][i]; //减去最后一行的元素,此时重复减去了副对角线和最后一行的交叉元素,在最后需要加回来。
}
for(i=0;i<n;i++) {
sum -=a[i][n-1]; //减去最后一列的元素,此时重复减去了主对角线的最后一个元素和与副对角线交叉的元素,最后需要加回来
}
printf("%d",sum+a[n-1][n-1]+a[n-1][0]+a[0][n-1]); //将之前重复减去的元素加回来
return 0;
}```