typedef struct { int**data; int row; int col;}MyMatrix;typedef MyMatrix* Matrix;/*編寫矩陣輸入函數(shù) INPUT_MAT,通過(guò)該函數(shù)完成矩陣的輸入并返回保存矩陣的數(shù)組和對(duì)應(yīng)矩陣的行數(shù)、列數(shù)。(不能使用全局變量)*/Matrix INPUT_MAT() { int m_row, m_col; printf("輸入要?jiǎng)?chuàng)建的矩陣的行數(shù)和列數(shù):"); scanf("%d%d", &m_row, &m_col); if (m_row <= 0 || m_col <= 0) { printf("輸入的行數(shù)和列數(shù)錯(cuò)誤!矩陣創(chuàng)建失?。n"); return NULL; } Matrix mat = (Matrix)malloc(sizeof(MyMatrix)); mat->row = m_row; mat->col = m_col; mat->data = (int **)malloc(sizeof(int *)*m_row); printf("輸入矩陣的元素:\n"); for (int i = 0; i < m_row; i++) { mat->data[i] = (int *)malloc(sizeof(int)*m_col); for (int j = 0; j < m_col; j++) scanf("%d", &mat->data[i][j]); } printf("矩陣創(chuàng)建成功!\n"); return mat;}/*編寫矩陣輸出函數(shù) OUTPUT_MAT,通過(guò)該函數(shù)完成矩陣的輸出。*/void OUTPUT_MAT(Matrix mat) { printf("矩陣輸出如下:\n"); for (int i = 0; i < mat->row; i++) { for (int j = 0; j < mat->col; j++) printf("%d ", mat->data[i][j]); printf("\n"); }}/*清理矩陣*/void Clean_Mat(Matrix mat) { for (int i = 0; i < mat->row; i++) free(mat->data[i]); free(mat->data); free(mat);}/*求矩陣的轉(zhuǎn)置,矩陣的轉(zhuǎn)置 A’=(aji)n×m,轉(zhuǎn)置前輸出原矩陣,轉(zhuǎn)置后輸出轉(zhuǎn)置矩陣。*/Matrix Transpose_Mat(Matrix mat) { Matrix target = (Matrix)malloc(sizeof(MyMatrix)); target->row = mat->col; target->col = mat->row; target->data = (int**)malloc(sizeof(int*)*target->row); for (int i = 0; i < target->row; i++) target->data[i] = (int *)malloc(sizeof(target->col)); for (int i = 0; i < target->row; i++) for (int j = 0; j < target->col; j++) target->data[i][j] = mat->data[j][i]; return target;}void Transpose_Function() { system("cls"); printf("當(dāng)前功能:矩陣的轉(zhuǎn)置\n"); Matrix mat = INPUT_MAT(); if (!mat) { int b; do { printf("輸入0回到主菜單:"); scanf("%d", &b); } while (b != 0); return; } Matrix target = Transpose_Mat(mat); printf("轉(zhuǎn)置前"); OUTPUT_MAT(mat); printf("轉(zhuǎn)置后"); OUTPUT_MAT(target); int b; do { printf("輸入0回到主菜單:"); scanf("%d", &b); } while (b != 0); Clean_Mat(mat); Clean_Mat(target); return;}free原始數(shù)組沒(méi)問(wèn)題,但是free轉(zhuǎn)置后的數(shù)組就會(huì)出現(xiàn)錯(cuò)誤,不知道為什么啊。。。跪求大佬幫我看看哪里出現(xiàn)錯(cuò)誤了?
關(guān)于c語(yǔ)言動(dòng)態(tài)分配二維數(shù)組free的錯(cuò)誤求dalao看看怎么回事謝謝啊~~~~
Single丶love
2018-04-08 09:29:57