• 数据结构矩阵


    矩阵加减

    include<stdio.h>

    main(){
    int i,j;
    printf("请输入行和列长度:");
    scanf("%d%d",&i,&j);
    int a[i][j],b[i][j],c[i][j];
    int m,n;
    printf("请输入A矩阵的元素:");
    for(m=0;m<i;m++){
    for(n=0;n<j;n++){
    scanf("%d",&a[m][n]);
    }
    }
    printf("请输入B矩阵的元素:");
    for(m=0;m<i;m++){
    for(n=0;n<j;n++){
    scanf("%d",&b[m][n]);
    }
    }
    //输出A矩阵
    printf(" ");
    for(m=0;m<i;m++){
    printf(" ");
    for(n=0;n<j;n++){
    printf("%d ",a[m][n]);
    }
    }
    //输出B矩阵
    printf(" ");
    for(m=0;m<i;m++){
    printf(" ");
    for(n=0;n<j;n++){
    printf("%d ",b[m][n]);
    }
    }
    //两矩阵相加
    printf(" ");
    for(m=0;m<i;m++){
    printf(" ");
    for(n=0;n<j;n++){
    printf("%d ",a[m][n]+b[m][n]);
    }
    }
    //两矩阵相减
    printf(" ");
    for(m=0;m<i;m++){
    printf(" ");
    for(n=0;n<j;n++){
    printf("%d ",a[m][n]-b[m][n]);
    }
    }
    //两矩阵相乘,两行列式为方阵或a的行与b的列相等
    printf(" ");
    if(i==j){
    for(m=0;m<i;m++){
    for(n=0;n<j;n++){
    c[m][n]=0;
    for(int k=0;k<i;k++){
    c[m][n]=c[m][n]+a[m][k]*b[k][m];
    }
    }
    }
    printf(" ");
    for(m=0;m<i;m++){
    printf(" ");
    for(n=0;n<j;n++){
    printf("%d ",c[m][n]);
    }
    }
    }
    }
    请输入行和列长度:3
    3
    请输入A矩阵的元素:1
    2
    3
    4
    5
    6
    7
    8
    9
    请输入B矩阵的元素:3
    4
    5
    6
    7
    8
    9
    7
    5

    1 2 3
    4 5 6
    7 8 9

    3 4 5
    6 7 8
    9 7 5

    4 6 8
    10 12 14
    16 15 14

    -2 -2 -2
    -2 -2 -2
    -2 1 4

    42 42 42
    93 93 93
    144 144 144

    include<stdio.h>

    main(){
    //a矩阵的行,必须等于b矩阵的列
    int i,j;
    printf("请输入行和列长度:");
    scanf("%d%d",&i,&j);
    int a[i][j],b[j][i],c1[i][i],c2[j][j];
    int m,n;
    printf("请输入A矩阵的元素:");
    for(m=0;m<i;m++){
    for(n=0;n<j;n++){
    scanf("%d",&a[m][n]);
    }
    }
    printf("请输入B矩阵的元素:");
    for(m=0;m<j;m++){
    for(n=0;n<i;n++){
    scanf("%d",&b[m][n]);
    }
    }
    //输出A矩阵
    printf(" ");
    for(m=0;m<i;m++){
    printf(" ");
    for(n=0;n<j;n++){
    printf("%d ",a[m][n]);
    }
    }
    //输出B矩阵
    printf(" ");
    for(m=0;m<j;m++){
    printf(" ");
    for(n=0;n<i;n++){
    printf("%d ",b[m][n]);
    }
    }
    //矩阵相乘
    for(m=0;m<i;m++){
    for(n=0;n<i;n++){
    c1[m][n]=0;
    for(int k=0;k<j;k++) {
    c1[m][n]=c1[m][n]+a[m][k]b[k][n];
    }
    }
    }
    for(m=0;m<j;m++){
    for(n=0;n<j;n++){
    c2[m][n]=0;
    for(int k=0;k<i;k++) {
    c2[m][n]=c2[m][n]+b[m][k]
    a[k][n];
    }
    }
    }
    printf(" ");
    for(m=0;m<i;m++){
    printf(" ");
    for(n=0;n<i;n++){
    printf("%d ",c1[m][n]);
    }
    }
    printf(" ");
    for(m=0;m<j;m++){
    printf(" ");
    for(n=0;n<j;n++){
    printf("%d ",c2[m][n]);
    }
    }
    }
    请输入行和列长度:3
    2
    请输入A矩阵的元素:1
    2
    3
    4
    5
    6
    请输入B矩阵的元素:7
    1
    2
    3
    4
    5

    1 2
    3 4
    5 6

    7 1 2
    3 4 5

    13 9 12
    33 19 26
    53 29 40

    20 30
    40 52

    include<stdio.h>

    main(){
    int k;
    printf("请输入方阵的行和列:");
    scanf("%d",&k);
    int a[k][k];
    int i,j;
    //上三角方阵
    printf("请输入上三角方阵的元素: ");
    for(i=0;i<k;i++){
    for(j=0;j<k;j++){
    if(i>j){
    a[i][j]=0;
    }
    else scanf("%d",&a[i][j]);
    }
    }
    for(i=0;i<k;i++){
    printf(" ");
    for(j=0;j<k;j++){
    printf("%d ",a[i][j]);
    }
    }
    //下三角方阵
    printf(" ");
    printf("请输入下三角方阵的元素: ");
    for(i=0;i<k;i++){
    for(j=0;j<k;j++){
    if(j>i){
    a[i][j]=0;
    }
    else scanf("%d",&a[i][j]);
    }
    }
    for(i=0;i<k;i++){
    printf(" ");
    for(j=0;j<k;j++){
    printf("%d ",a[i][j]);
    }
    }
    //对称矩阵
    printf(" ");
    printf("请输入对称矩阵的元素: ");
    for(i=0;i<k;i++){
    for(j=0;j<k;j++){
    if(i>j){
    a[i][j]=a[j][i];
    }
    else scanf("%d",&a[i][j]);
    }
    }
    for(i=0;i<k;i++){
    printf(" ");
    for(j=0;j<k;j++){
    printf("%d ",a[i][j]);
    }
    }
    //三对角矩阵
    printf(" ");
    printf("请输入三对角矩阵的元素: ");
    for(i=0;i<k;i++){
    for(j=0;j<k;j++){
    if(i>(j+1)||j>(i+1)){
    a[i][j]=0;
    }
    else scanf("%d",&a[i][j]);
    }
    }
    for(i=0;i<k;i++){
    printf(" ");
    for(j=0;j<k;j++){
    printf("%d ",a[i][j]);
    }
    }
    }
    请输入方阵的行和列:3
    请输入上三角方阵的元素:
    1
    2
    3
    4
    5
    6

    1 2 3
    0 4 5
    0 0 6
    请输入下三角方阵的元素:
    3
    4
    5
    6
    7
    8

    3 0 0
    4 5 0
    6 7 8
    请输入对称矩阵的元素:
    9
    2
    3
    4
    5
    6

    9 2 3
    2 4 5
    3 5 6
    请输入三对角矩阵的元素:
    7
    6
    5
    4
    43
    3
    2

    7 6 0
    5 4 43
    0 3 2

  • 相关阅读:
    ping 介绍
    密码学系列——简介密码学
    ActiveMQ c# 系列——进阶实例(三)
    转:LVS简介
    口罩与mask------看东西方文化差异
    Java设计模式之单利模式(Single Pattern)
    Cadence OrCAD Cpature创建Title Block
    终极干货,数组去重且显示每一个数据重复的次数
    LeetCode 64. 最小路径和 | Python
    LeetCode 剑指 Offer 11. 旋转数组的最小数字 | Python
  • 原文地址:https://www.cnblogs.com/javalv/p/10824314.html
Copyright © 2020-2023  润新知