关于指针矩阵的问题.
#include <stdio.h>#include <stdlib.h>
void main()
{
int *a,*b,*c;
int m,n,p;
int i,j,k,temp;
printf("请输入矩阵a的维数(m,n):\n");
printf("m= ");
scanf("%d",&m);
printf("n= ");
scanf("%d",&n);
a = (int*)malloc(m*n*sizeof(int));
printf("[请输入矩阵a的各个元素]\n");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
printf("a%d%d=",i,j);
scanf("%d",&a[i*n+j]);
}
printf("请输入矩阵b的维数(n,p):\n");
printf("n= ");
scanf("%d",&n);
printf("p= ");
scanf("%d",&p);
b = (int*)malloc(n*p*sizeof(int));
printf("[请输入矩阵b的各个元素]\n");
for(i=0;i<n;i++)
for(j=0;j<p;j++)
{
printf("b%d%d= ",i,j);
scanf("%d",&b[i*p+j]);
}
c = (int*)malloc(m*p*sizeof(int));
if( m<=0 || n<=0 || p<=0 )
{
printf("[错误:维数m,n,p必须都大于0\n");
return;
}
//从这---------------------------------------------------
for(i=0;i<m;i++)
for(j=0;j<p;j++)
{
temp = 0;
for(k=0;k<n;k++)
temp = temp + a[i*n+k] * b[k*p+j];
c[i*p+j] = temp;
}
//到这---这几行语句到底起到了什么作用呢?麻烦高手详细讲解一下.
printf("[a x b的结果是]\n");
for(i=0;i<m;i++)
{
for(j=0;j<p;j++)
printf("%d\t",c[i*p+j]);
printf("\n");
}
system("pause");
return;
}