C語言 計(jì)算行列式
#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');
? ? }
}