//矩阵基础
/*
==================================================================
题目:输入矩阵a,b,输出a,b,a的转置矩阵d。a*b,b+d=e;
==================================================================
*/
#include<stdio.h>
#define TJ1 for(i=0;i<2;i++)
#define TJ2 for(j=0;j<3;j++)
#define hh printf(" ")
void main()
{
int a[2][3],b[3][2],c[2][2],d[3][2],e[3][2];
int i,j,k;
//输入矩阵a
printf("输入2*3矩阵a: ");
TJ1
TJ2
scanf("%d",&a[i][j]);
//输入矩阵b
printf(" 输入3*2矩阵b: ");
TJ2
TJ1
scanf("%d",&b[j][i]);
//输出矩阵a:
printf(" ===================== 输出矩阵a: ");
TJ1
{
TJ2
printf("%4d",a[i][j]);
hh;
}
printf(" ===================== a的转置矩阵d: ");
TJ1
TJ2
d[j][i]=a[i][j];
TJ2
{
TJ1
printf("%4d",d[j][i]);
printf(" ");
}
//输出矩阵b:
printf(" ===================== 输出矩阵b: ");
TJ2
{
TJ1
printf("%4d",b[j][i]);
hh;
}
//矩阵a*矩阵b,保存至c
for(i=0;i<2;i++)
for(j=0;j<2;j++)
{
c[i][j]=0;
for(k=0;k<3;k++)
c[i][j]+=a[i][k]*b[k][j];
}
//输出矩阵c:
printf(" ===================== 矩阵a[2][3]*b[3][2]=c[2][2],例如以下: ");
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
printf("%4d ",c[i][j]);
printf(" ");
}
printf(" ===================== 矩阵b+矩阵d: ");
TJ2
TJ1
e[j][i]=b[j][i]+d[j][i];
TJ2
{
TJ1
printf("%4d ",e[j][i]);
hh;
}
}
/*
====================================================================
评:
1、掌握输出时换行的方法;
*/
/*
==================================================================
题目:输入矩阵a,b,输出a,b,a的转置矩阵d。a*b,b+d=e;
==================================================================
*/
#include<stdio.h>
#define TJ1 for(i=0;i<2;i++)
#define TJ2 for(j=0;j<3;j++)
#define hh printf(" ")
void main()
{
int a[2][3],b[3][2],c[2][2],d[3][2],e[3][2];
int i,j,k;
//输入矩阵a
printf("输入2*3矩阵a: ");
TJ1
TJ2
scanf("%d",&a[i][j]);
//输入矩阵b
printf(" 输入3*2矩阵b: ");
TJ2
TJ1
scanf("%d",&b[j][i]);
//输出矩阵a:
printf(" ===================== 输出矩阵a: ");
TJ1
{
TJ2
printf("%4d",a[i][j]);
hh;
}
printf(" ===================== a的转置矩阵d: ");
TJ1
TJ2
d[j][i]=a[i][j];
TJ2
{
TJ1
printf("%4d",d[j][i]);
printf(" ");
}
//输出矩阵b:
printf(" ===================== 输出矩阵b: ");
TJ2
{
TJ1
printf("%4d",b[j][i]);
hh;
}
//矩阵a*矩阵b,保存至c
for(i=0;i<2;i++)
for(j=0;j<2;j++)
{
c[i][j]=0;
for(k=0;k<3;k++)
c[i][j]+=a[i][k]*b[k][j];
}
//输出矩阵c:
printf(" ===================== 矩阵a[2][3]*b[3][2]=c[2][2],例如以下: ");
for(i=0;i<2;i++)
{
for(j=0;j<2;j++)
printf("%4d ",c[i][j]);
printf(" ");
}
printf(" ===================== 矩阵b+矩阵d: ");
TJ2
TJ1
e[j][i]=b[j][i]+d[j][i];
TJ2
{
TJ1
printf("%4d ",e[j][i]);
hh;
}
}
/*
====================================================================
评:
1、掌握输出时换行的方法;
2、转置矩阵时将原矩阵行和列交换。a[i][j]-->d[j][i],原来是2行3列,如今以3行两列输出!
即
i=0;i<3;i++;j=0;j<2;j++;i和j仅仅是符号,不影响结果。仅仅是输出时与d[行][列]相应起来就好。
3、加法非常easy,但必须是通行矩阵;4、乘法比較复杂,先定义初始矩阵。赋初值=0;然后定义保存乘积矩阵的列,注意该列最大
值为左矩阵的列,然后左行*右列,先列添加,然后换下一行,反复以上步骤,直至最后一行
乘以最后一列结束。
=====================================================================*/