用C语言写一个包含顺序结构、选择分支结构、循环结构、数组、函数、指针和结构体的关于矩阵的程序
时间: 2023-08-14 16:05:47 浏览: 62
以下是一个C语言的关于矩阵的程序,包含了顺序结构、选择分支结构、循环结构、数组、函数、指针和结构体:
```c
#include <stdio.h>
// 定义结构体表示矩阵
typedef struct {
int rows;
int cols;
int data[10][10];
} Matrix;
// 函数声明
void printMatrix(Matrix *matrix);
void addMatrix(Matrix *matrix1, Matrix *matrix2, Matrix *result);
void multiplyMatrix(Matrix *matrix1, Matrix *matrix2, Matrix *result);
int main() {
// 创建两个矩阵
Matrix matrix1 = {3, 3, {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}};
Matrix matrix2 = {3, 3, {{9, 8, 7}, {6, 5, 4}, {3, 2, 1}}};
Matrix result;
// 打印矩阵
printf("Matrix1:\n");
printMatrix(&matrix1);
printf("Matrix2:\n");
printMatrix(&matrix2);
// 选择分支结构,让用户选择要执行的操作
int choice;
printf("\n请选择要执行的操作:\n");
printf("1. 矩阵相加\n");
printf("2. 矩阵相乘\n");
scanf("%d", &choice);
switch (choice) {
case 1:
// 调用函数进行矩阵相加
printf("\n矩阵相加结果为:\n");
addMatrix(&matrix1, &matrix2, &result);
printMatrix(&result);
break;
case 2:
// 调用函数进行矩阵相乘
printf("\n矩阵相乘结果为:\n");
multiplyMatrix(&matrix1, &matrix2, &result);
printMatrix(&result);
break;
default:
printf("无效的选择!\n");
break;
}
return 0;
}
// 打印矩阵
void printMatrix(Matrix *matrix) {
for (int i = 0; i < matrix->rows; i++) {
for (int j = 0; j < matrix->cols; j++) {
printf("%d ", matrix->data[i][j]);
}
printf("\n");
}
}
// 矩阵相加
void addMatrix(Matrix *matrix1, Matrix *matrix2, Matrix *result) {
if (matrix1->rows != matrix2->rows || matrix1->cols != matrix2->cols) {
printf("矩阵大小不一致,无法相加!\n");
return;
}
result->rows = matrix1->rows;
result->cols = matrix1->cols;
for (int i = 0; i < matrix1->rows; i++) {
for (int j = 0; j < matrix1->cols; j++) {
result->data[i][j] = matrix1->data[i][j] + matrix2->data[i][j];
}
}
}
// 矩阵相乘
void multiplyMatrix(Matrix *matrix1, Matrix *matrix2, Matrix *result) {
if (matrix1->cols != matrix2->rows) {
printf("矩阵无法相乘!\n");
return;
}
result->rows = matrix1->rows;
result->cols = matrix2->cols;
for (int i = 0; i < matrix1->rows; i++) {
for (int j = 0; j < matrix2->cols; j++) {
result->data[i][j] = 0;
for (int k = 0; k < matrix1->cols; k++) {
result->data[i][j] += matrix1->data[i][k] * matrix2->data[k][j];
}
}
}
}
```
这个程序实现了矩阵相加和矩阵相乘两种操作,用户可以通过选择来进行不同的操作。其中,使用了结构体来表示矩阵,使用了指针来传递参数和操作结构体中的数据。