给定一个n×n的方阵(1⩽n⩽10),本题要求计算该方阵主对角线和副对角线所有元素之和。主对角线为从方阵的左上角至右下角的连线,副对角线为从方阵的右上到左下角的连线。
要求:
编写函数按照题意计算元素之和。
函数接口定义:
int sumMatrix(int (*a)[N],int n);
指针a
指向了一个10×10的方阵,n
为a指向的矩阵的阶数
裁判测试程序样例:
#include<stdio.h>
#define N 10
void createMatrix(int (*a)[N],int n)
{
for(int i=0; i<n; i++)
{ for(int j=0; j<n; j++)
{ scanf("%d",&a[i][j]);
}
}
} /* 请在这里填写答案 */
int main()
{ int a[N][N];
createMatrix(a);
printf("%d\n",sumMatrix(a)); return 0; }
输入格式:
在第一行给出方阵的阶数n,随后给出n行数,每行n个数,表示方阵中的元素。
输出格式:
输出求和结果
输入样例:
10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10
输出样例:
110
解答样例
int sumMatrix(int (*a)[N],int n){
int i,j,sum=0;
for(i=0;i<n;i++){
for(j=0;j<n;j++){
if(i+j==n-1||i==j){
sum+=a[i][j];
}
}
}
return sum;
}