献上我的代码
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n,sum=0;
int i,j;
scanf("%d",&n);
int s[n][n];
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
scanf("%d",&s[i][j]);
}
for(i=0;i<n;i++)
{
s[i][n-1]=0;//达到最后一行都为0
s[n-1][i]=0;//达到最右一列都为0
s[i][n-i-1]=0;//达到副对角线
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
sum+=s[i][j];
}
printf("%d",sum);
return 0;
}
给定一个n×n的方阵,本题要求计算该矩阵除副对角线、最后一列和最后一行以外的所有元素之和。副对角线为从矩阵的右上角至左下角的连线。
这题怎么说呢,比起去加副对角线、最后一列和最后一行以外的所有元素之和,我认为最简洁的办法是把他们直接赋值为0,然后再循环嵌套把所有s的元素相加。
这也算是一种逆向思维吧,我先前也考虑过去按题目条件来按部就班,但有些繁杂。这题是比较基础的题,然后后面我有想去按部就班的写到时候会更新这篇文章;
如果有帮到你,那么非常荣幸