数组,scanf
4-4矩阵积的转置问题描述
输入M×K矩阵A和K×N矩阵B各元素值,计算矩阵A和矩阵B相乘的结果,并将乘积矩阵进行转置。
矩阵的相乘:设A为m×p的矩阵,B为p×n的矩阵,那么称m×n的矩阵C为矩阵A与B的乘积,其中矩阵C中的第i行第j列元素可以表示为:
如下:A=B=C=AB=
矩阵的转置:是指把m×n矩阵A的行换成同序数的列得到一个n×m矩阵,此矩阵叫做A的转置矩阵,写作AT。
例如矩阵经过转置后成为
输入说明
第一行给出正整数M、K、N(0<M、N、K<50),为A矩阵和B矩阵的行数和列数。接下来给出矩阵的信息,A矩阵信息:随后M行,每行给出K个整数,其间以空格分隔;B矩阵信息:随后K行,每行给出N个整数,其间以空格分隔。
输出说明
输出矩阵(A*B)T的结果,矩阵元素之间用空格分隔,数组每行元素用换行分隔。
#include <stdio.h>
#include <stdlib.h>
int main()
{
int m,k,n;
scanf("%d%d%d",&m,&k,&n);
int a;
int b;
for(int i=0;i<m;i++)
{
for(int j=0;j<k;j++)
{
scanf_s("%d",&a);//输入数组a
}
}
for(int i=0;i<k;i++)
{
for(int j=0;j<n;j++)
{
scanf_s("%d",&b);//输入数组b
}
}
int c;
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
c=0;
for(int s=0;s<k;s++)
{
c+=a*b;//矩阵相乘的赋值
}
}
}
for(int j=0;j<n;j++)
{
for(int i=0;i<m;i++)
{
printf("%d ",c);//输出矩阵(转置后)
}
printf("\n");
}
return 0;
}
请问为什么我b数组输入后无法正常赋值呢 34 行有问题
#include <stdio.h>
#include <stdlib.h>
int main()
{
int m,k,n;
scanf("%d %d %d",&m,&k,&n);
int a;
int b;
printf("请输入数组A\n") ;
for(int i=0;i<m;i++)
{
for(int j=0;j<k;j++)
{
scanf("%d",&a);//输入数组a
}
}
printf("请输入数组B\n") ;
for(int i=0;i<k;i++)
{
for(int j=0;j<n;j++)
{
scanf("%d",&b);//输入数组b
}
}
int c;
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
c=0;
for(int s=0;s<k;s++)
{
c+=a*b;//矩阵相乘的赋值 ||||| 用k越界了
}
}
}
printf("打印转置矩阵\n") ;
for(int j=0;j<n;j++)
{
for(int i=0;i<m;i++)
{
printf("%d ",c);//输出矩阵(转置后)
}
printf("\n");
}
return 0;
}
2 2 2
请输入数组A
1 2
3 4
请输入数组B
5 6
7 8
打印转置矩阵
19 43
22 50 大马强 发表于 2022-3-5 10:53
34 行有问题
没注意,还以为是scanf的问题
页:
[1]