📄 matrix.txt
字号:
/*------------------------这是一个用于计算行列式的值与两个矩阵的乘积的C语言程序-----------------------------*/
/* Note:Your choice is C IDE */
#include "stdlib.h"
#include "stdio.h"
float hlsdz();
void jzcf();
main()
{
int row1; /*先创立一个10行10列的数组*/
int col1; /*再通过行、列的限制来输入较小的矩阵*/
int row2;
int col2;
int a[10][10];
int b[10][10];
int c[10][10];
int i,j;
printf("now scanf the rows and the cols : \n ");
scanf("%2d%2d%2d%2d",&row1,&row2,&col1,&col2); /*这里输入行、列的限制*/
printf ("row1 = %d,row2=%d,col1=%d,col2=%d\n",row1,row2,col1,col2); /*输出验证*/
for(i=0;i<row1;i++) /*用循环的方法来输入第一个ROW1行、COL1列的矩阵*/
{
for (j=0;j<col1;j++)
{
printf(" matrix2 now print the numbers : \n -----i=%d,j=%d\n",i,j);
scanf ("%d",&a[i][j]);
}
}
for(i=0;i<row2;i++) /*用循环的方法来输入第一个ROW2行、COL2列的矩阵*/
{
for (j=0;j<col2;j++)
{
printf(" matrix1 now print the numbers : \n -----i=%d,j=%d\n",i,j);
scanf ("%d",&b[i][j]);
}
}
printf("\n");
for(i=0;i<row1;i++) /*用循环的方法来输出第一个ROW1行、COL1列的矩阵*/
{
for (j=0;j<col1;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
printf("\n");
for(i=0;i<row2;i++) /*用循环的方法来输出第二个ROW2行、COL2列的矩阵*/
{
for (j=0;j<col2;j++)
{
printf("%d ",a[i][j]);
}
printf("\n");
}
for(i=0;i<n;i++) /*用循环的方法来输入第一个n行、n列的行列式C[N][N]*/
{
for (j=0;j<n;j++)
{
printf(" hanglieshi in put now print the numbers : \n -----i=%d,j=%d\n",i,j);
scanf ("%d",&c[i][j]);
}
}
printf("\n");
for(i=0;i<n;i++) /*用循环的方法来输出第一个n行、n列的行列式*/
{
for (j=0;j<n;j++)
{
printf("%d ",c[i][j]);
}
printf("\n");
}
/*进入计算结果的阶段-----------------------用矩阵乘法JZCF()、和求行列式的值的HLSDZ()来分别计算*/
/*先计算两矩阵的积 */
printf("now see the result of jzcf()");
printf("\n");
printf("%d", jzcf(a[10][10],b[10][10]));
printf("\n");
/*再计算行列式的值*/
printf(" then see the result of hlsdz(a[][]) and hlsdz(b[][])\n");
printf("%d", hlsdz( int c[10][10],int n));
}
/*进入函数阶段*/
void jzcf(int x[10][10],int z[10][10])
{
int i,j,k;
int m,n;
int y[10][10];
for (i=0;i<10;i++)
{for (j=0;j<10;j++)
{for (k=0;j<10;k++)
y[i][j]+=x[i][k]*z[k][j];
}
}
printf(" \n");
for(m=0;m<10;m++)
{printf(" \n");
for(n=0;n<10;n++)
printf("%d ",y[m][n]);
}
}
/*另一个函数*/
float hlsdz(int a[10][10],int n )
{
int i,j;
char* temp;
int r,y;
int b[10][10];
if(n<1) /*消除错误的入口参数*/
printf("\n you put into the wring number ,please put it right \n");
else if (n==1)
return a[0][0]; /*这是递归结束的地方*/
else if (a[0][0]==0) /*以下通过替换使a[0][0]不为0*/
for (r=0;r<n;r++)
{if (a[r][1]==0)
continue;
else
break;
}
if (r==n)
return 0;
else
{
temp=a[0];
a[0]=a[r];
a[r]=temp;
}
free(temp);
if (a[0][0]!=0) /*降阶,N阶变为N-1阶*/
for (i=1;i<n;i++)
{
for (j=1;j<n;j++)
a[i-1][j-1]=(a[i][j])-(a[i][1])/(a[0][0]);
}
y=(a[0][0])*(hlsdz(a[10][10],(n-1))); /*递归开始的地方*/
return y; /*返回值*/
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -