我写了个有关矩阵的程序。菜单打印和键盘控制函数都没有问题,但矩阵打印函数无法正常执行。请问大家是哪里出了问题。
#include<stdio.h>
#include<stdlib.h>
int ** createMatrix(int size);//矩阵创建
void menuPrint();//菜单打印
void keyControl(int ***matrix, int size);//键盘控制
void matrixPrint(int ***matrix, int size);//矩阵打印
int main(int argc, char const *argv[])
{
int **matrix;
int size;//行列式大小
printf("请输入所计算的矩阵的阶数\n");
scanf("%d", &size);
matrix = createMatrix(size);
menuPrint();
keyControl(&matrix,size);
return 0;
}
int ** createMatrix(int size)
{
int i, j;//代表行和列
//定义一个二维指针(先存放有几列(列指针存放),再通过列数指针存放一行几个数)
int **pmatrix;
//动态申请一块内存(大小为size个int*指针所要的内存)——有多少个列指针,就有多少列
pmatrix = (int **)malloc(sizeof(int *) * size);//申请完后,**pmatrix可看成*pmatrix[size](指针数组)
//动态申请每行有几个(通过列指针申请)
for (i = 1; i <= size; i++)
{
//动态申请每行的元素总需的内存
pmatrix[i] = (int *)malloc(sizeof(int) * size);
}
//行列式的输入
printf("请输入矩阵:\n");
for (i = 0; i < size; i++)
{
for (j = 0; j < size; j++)
scanf("%d", &pmatrix[i][j]);
}
return pmatrix;
}
void menuPrint()
{
printf("|———————————————————————————————————————————|\n");
printf("\t\t1.矩阵转置\t\t\n");
printf("\t\t2.矩阵按行交换\t\t\n");
printf("\t\t3.矩阵按列交换\t\t\n");
printf("\t\t4.矩阵按行相加减\t\t\n");
printf("\t\t5.矩阵按列相加减\t\t\n");
printf("\t\t6.矩阵打印\t\t\n");
printf("|———————————————————————————————————————————|\n");
}
void keyControl(int ***matrix, int size)
{
int flag;
printf("请输入所进行操作的操作数:");
scanf("%d", &flag);
switch (flag)
{
case 6:
matrixPrint(***matrix, size);
break;
case 5:
printf("矩阵按列相加减");
break;
}
}
void matrixPrint(int ***matrix, int size)
{
int i, j;
for (i = 0; i < size; i++)
{
for (j = 0; j < size; j++)
printf("%d ", (*matrix)[i][j]);
printf("\n");
}
}