C语言 计算行列式
#include <stdio.h>
#define N 100
void translate(float arr[N][N], int len);
void display(float arr[N][N], int len);
int main(void)
{
int len;
int i, j;
float arr[N][N], val = 1;
printf("Enter the length of determinant: ");
scanf("%d", &len);
printf("\nEnter the elements of the determinant:\n");
for (i = 0; i < len; i++)
{
for (j = 0; j < len; j++)
{
scanf("%f", &arr[i][j]);
}
}
translate(arr, len);
display(arr, len);
for (i = 0; i < len; i++)
{
val *= arr[i][i];
}
printf("The value of determinant is %.2f.\n", val);
return 0;
}
void translate(float arr[N][N], int len)
{
int i, j, k, factor = 1;
int index, temp;
for (i = 0; i < len; i++)
{
for (j = 0; j < len; j++)
{
if (arr[j][i] != 0.0f)
{
index = j;
goto E;
}
}
}
E:
if (index != 0)
{
factor *= -1;
for (i = 0; i < len; i++)
{
temp = arr[0][i];
arr[0][i] = arr[index][i];
arr[index][i] = temp;
}
}
for (i = 0; i < len - 1; i++)
{
for (j = i + 1; j < len; j++)
{
temp = arr[j][i];
for (k = i; k < len; k++)
{
arr[j][k] = arr[j][k] * arr[i][i] - arr[i][k] * temp;
}
}
}
for (i = 0; i < len; i++)
{
for (j = 0; j < len; j++)
{
arr[i][j] *= factor;
}
}
}
void display(float arr[N][N], int len)
{
int i, j;
for (i = 0; i < len; i++)
{
for (j = 0; j < len; j++)
{
printf("%.2f\t", arr[i][j]);
}
putchar('\n');
}
}