给定二阶方阵A,设计c语言程序输出A的n次方、
时间: 2024-09-15 14:04:16 浏览: 44
C语言程序设计练习题-程序填空.doc
在C语言中,设计一个函数来计算给定二维数组(二阶矩阵)A的n次方,通常可以使用递归或迭代的方式来实现矩阵乘法,因为计算幂涉及到多次矩阵相乘的过程。这里给出一个简单的迭代方法(也称为分治法),用于计算n步幂:
```c
#include <stdio.h>
// 定义矩阵的结构体
typedef struct {
int a[2][2]; // 二维数组表示2x2矩阵
} Matrix;
// 矩阵乘法的辅助函数
Matrix multiply(Matrix a, Matrix b) {
Matrix result;
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 2; ++j) {
result.a[i][j] = 0;
for (int k = 0; k < 2; ++k) {
result.a[i][j] += a.a[i][k] * b.a[k][j];
}
}
}
return result;
}
// 计算矩阵n次方
Matrix matrix_power(Matrix A, int n) {
Matrix res = { {A.a[0][0], A.a[0][1]}, {A.a[1][0], A.a[1][1]} }; // 初始化单位矩阵
while (n > 0) {
if (n % 2 == 1) {
res = multiply(res, A); // 如果n是奇数,左移一位,相当于多乘一次A
}
A = multiply(A, A); // 双倍n的值,相当于自乘
n /= 2; // n变为原来的一半
}
return res;
}
// 打印矩阵
void print_matrix(Matrix mat) {
for (int i = 0; i < 2; ++i) {
for (int j = 0; j < 2; ++j) {
printf("%d ", mat.a[i][j]);
}
printf("\n");
}
}
int main() {
Matrix A = { {1, 2}, {3, 4} }; // 示例矩阵
int n = 3; // 要求的幂次
// 计算并打印A的n次方
Matrix result = matrix_power(A, n);
printf("A的%d次方为:\n", n);
print_matrix(result);
return 0;
}
```
阅读全文