• 《矩阵的一些基本操作》


      1 //矩阵的基本操作:矩阵相加,矩阵相乘,矩阵转置以及冒泡排序
      2 #include<stdio.h>
      3 #include<stdlib.h>
      4 #define M 2
      5 #define N 3
      6 #define P 4
      7 int main()
      8 {//主函数
      9     void XuanZhe();
     10     XuanZhe();
     11     system("pause");
     12     return 0;
     13 }
     14 
     15 void XuanZhe()
     16 {//选择函数
     17     int n;
     18     //函数声明
     19     void JuZhenXiangJia();
     20     void JuZhenXiangCheng();
     21     void JuZhenZhuanZhi();
     22     void MaoPaoPaiXu();
     23     void Max();
     24     void TuiChu();
     25     printf("	=======================================
    ");
     26     printf("		1,矩阵相加	3,矩阵相乘
    ");
     27     printf("		3,矩阵转置	4,冒泡排序
    ");
     28     printf("		5,求二维数组中最大值的行号和列号
    ");
     29     printf("		0,退出系统
    ");
     30     printf("	=======================================
    ");
     31     while(1)
     32     {
     33         printf("请输入你的选择:");
     34         scanf("%d",&n);
     35         switch(n)
     36         {
     37         case 1:printf("矩阵相加
    ");JuZhenXiangJia();break;
     38         case 2:printf("矩阵相乘
    ");JuZhenXiangCheng();break;
     39         case 3:printf("矩阵转置
    ");JuZhenZhuanZhi();break;
     40         case 4:printf("冒泡法排序
    ");MaoPaoPaiXu();break;
     41         case 5:printf("打雷台算法求二维数组中最大值的行号和列号
    ");Max();break;
     42         case 0:TuiChu();break;
     43         default:printf("输入的选项不存在!请重新输入
    ");
     44         }
     45     }
     46 }
     47 
     48 void JuZhenXiangJia()
     49 {//两个二维数组相加
     50     int i,j;
     51     int A[M][N],B[M][N],C[M][N];
     52     printf("请输入矩阵A的元素(矩阵A为两行三列矩阵):
    ");
     53     for(i=0;i<M;i++)
     54     {
     55         for(j=0;j<N;j++)
     56         {
     57             scanf("%d",&A[i][j]);
     58         }
     59     }
     60     printf("
    矩阵A如下所示:
    ");
     61     for(i=0;i<M;i++)
     62     {
     63         for(j=0;j<N;j++)
     64         {
     65             printf("%3d",A[i][j]);
     66         }
     67         printf("
    ");
     68     }
     69     printf("
    请输入矩阵B的元素(矩阵A为两行三列矩阵):
    ");
     70     for(i=0;i<M;i++)
     71     {
     72         for(j=0;j<N;j++)
     73         {
     74             scanf("%d",&B[i][j]);
     75         }
     76     }
     77     printf("
    矩阵B如下:
    ");
     78     for(i=0;i<M;i++)
     79     {
     80         for(j=0;j<N;j++)
     81         {
     82             printf("%3d",B[i][j]);
     83         }
     84         printf("
    ");
     85     }
     86     printf("
    ");
     87     //矩阵A和矩阵B的和放在矩阵C中
     88     for(i=0;i<M;i++)
     89     {
     90         for(j=0;j<N;j++)
     91         {
     92             C[i][j] = A[i][j]+B[i][j];
     93         }
     94     }
     95     printf("
    矩阵C如下:
    ");
     96     for(i=0;i<M;i++)
     97     {
     98         for(j=0;j<N;j++)
     99         {
    100             printf("%3d",C[i][j]);
    101         }
    102         printf("
    ");
    103     }
    104     printf("
    ");
    105 }
    106 
    107 void JuZhenXiangCheng()
    108 {//两个二维数组相乘
    109     int i,j,k;
    110     int A[M][N],B[N][P],C[M][P];
    111     printf("请输入矩阵A的元素(矩阵A为两行三列矩阵):
    ");
    112     for(i=0;i<M;i++)
    113     {
    114         for(j=0;j<N;j++)
    115         {
    116             scanf("%d",&A[i][j]);
    117         }
    118     }
    119     printf("
    矩阵A如下所示:
    ");
    120     for(i=0;i<M;i++)
    121     {
    122         for(j=0;j<N;j++)
    123         {
    124             printf("%3d",A[i][j]);
    125         }
    126         printf("
    ");
    127     }
    128     printf("
    请输入矩阵B的元素(矩阵A为三行四列矩阵):
    ");
    129     for(i=0;i<N;i++)
    130     {
    131         for(j=0;j<P;j++)
    132         {
    133             scanf("%d",&B[i][j]);
    134         }
    135     }
    136     printf("
    矩阵B如下:
    ");
    137     for(i=0;i<N;i++)
    138     {
    139         for(j=0;j<P;j++)
    140         {
    141             printf("%3d",B[i][j]);
    142         }
    143         printf("
    ");
    144     }
    145     printf("
    ");
    146     //矩阵A和矩阵B相乘,积放在矩阵C中
    147     for(i=0;i<M;i++)
    148     {
    149         for(j=0;j<P;j++)
    150         {
    151             C[i][j] = 0;
    152             for(k=0;k<N;k++)
    153             {
    154                 C[i][j] = C[i][j]+A[i][k]*B[k][j];
    155             }
    156         }
    157     }
    158     printf("
    矩阵C如下:
    ");
    159     for(i=0;i<M;i++)
    160     {
    161         for(j=0;j<P;j++)
    162         {
    163             printf("%5d",C[i][j]);
    164         }
    165         printf("
    ");
    166     }
    167     printf("
    ");
    168 }
    169 
    170 void JuZhenZhuanZhi()
    171 {//矩阵的转置
    172     int i,j;
    173     int A[M][N],B[N][M];
    174     printf("请输入矩阵A的元素(矩阵A为两行三列矩阵):
    ");
    175     for(i=0;i<M;i++)
    176     {
    177         for(j=0;j<N;j++)
    178         {
    179             scanf("%d",&A[i][j]);
    180         }
    181     }
    182     printf("
    矩阵A如下所示:
    ");
    183     for(i=0;i<M;i++)
    184     {
    185         for(j=0;j<N;j++)
    186         {
    187             printf("%3d",A[i][j]);
    188         }
    189         printf("
    ");
    190     }
    191     //矩阵转置为矩阵B
    192     for(i=0;i<M;i++)
    193     {
    194         for(j=0;j<N;j++)
    195         {
    196             B[j][i] = A[i][j];
    197         }
    198     }
    199     printf("转置后得到的矩阵B为:
    ");
    200     for(i=0;i<N;i++)
    201     {
    202         for(j=0;j<M;j++)
    203         {
    204             printf("%3d",B[i][j]);
    205         }
    206         printf("
    ");
    207     }
    208 }
    209 
    210 void MaoPaoPaiXu()
    211 {//冒泡法排序
    212     int i,j,t;
    213     int a[10];
    214     printf("请输入10个整数:
    ");
    215     for(i=0;i<10;i++)
    216     {
    217         scanf("%d",&a[i]);
    218     }
    219     printf("
    ");
    220     for(j=0;j<9;j++)    //进行9次循环,实行9趟比较
    221     {
    222         for(i=0;i<9-j;i++)    //在每一趟中比较9-j次
    223         {
    224             if(a[i]>a[i+1])
    225             {
    226                 t = a[i];
    227                 a[i] = a[i+1];
    228                 a[i+1] = t;
    229             }
    230         }
    231     }
    232     printf("排序后的数组为:
    ");
    233     for(i=0;i<10;i++)
    234     {
    235         printf("%3d",a[i]);
    236     }
    237     printf("
    ");
    238 }
    239 
    240 void Max()
    241 {//打雷台算法求二维数组中最大值的行和列
    242     int i,j,row=0,colum=0,max;
    243     int a[N][P];
    244     printf("请输入二维数组的元素(二维数组是三行四列):
    ");
    245     for(i=0;i<N;i++)
    246     {
    247         for(j=0;j<P;j++)
    248         {
    249             scanf("%d",&a[i][j]);
    250         }
    251     }
    252     printf("
    二维数组如下:
    ");
    253     for(i=0;i<N;i++)
    254     {
    255         for(j=0;j<P;j++)
    256         {
    257             printf("%3d",a[i][j]);
    258         }
    259         printf("
    ");
    260     }
    261     max = a[0][0];
    262     for(i=0;i<N;i++)
    263     {
    264         for(j=0;j<P;j++)
    265         {
    266             if(a[i][j]>max)
    267             {
    268                 max = a[i][j];
    269                 row = i;
    270                 colum = j;
    271             }
    272         }
    273     }
    274     printf("max=%d
    row=%d
    colum=%d
    ",max,row,colum);
    275 }
    276 
    277 void TuiChu()
    278 {//退出系统函数
    279     exit(0);
    280 }

  • 相关阅读:
    给我买个糖?
    主题反馈
    Git:初始化项目、创建合并分支、回滚等常用方法总结
    tomcat
    tomcat
    docker
    oracle树形结构层级查询之start with ....connect by prior、level、order by以及sys_connect_by_path之浅谈
    java时间类Date、Calendar及用法
    java如何将html过滤为纯文本
    小记Java时间工具类
  • 原文地址:https://www.cnblogs.com/sun-/p/5024492.html
Copyright © 2020-2023  润新知