一个矩阵乘法程序的问题
#include <stdio.h>
#define column_1 2
#define line 3
#define column_2 4
#define altogether_1 column_1*line
#define altogether_2 column_2*line
#define altogether_3 column_1*column_2
void input_matrix_1(int *p_matrix_1,int n)
{
int *p;
for(p=p_matrix_1;p <(p_matrix_1+n);p++)
scanf( "%d ",p);
}
void show_matrix_1(int *p_matrix_1,int n)
{
int *p,i=1;
for(p=p_matrix_1;p <(p_matrix_1+n);p++,i++)
{
printf( "%4d ",*p);
if(i%line==0) printf( "\n ");
}
}
void input_matrix_2(int *p_matrix_2,int n)
{
int *p;
for(p=p_matrix_2;p <(p_matrix_2+n);p++)
scanf( "%d ",p);
}
void show_matrix_2(int *p_matrix_2,int n)
{
int *p,i=1;
for(p=p_matrix_2;p <(p_matrix_2+n);p++,i++)
{
printf( "%4d ",*p);
if(i%column_2==0) printf( "\n ");
}
}
void mul_matrix(int *p_matrix_1,int *p_matrix_2,int *p_matrix_3)
{
int i,j,k;
for(i=1;i <=column_1;i++)
for(j=1;j <=column_2;j++)
for(k=1;k <=line;k++)
*(p_matrix_3+column_1*(i-1)+j-1)=*(p_matrix_1+line*(i-1)+k-1)+*(p_matrix_1+(k-1)*column_2+j-1);
}
void show_mul_matrix(int *p_matrix_3,int n)
{
int *p,i=1;
printf( "\n\n\n\n ");
for(p=p_matrix_3;p <(p_matrix_3+n);p++,i++)
{
printf( "%8d ",*p);
if(i%column_2==0) printf( "\n ");
}
}
void main()
{
int *p_matrix_1,*p_matrix_2,*p_matrix_3;
input_matrix_1(p_matrix_1,altogether_1);
show_matrix_1(p_matrix_1,altogether_1);
input_matrix_2(p_matrix_2,altogether_2);
show_matrix_2(p_matrix_2,altogether_2);
mul_matrix(p_matrix_1,p_matrix_2,p_matrix_3);
show_mul_matrix(p_matrix_3,altogether_3);
}
这个程序语法似乎没有什么问题,个人以为是乘法的那一条程序有问题,但是有什么问题呢?又应该怎么写呢?
[解决办法]
使用指针,要分配内存,进行初始化
[解决办法]
矩阵用2维数组比较合适吧。