C语言二级二维数组实现主对角线乘二次对角线乘3且用指针放到新的数组中
时间: 2025-06-26 08:08:57 浏览: 8
好的,下面是一个关于如何通过C语言的二级二维数组实现“主对角线元素相乘、次对角线元素相乘,并将结果分别乘以2和3”的示例程序,同时利用指针将其存储到新数组中。
### 实现思路
1. **定义二维数组**:首先需要一个二维数组作为输入数据源。
2. **获取主对角线和次对角线元素**:
- 主对角线是指行下标等于列下标的元素(如 `arr[i][i]`)。
- 次对角线是指行下标加列下标等于矩阵维度减一的元素(如 `arr[i][n-i-1]`),其中 `n` 是矩阵维数。
3. **计算并存入新数组**:创建一个新的数组用于存放结果值,用指针访问内存地址完成赋值操作。
以下是完整的代码及解释:
```c
#include <stdio.h>
void diagonalOperations(int arr[][4], int n, int *result) {
// 初始化两个变量保存主对角线和次对角线的结果
int primaryDiagonal = 1;
int secondaryDiagonal = 1;
for (int i = 0; i < n; i++) {
// 计算主对角线积
primaryDiagonal *= arr[i][i];
// 计算次对角线积
secondaryDiagonal *= arr[i][n - i - 1];
}
// 将结果放入由指针指向的新数组
*(result + 0) = primaryDiagonal * 2; // 主对角线 × 2 存放至 result[0]
*(result + 1) = secondaryDiagonal * 3; // 次对角线 × 3 存放至 result[1]
}
int main() {
int matrix[4][4] = { // 示例矩阵
{1, 2, 3, 4},
{5, 6, 7, 8},
{9, 10, 11, 12},
{13, 14, 15, 16}
};
int results[2]; // 创建新数组用于存放最终结果
diagonalOperations(matrix, 4, results);
printf("主对角线元素之积×2=%d\n", results[0]);
printf("次对角线元素之积×3=%d\n", results[1]);
return 0;
}
```
#### 程序说明
1. 定义了函数 `diagonalOperations()` 来处理具体的运算逻辑,它接收原数组、尺寸以及目标指针作为参数。
2. 使用循环提取出主对角线和次对角线的所有元素,并依次累乘得到它们各自的总积。
3. 结果会通过指针传递给外部声明的新数组 `results[]` 中进行存储。
4. 最终打印这两个经过特殊倍率变换后的数值。
---
### 运行结果举例
如果按照上面给出的例子运行该程序,则其输出将是这样的形式:
```
主对角线元素之积×2=2112
次对角线元素之积×3=16380
```
这是因为在本例子中,主对角线上的数字分别是 `{1, 6, 11, 16}` (连乘为 `1*6*11*16 = 1056`, 再加倍即得 `2112`);而次对角线上有 `{4, 7, 10, 13}` (`4*7*10*13 = 3740`, 又因三倍故成 `16380`)。
---
阅读全文
相关推荐


















