求一个3×3矩阵两条对角线上元素之和(中心元素只加一次)。 函数接口定义: int fun(int a[N][N]); 其中a是用户传入的参数,函数fun求a数组的两条对角线上元素之和并返回。 裁判测试程序样例: #include <stdio.h> #define N 3 int fun(int a[N][N]); int main() { int a[N][N],i,j,s; for(i=0;i<N;i++) {for(j=0;j<N;j++) {scanf("%d", &a[i][j]); printf("%5d",a[i][j]); } printf("\n"); } s=fun(a); printf("%4d\n",s); return 0; } C语言
时间: 2023-12-03 11:45:58 浏览: 37
题目分析:题目要求两条对角线上元素之和,中心元素只加一次,那么我们需要分别计算两条对角线上的元素之和,最后再减去重复计算的中心元素即可。
函数实现如下:
```c
int fun(int a[N][N]) {
int sum = 0;
// 计算左上到右下的对角线元素之和
for (int i = 0; i < N; i++) {
sum += a[i][i];
}
// 计算左下到右上的对角线元素之和
for (int i = 0; i < N; i++) {
sum += a[i][N - i - 1];
}
// 减去重复计算的中心元素
sum -= a[N/2][N/2];
return sum;
}
```
完整代码如下:
```c
#include <stdio.h>
#define N 3
int fun(int a[N][N]);
int main() {
int a[N][N], i, j, s;
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
scanf("%d", &a[i][j]);
printf("%5d", a[i][j]);
}
printf("\n");
}
s = fun(a);
printf("%4d\n", s);
return 0;
}
int fun(int a[N][N]) {
int sum = 0;
// 计算左上到右下的对角线元素之和
for (int i = 0; i < N; i++) {
sum += a[i][i];
}
// 计算左下到右上的对角线元素之和
for (int i = 0; i < N; i++) {
sum += a[i][N - i - 1];
}
// 减去重复计算的中心元素
sum -= a[N/2][N/2];
return sum;
}
```