这个题主要是弄清楚那一部分是行,哪一部分是列就可以了。
代码使用了三个变量来实现不同行和列的递增。
行和列相乘的函数,如下:
#define size 2
int * multi(int* a, int* b, int N)
{
int i,j,k,temp;
int * c = (int *)malloc(N*N);
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
{
temp = i*N + j;
*(c+temp) = 0;
for(k=0;k<N;k++)
{
*(c+temp) += a[i*N + k]*b[k*N + j];
}
printf("%d ",*(c+temp));
}
}
return c;
}
main函数如下:
void main()
{
int a[size*size] = {2,1,4,3};
int b[size*size] = {1,-1,3,2};
multi(a,b,size);
printf("\n");
}
结果如下: