数阵
矩阵加法
程序先输入两个整数m, n(0<=m,n<=100),分别表示矩阵的行数和列数,然后分别输入m行n列的两个矩阵A,B。
输出描述
输出矩阵相加的结果。
用例输入 1
3 4 1 2 3 4 5 6 7 8 1 0 1 0 3 4 2 1 4 6 7 9 3 4 2 0用例输出 1
4 6 5 5 9 12 14 17 4 4 3 0
#include
int main()
{
int a[100][100];
int b[100][100];
int m,n;
int i,j;
scanf("%d %d",&m,&n);
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&b[i][j]);
}
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("%d ",a[i][j]+b[i][j]);
}printf("
");
}
return 0;
}
矩阵转置
程序先输入两个整数m, n(1<=m,n<=50),分别表示矩阵的行数和列数,然后输入m行n列的矩阵A。
输出描述
输出矩阵A的转置矩阵AT。
用例输入 1
3 4 1 2 3 4 5 6 7 8 4 6 7 9用例输出 1
1 5 4 2 6 6 3 7 7 4 8 9
原地转置–把矩阵补充为一个行数列数相等的矩阵
#include
int main()
{
int a[100][100];
int m,n;
int i,j;
int temp;
scanf("%d %d",&m,&n);
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
}
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(m<=n)
{
if(i=n)
{
if(i>=j)
{
temp=a[i][j];
a[i][j]=a[j][i];
a[j][i]=temp;
}
}
}
}
//转置输出,注意行列数转换
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
printf("%d ",a[i][j]);
}
printf("
");
}
return 0;
}
矩阵乘法
程序先输入三个整数m, t, n(1<=m,t,n<=50),然后分别输入两个矩阵A,B
输出描述
输出矩阵相乘的结果。
用例输入 1
2 3 4 1 2 3 5 6 7 1 0 1 0 3 4 2 1 4 6 7 9用例输出 1
19 26 26 29 51 66 66 69提示
答案都一样显示“wrong answer”?可能是因为空格。
以前写出来的了
#include
int main()
{
int i,n,m,t,j,k;
int a[50][50],b[50][50],c[50][50]={0};
scanf("%d %d %d",&m,&t,&n);
for(i=0;i<m;i++)
{
for(j=0;j<t;j++)
{
scanf("%d",&a[i][j]);
}
}
for(i=0;i<t;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&b[i][j]);
}
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
for(k=0;k<t;k++)
c[i][j]=a[i][k]*b[k][j]+c[i][j];
}
}
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
printf("%d ",c[i][j]);
}
printf("
");
}
return 0;
}