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("欢迎进入*雒森*行列式计算程序,请准确输入以便c语言函数计算行列式我为您正确计算!\n");
for(i=0;i3;i)
printf("-----------------------------------------------------------------------------\n");
do
{
printf("请输入您要计算c语言函数计算行列式的行列式c语言函数计算行列式的行数或列数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)
{
【c语言函数计算行列式 c 求行列式】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语言求行列式的值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 = 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行的每一列元素 */
{
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(".1lf", arr[i][j]);
}
printf("\n");
}
}
运行测试:
求行列式的值,用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#写过计算行列式值的winform程序,不过算法应该一样,你可以看看
//按钮事件
private void btnResult_Click(object sender, EventArgs e)
{
string sInfo = txtInfo.Text.Trim();
string[] R = sInfo.Replace("\r\n", "※").Split('※');
int n = R.Length;//维数
string[,] A=new string[n,n];
for (int i = 0; in; i)
{
for (int j = 0; jn; j)
{
string[] C=R[i].Split(' ');
if (C.Length != n)
{
MessageBox.Show("请输入n阶行列式");
return;
}
A[i, j] = C[j];
}
}
try
{
lblResult.Text = DGRowLayout(A).ToString();
}
catch
{
MessageBox.Show("本程序只支持一般的数字形式,不支持特殊的数字形式");
return;
}
}
//递归算法
private double DGRowLayout(string[,] A)
{
if (A.Length == 1)
{
return double.Parse(A[0, 0]);
}
double s=0;
int m=0,n=0;
int N = int.Parse(Math.Sqrt(A.Length).ToString());
for (int i = 0; iN; i)
{
string[,] B = new string[N - 1, N - 1];
m = 0;
for (int j = 1; jN; j)
{
n=0;
for (int k = 0; kN; k)
{
if (k != i)
{
B[m, n] = A[j, k];
n;
}
}
m;
}
int O = 0;
if (i % 2 == 0)
{
O = 1;
}
else
{
O = -1;
}
s= double.Parse(A[0, i]) * O * DGRowLayout(B);
}
return s;
}
c语言函数计算行列式的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c求行列式、c语言函数计算行列式的信息别忘了在本站进行查找喔 。

    推荐阅读