用C语言求二阶矩阵的n次方 5
1个回答
展开全部
#include<stdio.h>
int main(int argc,char* argv[]){
int n;
int A[4],B[4];
scanf("%d",&n);
scanf("%d %d %d %d",&A[0],&A[1],&A[2],&A[3]);
void MatMultiply(int &B[4],int A[4]);
for(int i=0;i<4;i++)B[i]=A[i];
if(n<1){printf("error\n") ;return;}
else if(n==1)
else{
for(int i=0;i<n-1;i++)MatMultiply(B,A);
}
printf("%d %d \n %d %d \n",B[0],B[1],B[2],B[3]);
return 0;
}
void MatMultiply(int &B[4],int A[4]){
int C[4];
for(int i=0;i<2;i++)
for(int j=0;j<2;j++){
int temp=0;
for(int k=0;k<2;k++)temp+=A[i*2+k]*B[k*2+j];
C[i*2+j]=temp;
}
for(int i=0;i<4;i++)B[i]=C[i];
}
int main(int argc,char* argv[]){
int n;
int A[4],B[4];
scanf("%d",&n);
scanf("%d %d %d %d",&A[0],&A[1],&A[2],&A[3]);
void MatMultiply(int &B[4],int A[4]);
for(int i=0;i<4;i++)B[i]=A[i];
if(n<1){printf("error\n") ;return;}
else if(n==1)
else{
for(int i=0;i<n-1;i++)MatMultiply(B,A);
}
printf("%d %d \n %d %d \n",B[0],B[1],B[2],B[3]);
return 0;
}
void MatMultiply(int &B[4],int A[4]){
int C[4];
for(int i=0;i<2;i++)
for(int j=0;j<2;j++){
int temp=0;
for(int k=0;k<2;k++)temp+=A[i*2+k]*B[k*2+j];
C[i*2+j]=temp;
}
for(int i=0;i<4;i++)B[i]=C[i];
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询