版权声明:本文为博主原创文章,未经博主允许不得转载。博客地址: https://blog.csdn.net/qq_40268826/article/details/83050890
7-55 矩阵运算 (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 () {
int n,sum=0,i,t;
scanf("%d",&n);
int a[n][n];
for ( i=0; i<n; i++){ //输入并求和
for ( t=0; t<n; t++){
scanf ("%d",&a[i][t]);
sum += a[i][t];
}
}
t = n;
for ( i=0; i<n; i++){ //减去副对角线
sum -= a[i][--t];
}
for ( i=1; i<n; i++){ //减去其他成分
sum -= a[i][n-1];
sum -= a[n-1][i];
}
sum += a[n-1][n-1]; //最后一个数被重复减去了
printf("%d",sum);
return 0 ;
}
或者:
#include <stdio.h>
int main () {
int n,sum=0,i,t;
scanf("%d",&n);
int a[n][n];
for ( i=0; i<n; i++){ //输入并求和
for ( t=0; t<n; t++){
scanf ("%d",&a[i][t]);
if ( i!=n-1 && t!=n-1 && i+j!=n-1) //i==n-1是最后一行,t==n-1是最后一列,i+j==n-1是右对角线
sum += a[i][t];
}
}
printf("%d\n", sum);
return 0 ;
}