c语言计算行列式值得函数 c语言行列式求值函数

C语言 计算行列式

#include stdio.h

站在用户的角度思考问题,与客户深入沟通,找到靖宇网站设计与靖宇网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都做网站、成都网站设计、企业官网、英文网站、手机端网站、网站推广、申请域名雅安服务器托管、企业邮箱。业务覆盖靖宇地区。

#include stdlib.h

void fun3(float *,int);

float fun4(float *,int);

void main()

{

int i,j,n;

float *a,answer;

for(i=0;i3;i++)

printf("-----------------------------------------------------------------------------\n");

printf(" 欢迎进入*雒森*行列式计算程序,请准确输入以便我为您正确计算! \n");

for(i=0;i3;i++)

printf("-----------------------------------------------------------------------------\n");

do

{

printf("请输入您要计算的行列式的行数或列数n(n1):");

scanf("%d",n);

}while(n2);

a=(float *)malloc(n*n*sizeof(float));

for(i=0;in;i++)

{

printf("请输入您要计算的行列式的:\n");

for(j=0;jn;j++)

{

printf("第%d行%d列:",i+1,j+1);

scanf("%f",a[i*n+j]);

}

}

fun3(a,n);

answer=fun4(a,n);

printf("您要计算的行列式的值为:%.3f\n\n\n",answer);

for(i=0;i3;i++)

printf("-----------------------------------------------------------------------------\n");

printf(" 欢迎进入*雒森*行列式计算程序,请准确输入以便我为您正确计算! \n");

for(i=0;i3;i++)

printf("-----------------------------------------------------------------------------\n");

}

void fun3(float a[],int n)

{

int i,j,d,f;

float m=1,w;

for(j=0;jn;j++)

{

for(i=0;in;i++)

{

if(a[j*n+j]==0)

{

for(d=j+1;dn;d++)

{

if(a[d*n+j]!=0)

break;

}

for(f=j;fn;f++)

a[j*n+f]+=a[d*n+f]*m;

}

if(i!=j)

{

w=-(a[i*n+j]/a[j*n+j]);

for(f=j;fn;f++)

a[i*n+f]+=a[j*n+f]*w;

}

}

}

}

float fun4(float a[],int n)

{

int i;

float answer=1;

for(i=0;in;i++)

answer*=a[i*n+i];

return answer;

}

行列式求值--C语言

#includestdio.h

#includestdlib.h

void main()

{

float f(float *a,int n);

int i,j,n;

scanf("%d",n);

float *a=(float *)malloc(n*sizeof(float));

for(i=0;in;i++)

for(j=0;jn;j++)

scanf("%f",a+i*n+j);

printf("行列式如下:\n");

for(i=0;in;i++)

{

for(j=0;jn;j++)

printf("%-5.2f ",*(a+i*n+j));

printf("\n");

}

printf("%-8.2f\n",f(a,n));

}

float f(float *a,int n)

{

int i,j,k,p=1;

float *b=(float *)malloc(n*n*sizeof(float));

for(i=0;in;i++)

for(j=0;jn;j++)

*(b+i*n+j)=0;

float s=0;

if(n==1)

return *a;

if(n==2)

return *a**(a+n+1)-*(a+1)**(a+n);

else

for(i=0;in;i++)

{

for(j=0;jn-1;j++)

for(k=0;kn-1;k++)

if(k=i)

*(b+n*j+k)=*(a+n*j+k+1);

else

*(b+n*j+k)=*(a+n*j+k);

s+=p**(a+n*(n-1)+i)*f(b,n-1);

p*=-1;

}

return s;

}

C语言求行列式的值

C语言程序如下:

#include stdio.h

#include math.h

#define MAX 100

double D(double arr[][MAX], int n);

void Display(double arr[][MAX], int n);

void main()

{

double arr[MAX][MAX];

double bak[MAX][MAX];

double value;

int n;

int i, j, k, c;

printf("Please enter matrix size n(1=n20):");

scanf("%d", n);

printf("Please input matrix line by line:\n");

for(i=0; in; i++)

{

for(j=0; jn; j++)

{

scanf("%lf", arr[i][j]);

}

}

printf("matrix a:\n");

Display(arr, n);

/* 保存D(0,i)的值到bak中 */

for(i=0; in; i++) /* 处理第1行的每一列元素 */

{

for(j=1; jn; j++) /* 逐行处理 */

{

for(c=0,k=0; kn; k++) /* 逐列处理 */

{

if(k == i)

{

continue;

}

bak[j-1][c++] = arr[j][k];

}

}

value = D(bak, n-1);

printf("Submatrix:\n");

Display(bak, n-1);

printf("DValue of the Submatrix is   %f\n", D(bak, n-1));

}

value = D(arr, n);

printf("result = %f\n", value);

}

double D(double arr[][MAX], int n)

{

double bak[MAX][MAX];

int i, j, k, c, d;

double sum = 0;

if(n == 1)

{

return arr[0][0];

}

for(i=0; in; i++) /* 处理第1行的每一列元素 */

{

for(j=1; jn; j++) /* 逐行处理 */

{

for(c=0,k=0; kn; k++) /* 逐列处理 */

{

if(k == i)

{

continue;

}

bak[j-1][c++] = arr[j][k];

}

}

/* 计算arr(row, col) * D(row, col)的值 */

sum += (i % 2 == 0 ? 1 : -1) * arr[0][i] * D(bak, n-1);

}

return sum;

}

void Display(double arr[][MAX], int n)

{

int i, j;

printf("");

for(i=0; in; i++)

{

for(j=0; jn; j++)

{

printf("%10.1lf", arr[i][j]);

}

printf("\n");

}

}

运行测试:

如何用c语言来求一个四阶行列式的值

用递归写了一个求n阶行列式的算法。用4阶行列式举例:

1 2 3 4

5 6 7 8

4 3 2 1

8 7 6 5

为了方便计算,我没有用二维数组。

把矩阵用一维数组A存起来,并指出维数n。

第i行第j列的元素的下标是i*n+j

#include stdio.h

#include stdlib.h

//求余子式M的函数,参数是矩阵,维数,i行,j列

//比如M(A, 4, 0, 0)表示去掉第1列,第1列的元素后剩下的数组成一个数组

//6 7 8

//3 2 1

//7 6 5

//然后用A[i*n+j]和余子式的值相乘

int* M(int *A, int n, int i, int j)

{

int *B= (int*)malloc((n - 1)*sizeof(int));

int k = 0;

for (int k1 = 0; k1  n; ++k1)

{

if (k1 != i)

for (int k2 = 0; k2  n; ++k2)

if (k2 != j)

B[k++] = A[k1*n + k2];

}

return B;

}

int det(int A[], int n)

{

int sum = 0, N = n*n;

if (n == 1)

sum = A[0];

else

{

for (int i = 0; i  n; ++i)

{

int *tmp = M(A, n, i, 0);

int Aij = A[i*n]*det(tmp, n - 1);

if (i%2 != 0)

Aij = -Aij;

sum = sum + Aij;

}

}

return sum;

}

int main()

{

int A[]={2,1,3,-1,1,-5,1,1,2,3,2,2,0,-1,4,2};

printf("%d\n", det(A, 4));

return 0;

}

求行列式的值,用C语言怎么写啊?

行列式的值的源代码如下:

#include stdio.h

#include stdlib.h

void main()

{

int i,j,m,n,s,t,k=1;

double a[n][n],f=1,c,x,sn;

for (i=0;in;i++)

for (j=0;jn;j++)

scanf ("%lf",a[i][j]);

for (i=0,j=0;injn;i++,j++)

{

if (a[i][j]==0)

{

for (m=i;a[m][j]==0;m++);

if (m==n)

{

sn=0;

printf("deta=%lf\n",sn);

exit(0);

}

else

for (n=j;nn;n++)

{

c=a[i][n];

a[i][n]=a[m][n];

a[m][n]=c;

}

k*=(-1);

}

for (s=n-1;si;s--)

{

x=a[s][j];

for (t=j;tn;t++)

a[s][t]-=a[i][t]*(x/a[i][j]);

}

for (i=0;in;i++)

f*=a[i][i];

sn=k*f;

printf ("deta=%lf\n",sn);

}

扩展资料

1、每个C语言程序中main函数是有且只有一个。

2、C语言程序写完后,都是先编译,后连接,最后运行。(.c--.obj--.exe)这个过程中注意.c和.obj文件时无法运行的,只有.exe文件才可以运行


网站标题:c语言计算行列式值得函数 c语言行列式求值函数
当前地址:http://ybzwz.com/article/doojhjj.html