给定一个n×n的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。
输入格式:
输入第一行给出正整数n(1<n≤10);随后n行,每行给出n个整数,其间以空格分隔。
输出格式:
在一行中给出该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。
输入样例1:
4
2 3 4 1
5 6 1 1
7 1 8 1
1 1 1 1
输出样例1:
35
答案代码块
//本题思路,用二维数组表示矩阵。x,y表示最后一列与副对角线,对角线在换行时向前挪动一位。
#include <stdio.h>
#define MAXS 10
int main(){
int n,m,i,l;
int sum=0,x=0,y=0; //x为最后一列,y为主对角线
int s[MAXS][MAXS]; //二维数组
scanf("%d",&n);
if(n>1 && n<=10){ //输入范围
for(i=0;i<n;i++){
for(l=0;l<n;l++){
scanf("%d",&m); //二维数组输入
s[i][l] = m;
}
}
}else{
return 0;
}
x=y=n-1; //讲x,y设置在最后一位
for(i=0;i<n-1;i++){ //n-1跳过最后一行
for(l=0;l<n;l++){
if(l==x){ //当前位置在最后一列时跳过本次循环
continue;
}else if(l==y){ //当前位置在主对角线时跳过本次循环
continue;
}
sum += s[i][l]; //求和
}
y--; //换行前将y的位置向前挪动一位
}
printf("%d",sum);
return 0;
}