给定一个10×10的方阵,本题要求计算该方阵除对主角线和副对角线以外的所有元素之和。主对角线为从方阵的左上角至右下角的连线,副对角线为从方阵的右上到左下角的连线。
要求:
编写函数按照题意计算元素之和。
函数接口定义:
int sumMatrix(int (*a)[10]);
指针a
指向了一个10×10的方阵
裁判测试程序样例:
#include<stdio.h> #define N 10 /* 请在这里填写答案 */ void createMatrix(int (*a)[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; }
输入样例:
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
输出样例:
440
代码:
int sumMatrix(int (*a)[10])
{
int sum = 0,res = 0;
int i, k;
for (i = 0; i < 10; i++)
for (k = 0; k < 10; k++)
res+=a[i][k];
for (i = 0; i < 10; i++)
{
for (k = 0; k < 10; k++)
{
if (i==k||k==9-i)
{
sum += a[i][k];
}
}
}
return res-sum;
}