潮汕学院网站开发,手机做网站多少钱,手机服务器,网站建设论文文献给定两个矩阵A和B#xff0c;要求你计算它们的乘积矩阵AB。需要注意的是#xff0c;只有规模匹配的矩阵才可以相乘即若A有Ra行、Ca列#xff0c;B有Rb行、Cb列#xff0c;则只有Ca与Rb相等时#xff0c;两个矩阵才能相乘。
输入格式#xff1a; 输入先后给出… 给定两个矩阵A和B要求你计算它们的乘积矩阵AB。需要注意的是只有规模匹配的矩阵才可以相乘即若A有Ra行、Ca列B有Rb行、Cb列则只有Ca与Rb相等时两个矩阵才能相乘。
输入格式 输入先后给出两个矩阵A和B。对于每个矩阵首先在一行中给出其行数R和列数C随后R行每行给出C个整数以1个空格分隔且行首尾没有多余的空格。输入保证两个矩阵的R和C都是正数并且所有整数的绝对值不超过100。
输出格式 若输入的两个矩阵的规模是匹配的则按照输入的格式输出乘积矩阵AB否则输出Error: Ca ! Rb其中Ca是A的列数Rb是B的行数。
输入样例1
2 3
1 2 3
4 5 6
3 4
7 8 9 0
-1 -2 -3 -4
5 6 7 8输出样例1
2 4
20 22 24 16
53 58 63 28输入样例2
3 2
38 26
43 -5
0 17
3 2
-11 57
99 68
81 72输出样例2
Error: 2 ! 3程序源码 #include stdio.h int main() {// 定义四个整型变量a, b, c, d这些变量将用于存储用户输入的两个矩阵的行数和列数 int a, b, c, d;// 从标准输入读取两个整数并将它们存储在变量a和b中 scanf(%d %d, a, b);// 根据用户输入的行数a和列数b定义一个二维数组matrix1用于存储第一个矩阵的元素 int matrix1[a][b];// 第一个for循环遍历矩阵matrix1的每一行 for (int i 0; i a; i) {// 第二个for循环遍历矩阵matrix1的每一列 for (int j 0; j b; j) {// 从标准输入读取一个整数并存储在matrix1的(i, j)位置上 scanf(%d, matrix1[i][j]);}}// 从标准输入读取两个整数并将它们存储在变量c和d中用于存储用户输入的第二个矩阵的行数和列数 scanf(%d %d, c, d);// 根据用户输入的行数c和列数d定义一个二维数组matrix2用于存储第二个矩阵的元素 int matrix2[c][d];// 第一个for循环遍历矩阵matrix2的每一行 for (int i 0; i c; i) {// 第二个for循环遍历矩阵matrix2的每一列 for (int j 0; j d; j) {// 从标准输入读取一个整数并存储在matrix2的(i, j)位置上 scanf(%d, matrix2[i][j]);}}// 如果变量b不等于变量c执行下面的代码 if (b ! c) {// 输出错误信息指明b和c不相等 printf(Error: %d ! %d\n, b, c);}else {// 如果b和c相等输出a和d的值 printf(%d %d\n, a, d);// 定义一个名为countCol的整型变量并初始化为0 int countCol 0;// 遍历矩阵matrix1的每一行 for (int i 0; i a; i) {// 遍历矩阵matrix1的每一列 for (int j 0; j d; j) {// 定义一个名为sum的整型变量并初始化为0 int sum 0;// 遍历矩阵matrix1的每一列 for (int k 0; k b; k) {// 计算matrix1的第i行和matrix2的第j列的点积并累加到sum中 sum sum matrix1[i][k] * matrix2[k][j];}// 如果当前列不是最后一列输出计算得到的sum后面跟一个空格 if (j d - 1) {printf(%d , sum);}// 如果当前列是最后一列输出计算得到的sum后面跟一个换行符 else {printf(%d\n, sum);}}}}// 程序执行完毕返回0表示程序正常结束 return 0;
}