#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int matrix(int **MatrixA, int **MatrixB, int **MatrixC, int N)
{
int i,j,k;
MatrixA = (int **) malloc(sizeof(int *) * N);
MatrixB = (int **) malloc(sizeof(int *) * N);
MatrixC = (int **) malloc(sizeof(int *) * N);
for (j=0;j<N;j++)
{
MatrixA[j] = (int *) malloc(sizeof(int) * N);
MatrixB[j] = (int *) malloc(sizeof(int) * N);
MatrixC[j] = (int *) malloc(sizeof(int) * N);
}
if (N < 1)
{
return -1;
}
if ((NULL == MatrixA) || (*MatrixA == NULL))
{
return -1;
}
if ((NULL == MatrixB) || (*MatrixB == NULL))
{
return -1;
}
if ((NULL == MatrixC) || (*MatrixC == NULL))
{
return -1;
}
for(i=0;i<N;i++)
{
for(k=0;k<N;k++)
{
MatrixC[i][k]=0;
for(j=0;j<N;j++)
{
MatrixC[i][k]+=MatrixA[i][j]*MatrixB[j][k];
}
}
}
return 0;
}
void main()
{
int A[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};
int C[3][3], ExpectC[3][3] = {{30, 36, 42}, {66, 81, 96}, {102, 126, 150}};
int i,j;
matrix((int**)A, (int**)A, (int**)C, 3);
for( i = 0; i < 3; ++i)
{
for( j = 0; j < 3; ++j)
{
printf("%d,",A[i][j]);
printf("%d,",C[i][j]);
}
}
}
输出来的矩阵c,跟预期的ExpectC[3][3],完全不同,貌似就是分配内存有问题,不分配又会报错
追答#include<stdio.h>谢谢,但我这个是软件考试,主要考察matrix函数的编写,main函数可以随便改,matrix这个函数的接口不能随便改动
追答#include<stdio.h>