zoukankan      html  css  js  c++  java
  • C语言之基本算法33—矩阵的基本运算

    //矩阵基础
    /*
    ==================================================================
    题目:输入矩阵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;然后定义保存乘积矩阵的列,注意该列最大

    值为左矩阵的列,然后左行*右列,先列添加,然后换下一行,反复以上步骤,直至最后一行

    乘以最后一列结束。

    =====================================================================
    */





  • 相关阅读:
    Android开发 GradientDrawable详解
    Android开发 ShapeDrawable详解
    Android开发 ViewPager删除Item后,不会更新数据和View
    Android开发 输入法调用学习
    Android开发 EditText的开发记录
    Android开发 TextView的开发记录
    Android开发 获取View的尺寸的2个方法
    Android开发 获取视频中的信息(例如预览图或视频时长) MediaMetadataRetriever媒体元数据检索器
    Android开发 Tablayout的学习
    Python 模块-zipfile
  • 原文地址:https://www.cnblogs.com/brucemengbm/p/6763053.html
Copyright © 2011-2022 走看看