编写一个程序,使用二维数组存储一个 3x3 的矩阵,并计算并输出矩阵的对角线元素之和。C语言
时间: 2024-10-24 18:16:25 浏览: 59
在C语言中,你可以创建一个3x3的二维数组,初始化矩阵,然后计算并对角线元素求和。以下是相关的代码示例:
```c
#include <stdio.h>
#define ROWS 3
#define COLS 3
int main() {
int matrix[ROWS][COLS] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9} // 你可以根据需要填充其他值
};
int sum_diagonal1 = 0; // 对左上到右下的对角线求和
int sum_diagonal2 = 0; // 对左下到右上的对角线求和
for (int i = 0; i < ROWS && i < COLS; i++) {
sum_diagonal1 += matrix[i][i]; // 计算主对角线
sum_diagonal2 += matrix[i][ROWS-i-1]; // 计算副对角线
}
printf("主对角线元素之和: %d\n", sum_diagonal1);
printf("副对角线元素之和: %d\n", sum_diagonal2);
return 0;
}
```
在这段代码中,我们首先定义了一个3x3的二维数组`matrix`,然后通过两个嵌套循环分别计算了主对角线(从左上到右下)和副对角线(从左下到右上)的元素之和。最后,我们打印出这两个对角线的和。
相关问题
java实现定义一个二维数组用于存储一个矩阵的元素值,并求出矩阵的两条对角线元素之和,然后输出计算结果。
在Java中,你可以通过创建一个二维数组来表示矩阵,并使用嵌套循环来遍历矩阵。下面是一个简单的示例代码,演示如何定义数组、计算对角线元素之和并输出结果:
```java
public class Main {
public static void main(String[] args) {
int[][] matrix = new int[3][3]; // 定义一个3x3的二维数组
matrix[0][0] = 1;
matrix[0][1] = 2;
matrix[0][2] = 3;
matrix[1][0] = 4;
matrix[1][1] = 5;
matrix[1][2] = 6;
matrix[2][0] = 7;
matrix[2][1] = 8;
matrix[2][2] = 9;
// 计算主对角线(从左上到右下)的元素之和
int diagonalSum1 = getDiagonalSum(matrix, true);
// 计算副对角线(从右上到左下)的元素之和
int diagonalSum2 = getDiagonalSum(matrix, false);
// 输出结果
System.out.println("主对角线元素之和: " + diagonalSum1);
System.out.println("副对角线元素之和: " + diagonalSum2);
}
// 辅助函数,计算指定方向的对角线元素之和
private static int getDiagonalSum(int[][] matrix, boolean isMain) {
int sum = 0;
for (int i = 0; i < matrix.length; i++) {
if (isMain && i == i || !isMain && i == matrix.length - 1 - i) { // 对于主对角线,i=i;对于副对角线,i=matrix.length-i-1
sum += matrix[i][i];
}
}
return sum;
}
}
```
在这个例子中,`getDiagonalSum`函数接受一个二维数组和一个布尔值,指示是否计算主对角线。当你运行这个程序,它会输出两条对角线元素的总和。
将3x3阶二维数组的关于主对角线对称的五元素互换二维数组的第1至3行元素分别为123456789用矩阵形式分别输出互换前后的数组元素值。C语言
在C语言中,我们可以创建两个3x3的二维数组,并实现函数来交换关于主对角线对称的五个元素。假设原始数组是这样的:
```c
int original[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
```
要交换主对角线对称的元素,即1、5和9,可以先将它们临时存储到其他变量中,然后更新相应的位置。交换后的数组会变成:
```c
int swapped[3][3] = {
{9, 2, 3},
{4, 5, 1},
{7, 8, 6}
};
```
现在我们来编写一个简单的C程序,包含这两个过程:
```c
#include <stdio.h>
// 函数声明
void swapDiagonalSymmetry(int matrix[3][3], int i, int j);
int main() {
// 原始数组
int original[3][3] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
// 输出原始数组
printf("Original array:\n");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", original[i][j]);
}
printf("\n");
}
// 调用函数交换元素
swapDiagonalSymmetry(original, 0, 2); // 对角线上下索引差1
// 输出交换后的数组
printf("Swapped array:\n");
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", original[i][j]);
}
printf("\n");
}
return 0;
}
// 函数实现
void swapDiagonalSymmetry(int matrix[3][3], int i, int j) {
int temp = matrix[i][j]; // 存储对角线元素
matrix[i][j] = matrix[j][i]; // 交换1和9
matrix[j][i] = temp; // 再次交换回去恢复对角线元素
}
```
运行这个程序,你会看到原始数组和交换后的数组。
阅读全文