未解决的bug,希望解决(计算行列式)

来源:互联网 发布:淘宝买苹果手机靠谱吗 编辑:程序博客网 时间:2024/05/16 11:52
#include <stdio.h>#include <malloc.h>int** pArray(int**array, int m);int** inputArray(int **array, int m);int calMatrix(int** temp, int m);int main() {    //二维数组    int **temp=NULL;    int **array=NULL;    int m;    printf("please input the matrix order:\n");//输入矩阵阶数    scanf("%d",&m);    //申请空间    array = (int**)malloc(sizeof(int*)*m);    int i;    for (i = 0; i < m; i++) {        array[i] = (int*)malloc(sizeof(int)*m);    }    printf("input the array:\n");    inputArray(array,m);    printf("the array you input:\n");    pArray(array, m);    int result=calMatrix(array,m);    printf("\nresult=%d",result);}int** pArray(int **array,int m) {    //m*m阶矩阵    //输出矩阵    int i = 0;    int j = 0;    for (i = 0; i < m; i++) {        printf("||");//矩阵中括号        for (j = 0; j < m; j++) {            printf("%d\t",array[i][j]);        }        printf("||");        printf("\n");    }    return array;}int** inputArray(int** array, int m) {    int i = 0;int j = 0;    for (i = 0; i < m; i++) {        printf("||");        for (j = 0; j < m; j++) {            scanf("%d",&array[i][j]);        }        printf("||");        printf("\n");    }    return array;}int calMatrix(int** temp, int m) {    int value;    int i, j, k;    int **material;    int **out;    int row = 0;    int col = 0;    //申请material空间    material = (int**)malloc(sizeof(int*)*m);    for (i = 0; i < m; i++) {        material[i] = (int*)malloc(sizeof(int)*m);    }    //申请material空间结束    out = (int**)malloc(sizeof(int*)*(m - 1));    for (i = 0; i < m - 1; i++) {        out[i] = (int*)malloc(sizeof(int)*(m - 1));    }    for (i = 0; i < m; i++) {        for (j = 0; j < m; j++) {            material[i][j] = temp[i][j];        }    }    if (m == 1) {        return temp[0][0];    }    else {        for (i = 0; i < m; i++) {            //计算代数余子式开始            for (j = 0; j < m; j++) {                if (j == 0) {                    continue;                }                else {                    for (k = 0; k < m; k++) {                        if (k == i) {                            continue;                        }                        else {                            out[row][col] = material[j][k];                            col++;                        }                    }                    row++;                }            }            //代数余子式计算结束            value = value + material[0][i] * calMatrix(out, m - 1);        }        return value;    }}
0 0