酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

给定一个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

以下是 `summatrix` 函数的实现代码: ```c int summatrix(int (*a)[n],int 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 - 1 - i]; } // 注意,如果方阵阶数为奇数,中心元素被重复计算,需要减去一次 if (n % 2 == 1) { sum -= a[n / 2][n / 2]; } return sum; } ``` 额外需要注意的逻辑点: 1. 对于奇数阶方阵,要处理好中心元素重复计算的情况。 2. 注意循环边界条件,确保不越界访问数组元素。 3. 考虑输入的矩阵元素可能为负数的情况。 [2024-12-12 18:14:01 | AI写代码神器 | 238点数解答]

相关提问