C语言求矩阵的乘法!!!!!!!!!
有没有一种 我输入N,程序就求出矩阵M的N次方的程序????我自己写了一个,多一次方就多一个for循环,理论上何以求到N次,但是觉得不够简洁。。。。。。。程序代码:
#include<stdio.h> #include<conio.h> void main(void){ int M[5][5],Mk[5][5],MKK[5][5],MKKK[5][5],i,j,p; M[0][0]=0;M[0][1]=0;M[0][2]=0;M[0][3]=0;M[0][4]=1; M[1][0]=1;M[1][1]=0;M[1][2]=1;M[1][3]=0;M[1][4]=0; M[2][0]=0;M[2][1]=0;M[2][2]=0;M[2][3]=0;M[2][4]=1; M[3][0]=1;M[3][1]=0;M[3][2]=1;M[3][3]=0;M[3][4]=0; M[4][0]=0;M[4][1]=1;M[4][2]=0;M[4][3]=1;M[4][4]=0; for(i=0;i<5;i++){ for(j=0;j<5;j++){Mk[i][j]=0; for( p=0;p<5;p++) Mk[i][j]=Mk[i][j]+M[i][p]*M[p][j]; } } for(i=0;i<5;i++){ for(j=0;j<5;j++){MKK[i][j]=0; for( p=0;p<5;p++) MKK[i][j]=MKK[i][j]+Mk[i][p]*M[p][j]; } } for(i=0;i<5;i++){ for(j=0;j<5;j++){MKKK[i][j]=0; for( p=0;p<5;p++) MKKK[i][j]=MKKK[i][j]+MKK[i][p]*M[p][j]; } } for(i=0;i<5;i++){ for(j=0;j<5;j++) printf("%8d",MKKK[i][j]); printf("\n");} getch(); }