⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 matrix.txt

📁 用C语言实现数组和矩阵
💻 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 + -