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语言怎么写啊?行列式的值的源代码如下:
#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;
【c语言计算行列式值得函数 行列式计算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语言程序如下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)c语言计算行列式值得函数的值到bak中 */
for(i=0; in; i)/* 处理第1行c语言计算行列式值得函数的每一列元素 */
{
for(j=1; jn; j)/* 逐行处理 */
{
for(c=0,k=0; kn; k) /* 逐列处理 */
{
if(k == i)
{
continue;
}
bak[j-1][c] = arr[j][k];
}
}
value = https://www.04ip.com/post/D(bak, n-1);
printf("Submatrix:\n");
Display(bak, n-1);
printf("DValue of the Submatrix is%f\n", D(bak, n-1));
}
value = https://www.04ip.com/post/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行c语言计算行列式值得函数的每一列元素 */
{
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)c语言计算行列式值得函数的值 */
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(".1lf", arr[i][j]);
}
printf("\n");
}
}
运行测试:
如何用c语言来求一个四阶行列式的值用递归写c语言计算行列式值得函数了一个求n阶行列式的算法 。用4阶行列式举例:
1 2 3 4
5 6 7 8
4 3 2 1
8 7 6 5
为c语言计算行列式值得函数了方便计算c语言计算行列式值得函数,我没有用二维数组 。
把矩阵用一维数组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; k1n;k1)
{
if (k1 != i)
for (int k2 = 0; k2n;k2)
if (k2 != j)
B[k] = A[k1*nk2];
}
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; in;i)
{
int *tmp = M(A, n, i, 0);
int Aij = A[i*n]*det(tmp, n - 1);
if (i%2 != 0)
Aij = -Aij;
sum = sumAij;
}
}
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语言计算行列式值得函数和行列式计算c语言程序设计的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读