c语言行列式求值函数 c++求行列式的值
行列式求值--C语言
#includestdio.h
琼海ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!
#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语言怎么写啊?
行列式的值的源代码如下:
#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语言程序如下:
#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语言行列式求值函数 c++求行列式的值
URL地址:http://cdiso.cn/article/docpcej.html