计算矩阵相乘
%g用于打印浮点型数据时,会去掉多余的零,至多保留六位有效数字(不同于%e的默认保留小数点后6位)
%e是一种转换说明符号,表示浮点数,并且采用e计数法。
比如2.12e2
rintf()输出格式类型说明:
输出类型 格式字符意义
a 浮点数、十六进制数字和p-计数法(C99)
A 浮点数、十六进制数字和p-计数法(C99)
c 输出单个字符
d 以十进制形式输出带符号整数(正数不输出符号)
e 以指数形式输出单、双精度实数 指数标识为e
E 以指数形式输出单、双精度实数 指数标识为E
f 以小数形式输出单、双精度实数
G 以%f%E中较短的输出宽度输出单、双精度实数,在指数小于-4或者大于等于精度时使用%E格式
i 有符号十进制整数(与%d相同)
o 以八进制形式输出无符号整数(不输出前缀O)
p 输出内存地址形式数据(16进制)
s 输出字符串
x 以十六进制形式输出无符号整数(不输出前缀OX)
X 以十六进制形式输出无符号整数(不输出前缀OX)
u 以十进制形式输出无符号整数
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
#define MAXN 110
double arr1[MAXN][MAXN];
double arr2[MAXN][MAXN];
double ans[MAXN][MAXN];
int main()
{
int a,b,c,d;
freopen("in.txt","r",stdin);
while(scanf("%d%d%d%d",&a,&b,&c,&d)!=EOF)
{
for(int i=1;i<=a;i++)
for(int j=1;j<=b;j++)
scanf("%lf",&arr1[i][j]);
for(int i=1;i<=c;i++)
for(int j=1;j<=d;j++)
scanf("%lf",&arr2[i][j]);
for(int i=1;i<=a;i++){
for(int j=1;j<=d;j++){
ans[i][j]=0;
for(int k=1;k<=b;k++)
ans[i][j]+=arr1[i][k]*arr2[k][j];
printf("%g ",ans[i][j]);
}
puts("");
}
puts("");
}
return 0;
}