不知道为什么,写了一个矩阵乘法的C程序,却只能用将行和列定义为常数,要不然无法输出……头痛。
int main()
{
int a,b,k,sum;
/*int ROWS,COLS;
printf("请输入矩阵的行数:");
scanf("%d", &ROWS);
printf("\n请输入矩阵的列数:");
scanf("%d", &COLS);*/
int A[ROWS][COLS],B[ROWS][COLS];
float C[ROWS][COLS];
printf("[请输入第一个矩阵(%d行%d列)]\n",ROWS,COLS);
for(a=0; a<ROWS; a++)
{
for(b=0;b<COLS; b++)
{
printf("请输入第%d行第%d列的数值:",a+1,b+1);
scanf("%d", &A[a][b]);
}
putchar('\n');
}
printf("[矩阵A为]\n");
for(a=0; a<ROWS; a++)
{
for(b=0;b<COLS; b++)
{
printf("%d\t",A[a][b]);
}
putchar('\n');
}
printf("[请输入第二个矩阵(%d行%d列)]\n",ROWS,COLS);
for(a=0; a<ROWS; a++)
{
for(b=0;b<COLS; b++)
{
printf("请输入第%d行第%d列的数值:",a+1,b+1);
scanf("%d", &B[a][b]);
}
putchar('\n');
}
printf("[矩阵B为]\n");
for(a=0; a<ROWS; a++)
{
for(b=0;b<COLS; b++)
{
printf("%d\t",B[a][b]);
}
putchar('\n');
}
for(a=0; a<ROWS; a++)/*实现在既定大小的矩阵下的矩阵乘法*/
{
for(b=0;b<COLS; b++)
{
for(k=0; k<COLS; k++)/*k控制的是A的列和B的行*/
{
sum+=A[a][k]*B[k][b];
C[a][b]=sum;
}
}
}
printf("[矩阵C为]\n");
for(a=0; a<ROWS; a++)
{
for(b=0;b<COLS; b++)
{
printf("%.0f\t",C[a][b]);
}
putchar('\n');
}
system("pause");
return 0;
}