精华内容
下载资源
问答
  • 设有一个3*3的矩阵,请编写一个程序计算两个矩阵和并输出。 a = [] for i in range(3): a.extend(input().split()) print(sum(map(int,a)))

    设有一个3*3的矩阵,请编写一个程序,计算这两个矩阵的和并输出。

    a = []
    for i in range(3):
        a.extend(input().split())
    print(sum(map(int,a)))
    
    展开全文
  • def add(A, B): C = [] for i in range(0, 3): temp = [] for j in range(0, 3): temp.append(ord(A[i][j]) + ord(B[i][j]) - 96) C.append(temp) ... print("请输入3x3矩阵A,字符间空格:") A
    def add(A, B):
        C = []
        for i in range(0, 3):
            temp = []
            for j in range(0, 3):
                temp.append(ord(A[i][j]) + ord(B[i][j]) - 96)
            C.append(temp)
        return C
    if __name__ == "__main__":
        print("请输入3x3矩阵A,字符间空格:")
        A = []
        for i in range(0, 3):
            temp = []
            s = input()
            temp = s.split(' ')
            A.append(temp)
        print("请输入3x3矩阵B,字符间空格:")
        B = []
        for i in range(0, 3):
            temp = []
            s = input()
            temp = s.split(' ')
            B.append(temp)
        print(add(A, B))
    
    
    展开全文
  • #编写程序计算两个矩阵的乘积,请将以下代码复制到codeblocks中,将multiply函数补充完整,程序运行正确后将所有代码(包括题目中给出的代码)复制到答题区内运行提交。 #include <stdio.h> #define M 3 #...

    题目

    编写程序计算两个矩阵的乘积,请将以下代码复制到codeblocks中,将multiply函数补充完整,程序运行正确后将所有代码(包括题目中给出的代码)复制到答题区内运行并提交。
    #include <stdio.h>
    #define M 3
    #define S 4
    #define N 2

    void multiply(int A[M][S], int B[S][N], int C[M][N])
    {

    }

    int main()
    {
    int i, j;
    int A[M][S], B[S][N], C[M][N];
    printf(“Please input A:\n”);
    for (i = 0; i < M; i ++)
    for (j = 0; j < S; j ++)
    scanf("%d", &A[i][j]);
    printf(“Please input B:\n”);
    for (i = 0; i < S; i ++)
    for (j = 0; j < N; j ++)
    scanf("%d", &B[i][j]);
    multiply(A,B,C);
    printf(“C=\n”);
    for (i = 0; i < M; i ++){
    for (j = 0; j < N; j ++)
    printf("%d “, C[i][j]);
    printf(”\n");
    }
    return 0;
    }
    程序运行示例:
    Please input A:
    1 2 3 4
    5 6 7 8
    4 7 9 2
    Please input B:
    2 6
    4 8
    4 6
    3 9
    C=
    34 76
    86 192
    78 152

    参考答案

    #include <stdio.h>
    #define M 3
    #define S 4
    #define N 2
    
    void multiply(int A[M][S], int B[S][N], int C[M][N])
    {
        int i, j, k;
        for (i = 0; i < M; i++) //用于控制C和A的行标
        {
            for (j = 0; j < N; j++) //用于控制C和B的列标
            {
                for (k = 0; k < S; k++)  //用于控制A的列标和B的行标
                {
                    C[i][j] += A[i][k] * B[k][j];
                }
            }
        }
    }
    int main()
    {
        int i, j;
        int A[M][S], B[S][N], C[M][N] = {0}; //必须对C数组进行初始化
        printf("Please input A:\n");
        for (i = 0; i < M; i++)
            for (j = 0; j < S; j++)  //输入A数组
                scanf_s("%d", &A[i][j]);
        printf("Please input B:\n");
        for (i = 0; i < S; i++)
            for (j = 0; j < N; j++)  //输入B数组
                scanf_s("%d", &B[i][j]);
        multiply(A, B, C);  //调用函数
        printf("C=\n");
        for (i = 0; i < M; i++)
        {
            for (j = 0; j < N; j++)
                printf("%d ", C[i][j]);  //以矩阵的形式输出C数组
            printf("\n");
        }
        return 0;
    }
    

    解题思路

    只需要写出计算C数组的前三个式子就可发现规律:

    • C[0][0]= A[0][0] * B[0][0] + A[0][1] * B[1][0] + A[0][2] * B[2][0] + A[0][3] * B[3][0]
    • C[0][1]= A[0][0] * B[0][1] + A[0][1] * B[1][1] + A[0][2] * B[2][1] + A[0][3] * B[3][1]
    • C[1][0]= A[1][0] * B[0][0] + A[1][1] * B[1][0] + A[1][2] * B[2][0] + A[1][3] * B[3][0]
      则可以发现:C和A的行标同时变化,C和B的列标同时变化,A的列标和B的行标同时变化。
      在计算过程中:最先进行循环的是A列标和B行标的变化,所以该循环放在最里面,而外层的两个循环可用于控制C的行列标运动。
      (上述为先算C数组每一行的做法,也可以改变循环的过程,先算第一列,再算第二列)

    错点

    在写这道题的过程中,我遇到的问题有两个:

    1. 在编写函数时,若未找对规律,容易发生数组下标越界的问题,虽然会有数值写入C数组中,但是数值错误,且会有运行错误,如下:
    void multiply(int A[M][S], int B[S][N], int C[M][N])
    {
        int i, j, k;
        for (i = 0; i < S; i++)
        {
            for (j = 0; j < N; j++)
            {
                for (k = 0; k < M; k++)
                {
                    C[i][j] = A[i][k] + B[k][j];
                }
            }
        }
    }
    

    如上,存在逻辑错误,会将C[M][N]以C[S][N]的形式来计算,而A和B也会有同样的错误,在VS2019中会有变量堆栈被破坏之类的错误。

    Run-Time Check Failure #2 - Stack around the variable 'B' was corrupted.
    
    
    1. 数组C未初始化引起的答案错误:
    C=
    -858993426 -858993384
    -858993374 -858993268  //出现的值全部为随机值
    -858993382 -858993308
    

    起初会认为是函数的问题,但并非如此。
    细节虽小,但很重要!!!

    无函数做法

    #include <stdio.h>
    #define M 3
    #define S 4
    #define N 2
    
    int main()
    {
        int i, j, k;
        int A[M][S], B[S][N], C[M][N] = {0};  //初始化很重要
        printf("Please input A:\n");
        for (i = 0; i < M; i++)
            for (j = 0; j < S; j++)
                scanf_s("%d", &A[i][j]);
        printf("Please input B:\n");
        for (i = 0; i < S; i++)
            for (j = 0; j < N; j++)
                scanf_s("%d", &B[i][j]);
        for (i = 0; i < M; i++)
        {
            for (j = 0; j < N; j++)
            {
                for (k = 0; k < S; k++)
                {
                    C[i][j] += A[i][k] * B[k][j];
                }
            }
        }
        printf("C=\n");
        for (i = 0; i < M; i++) {
            for (j = 0; j < N; j++)
                printf("%d ", C[i][j]);
            printf("\n");
        }
        return 0;
    }
    
    
    
    展开全文
  • Java编写任意两个矩阵求和程序

    千次阅读 2019-04-27 00:09:30
    System.out.print("数组:"); System.out.println(); int[][]c= new int[m][n]; for(int i = 0; i ; i ++){ for(int j = 0; j ; j ++){ c[i][j] = myNum1[i][j]+myNum2[i][j]; System.out....

    import java.util.Scanner;
    public class Shuzuhe {
    public static void main(String[] args){
    Scanner in = new Scanner(System.in);
    System.out.print(“请输入行数m:”);
    int m=in.nextInt();
    System.out.print(“请输入行数n:”);
    int n=in.nextInt();
    int[][] myNum1= new int[m][n];
    System.out.print(“请输入数组myNum1值:”);
    Scanner out = new Scanner(System.in);
    for(int i = 0; i < m; i ++){
    for(int j = 0; j < n; j ++){
    myNum1[i][j] = in.nextInt();
    }
    }

    	int[][] myNum2= new int[m][n];
    	System.out.print("请输入数组myNum2值:");
    	for(int i = 0; i < m; i ++){
    		for(int j = 0; j < n; j ++){
    			myNum2[i][j] = in.nextInt();		
    		}
    	}
    				
    	 System.out.print("两数组和:");
    	 System.out.println();
    	 int[][]c= new int[m][n];
    	 for(int i = 0; i < m; i ++){
    			for(int j = 0; j < n; j ++){ 				
    		c[i][j] = myNum1[i][j]+myNum2[i][j];
    		System.out.print(+c[i][j]+" ");
    			}
    		System.out.println();
    			}
    	}
    }
    
    展开全文
  • 通过文件读入的方式向程序输入两个5*5矩阵的数据,计算两个矩阵的乘积,将乘积写入到磁盘文件,并且显示在屏幕上。 (1)读入信息:从a.txtb.txt中得到两个矩阵的数据,同时输出到屏幕上。 (2)计算乘积:通过...
  • 计算两个矩阵的乘积

    千次阅读 2017-11-03 21:47:16
    问题 F: 计算两个矩阵的乘积 时间限制: 1 Sec 内存限制: 32 MB 题目描述 计算两个矩阵的乘积,第一个是2*3矩阵,第二个是3*2矩阵...输出两个矩阵的乘积。 样例输入 1 1 1 1 1 1 1 1 1 1 1 1 样例输出 3
  • 1.解法思路利用python计算,首先要面对输入的问题。...3*3矩阵的输入在这里我想的是首先将第每行的3数字以字符串的形式保存,然后根据空格分割存入一列表中,最后将这3列表放在一列表里,...
  • 定义矩阵类Matrix,添加成员变量二维数组m,添加计算转置矩阵的方法transposeMatrix()和计算两个矩阵的方法addMatrix(),重写toString()使其可以输出矩阵。程序运行时提示输入2个m行n列的矩阵利用Scanner类...
  • //编写个程序输入一n*n的矩阵,求出条对角线元素值之 #include using namespace std; int main() { int num; cout 请输入对角矩阵的大小" ; cin >> num; int **p = new int*[num];//数组大小动态,二维...
  • 计算两个矩阵相乘(Java)

    千次阅读 2020-03-10 12:25:22
    * 计算两个矩阵的乘积,第一个2*3 第二个3*2 * 输出 * 一个2*2的矩阵(每个数字后都跟一个空格) * */ import java.util.Scanner; public class MatrixNumber { //矩阵乘法 public static Matrix Multiply...
  • 计算两个矩阵的乘积,第一个是 2 * 3,第二个是 3 * 2 输入 输入为两个矩阵,其中一个为 2 * 3 的矩阵,另一个为 3 * 2 的矩阵 输出 一个 2 * 2 的矩阵(每一个数字后都跟一个空格) 样例输入 1 2 3 3 4 5 6 7 8 9 10...
  • 例题:编写函数fun,它的功能是计算并输出下列级数数: 例如,当m=5时,函数值为0.833333。 请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 代码如下: #include<...
  • 10、C++计算两个矩阵的乘积

    千次阅读 2017-02-21 18:41:10
    以两个2*2 矩阵的乘积为例:计算两个矩阵的乘积
  • 编写程序完成矩阵的乘法运算

    千次阅读 2020-01-21 21:35:29
    要求:程序运行后要求用户分别输入两个矩阵的行数列数,然后判断两个矩阵是否可以相乘,如果可以相乘,则计算矩阵相乘后的结果,按矩阵的格式输出;若不能相乘,则提示用户矩阵不相容,退出程序。 提示:一个2...
  • 用java编写两个矩阵相乘

    万次阅读 2017-12-03 18:05:09
    想复习复习java语言程序设计(基础篇),每一章的课后习题随便写了写。这是第七章课后习题7.6那一道题
  • 一同学需要计算好几组矩阵的乘积,让我帮一下忙。。我想到了python里就可以计算矩阵,于是就有了下边的代码。...请输入第%d个矩阵的行数,按回车:" % x)) m = int(input("请输入第%d个矩阵的...
  • 本题要求编写程序,求一个给定的m×n矩阵各行元素之。 输入格式: 输入第一行给出两个正整数mn(1≤m,n≤6)。随后m行,每行给出n个整数,其间 以空格分隔。 输出格式: 每行输出对应矩阵行元素之。 输入样例...
  • 解法二(利用循环,可以求nxn数组对角线元素): using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace _118_3._2 {  class Program  {static void Main...
  • #include #define M 100 int main() { int a[M][M],i,j,msum = 0,ssum = 0; int N; printf("input N:"); scanf("%d",&N); printf("请输入%d*%d的矩阵:\n",N,N); for(i = 0
  • 内有已注释的可运行完整程序代码一份,用到的外部库Irvine使用说明文档,VS2008开发。
  • 编写矩阵运算程序(C语言)

    千次阅读 多人点赞 2020-06-22 08:24:26
    编写矩阵运算程序(C语言) 文章目录编写矩阵运算程序(C语言)1. 要求2.代码 1. 要求 a) 功能包括:矩阵加、矩阵减、矩阵乘、矩阵三角化 b) 实现方式1:函数的参数为:二维数组名、行数、列数 2.代码 #include<stdio...
  • /* 编写一个程序,用函数重载运算符“+”“‐”,将两个矩阵(这两个矩阵均为 3 行 3 列) 相加相减,要求第一个矩阵的值由构造函数设置,另一个矩阵的值由键盘输入。 1. 一个构造函数,矩阵元素从 1 开始递增;...
  • (2) 定义一个矩形类,其属性包括左上角右下角两个点,提供计算面积的方法; (3) 创建一个矩形对象,提示用户输入矩形左上角右下角的坐标; (4) 观察矩形对象以及Point类成员的构造函数与析构函数的调用; ...
  • 例题:编写程序,实现矩阵(3行3列)的转置(即行列互换)。 例如,若输入下面矩阵: 1 2 3 4 5 6 7 8 9 则程序输出: 1 4 7 2 5 8 3 6 9 请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所...
  • 例题:请编写函数fun,它的功能是:计算并输出给定整数n的所有因子(不包括1与自身)之。规定n的值不大于1000。 例如,若主函数从键盘给m输入的值为111,则输出为sum=40。 请勿改动主函数main与其它函数中的...
  • 输出的正数或者负数的绝对值应是相比较的两个字符串相应字符的ASCII码的差值。例如“A”与“C”相比,由于“A” “C”,应该输出负数,由于“A”与”C”的ASCII嘛差值为2,因此应该输出“-2”。同理:“And”“Aid...
  • #include<stdio.h> int main() { int i, j, s;//定义矩形的长,宽,面积变量 scanf_s("%d,%d", &i, &j);//输入长宽的值 ...//计算面积 printf("%d", s);//输出面积 return 0;//返回0 }
  • 两个矩阵的相加相乘

    千次阅读 2013-09-10 19:04:28
    //两个矩阵相加相乘 public class TestMatrixOperation { public static void main(String[] args) { int [][]matrix1=new int[5][5]; int [][]matrix2=new int[5][5]; //随机分配值 for...
  • 两个对称矩阵与乘积

    千次阅读 2019-01-23 11:31:36
    * 求两个对称矩阵与乘积 * 实验目的: * 掌握对称矩阵的压缩存储方法及相关算法设计 * 实验内容: * 已知AB为两个nxn阶的对称矩阵,输入时,对称矩阵只输入下三角形元素, * 存入一维数组。设计程序,完成如下...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 28,075
精华内容 11,230
关键字:

编写程序计算并输出两个矩阵的和