用c语言定义一个3*3的矩阵,要求实现读入矩阵、输出矩阵、矩阵转置、输出矩阵主对角线之和,所有功能均采用子函数实现
时间: 2024-12-24 20:37:01 浏览: 12
在C语言中,你可以使用结构体来定义一个3x3的矩阵,并创建几个函数分别实现输入、输出、转置以及计算主对角线和的功能。首先,我们定义一个结构体表示矩阵:
```c
typedef struct {
int data[3][3];
} Matrix;
```
接下来,我们编写一些辅助函数:
1. **读入矩阵** (`input_matrix(Matrix *matrix)`):
```c
void input_matrix(Matrix *matrix) {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("请输入第%d行第%d列的元素: ", i + 1, j + 1);
scanf("%d", &matrix->data[i][j]);
}
}
}
```
2. **输出矩阵** (`output_matrix(const Matrix *matrix)`):
```c
void output_matrix(const Matrix *matrix) {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("%4d ", matrix->data[i][j]);
}
printf("\n");
}
}
```
3. **矩阵转置** (`transpose(Matrix *matrix)`):
```c
void transpose(Matrix *matrix) {
int transposed_data[3][3];
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
transposed_data[j][i] = matrix->data[i][j];
}
}
memcpy(matrix->data, transposed_data, sizeof(matrix->data));
}
```
4. **计算主对角线和** (`main_diagonal_sum(Matrix *matrix)`):
```c
int main_diagonal_sum(const Matrix *matrix) {
int sum = 0;
for (int i = 0; i < 3; i++) {
sum += matrix->data[i][i];
}
return sum;
}
```
最后,在`main()`函数中使用这些子函数:
```c
int main() {
Matrix matrix;
input_matrix(&matrix);
output_matrix(&matrix);
transpose(&matrix);
printf("主对角线和: %d\n", main_diagonal_sum(&matrix));
return 0;
}
```
阅读全文