有没有友友帮忙看一下这个计算行列式的代码哪里有问题,真的写不出了
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <malloc.h>
double det1(int arr[10][10], int n)
{
int sight = 1; double sum = 0; double s = 0; int p = -1; int arr2[10][10] = { 0 }; /*int* arr2 = (int*)malloc(sizeof(int) * n * n);*/
if (n == 1)
return arr[0][0];
else if (n == 2)
return arr[0][0] * arr[1][1] - arr[0][1] * arr[1][0];
else
{
int i = 0; int a = 0, b = 0;
for (i = 0; i < n; i++)
{
int k = 0; int l = 0;
for (l = 1; l < n; l++)
{
for (k = 0; k < n; k++)
{
if (k == l)
continue;
else
arr2[a][b] = arr[l][k]; b++;
}
a++;
}
s += sight * arr[0][i] * det1(arr2, n - 1); sight = -sight;
}
sum += s;
}
return sum;
}
int main()
{
int i = 0; int k = 0; int n = 0;int arr[10][10] = { 0 };
printf("请输入行列式阶数:");
scanf("%d", &n);
/*int* arr = (int*)malloc(sizeof(int) * n * n);
if (arr == NULL)
{
printf("NULL");
return 0;
}*/
if (n > 10)
return 0;
else
{
printf("请输入数据:");
for (i = 0; i < n; i++)
for (k = 0; k < n; k++)
{
scanf("%d", arr + i * n + k);
}
int p = 0;
}
double sum = det1(arr, n);
/*free(arr); arr = NULL;*/
printf("sum=%lf", sum);
return 0;
}