//矩阵相乘
#include<stdio.h>
#include<time.h>
#define n 10
void xiangcheng(int (*pa)[],int (*pb)[],int (*pc)[],int row1,int col1,int col2)
{
for(int i=0;i<row1;i++)//相乘
{
for(int j=0;j<col2;j++)
{
int sum=0;
for(int k=0;k<col1;k++)
{
sum+=(*(pa[i]+k))*(*(pb[k]+j));
}
*(pc[i]+j)=sum;
}
}
}
int main()
{
srand(time(0));
int row1,col1;
int row2,col2;
printf("请输入第一个矩阵的行数、列数:");
scanf("%d%d",&row1,&col1);
row2=col1;
printf("第二个矩阵行数为%d,请输入第二个矩阵列数:",col1);
scanf("%d",&col2);
int a[n][n]={0};
int b[n][n]={0};
int c[n][n]={0};
for(int i=0;i<row1;i++)//赋值a
{
for(int j=0;j<col1;j++)
{
a[i][j]=rand()%20;
}
}
for(int i=0;i<row2;i++)//赋值b
{
for(int j=0;j<col2;j++)
{
b[i][j]=rand()%20;
}
}
int (*pa)[n]=a;
int (*pb)[n]=b;
int (*pc)[n]=c;
xiangcheng(pa,pb,pc,row1,col1,col2);
/*
for(int i=0;i<row1;i++)//相乘
{
for(int j=0;j<col2;j++)
{
int sum=0;
for(int k=0;k<col1;k++)
{
sum+=a[i][k]*b[k][j];
}
c[i][j]=sum;
}
}
*/
printf("\n数组a为:\n");
for(int i=0;i<row1;i++)//打印a
{
for(int j=0;j<col1;j++)
{
printf("%5d",a[i][j]);
}
printf("\n");
}
printf("\n数组b为:\n");
for(int i=0;i<row2;i++)//打印b
{
for(int j=0;j<col2;j++)
{
printf("%5d",b[i][j]);
}
printf("\n");
}
printf("\n数组c为:\n");
for(int i=0;i<row1;i++)//打印c
{
for(int j=0;j<col2;j++)
{
printf("%5d",c[i][j]);
}
printf("\n");
}
return 0;
}
1.矩阵相乘为什么会报错啊,他的错误提示是什么意思啊?
2.还有用srand和rand随机赋值时会有警告,可以执行,但明明应该是对的吧,他的警告是什么意思啊