输入一个n阶矩阵,求它的m次方
例如输入4阶矩阵的2次方
4 2
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
输出
代码:
#include <stdio.h>
#include <string.h>
#define N 100
int A[N][N], t[N][N], r[N][N];
int main()
{
int n, m, i, j, k;
scanf_s("%d%d", &n, &m);//输入矩阵的阶数和幂次数
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
scanf_s("%d", &A[i][j]);//输入矩阵
for (i = 0; i < n; i++)
r[i][i] = 1;
while (m--)
{
memset(t, 0, sizeof(t));//memset函数为清零内存 ,有三个参数,数组名,0,和字节长度,
//所以sizeof函数为读取t数组的长度 ,如果不清空内存,可能会在计算当中出现野值
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
for (k = 0; k < n; k++)
t[i][j] += r[i][k] * A[k][j];//按照矩阵相乘的运算法则进行运算
for (i = 0; i < n; i++)
for (j = 0; j < n; j++)
r[i][j] = t[i][j];
}
for (i = 0; i < n; i++)
{
for (j = 0; j < n - 1; j++)
printf("%d ", r[i][j]);
printf("%d\n", r[i][j]);
} //输出矩阵
return 0;
}