• 矩阵相乘


    矩阵相乘的程序:

     1 #include <stdio.h>
     2 #include <stdlib.h>
     3 
     4 bool check(int row1,int col1,int row2,int col2){//检测两个矩阵是否可以相乘 
     5     if(row1>0&&col1>0&&row1>0&&col2>0){
     6         if(col1==row2)
     7             return 1;
     8         else
     9             return 0;
    10     }    
    11     else{
    12         return 0;    
    13     }
    14 } 
    15 
    16 int *multiplication(int *arr1,int *arr2,int row1,int col1,int row2,int col2){//矩阵相乘函数 
    17     int *temp=(int *)malloc(row1*col2*sizeof(int));
    18     for(int i=0;i<row1;i++){
    19         for(int j=0;j<col2;j++){
    20             int sum=0;
    21             for(int a=0;a<col1;a++){
    22                 sum=sum+ (*(arr1+i*col1+a)) * (*(arr2+a*col2+j));  // ia * aj -->ij 所以压着i,j把a走一遍   
    23             }
    24             *(temp+i*col2+j)=sum;   //表示第i行的第j列   
    25         }
    26     }
    27     return temp;
    28 } 
    29 
    30 int main(){
    31     int row1=1,col1=1, row2=2,col2=1;
    32     int i,j;
    33 label:
    34     printf("请输入要输入的两个矩阵的行数列数:
    ");
    35     printf("第一个矩阵的行数列数:");
    36     scanf("%d%d",&row1,&col1);
    37     printf("第二个矩阵的行数列数:");
    38     scanf("%d%d",&row2,&col2);
    39     
    40     if(check(row1,col1,row2,col2)){
    41         
    42         //第一个矩阵资料的录入
    43         printf("请输入第一个矩阵的数据:
    ");
    44         int *myarr1=(int *)malloc(row1*col1*sizeof(int)) ;//分配内存空间  有关malloc()看来需要写一篇博客 
    45         //申请矩阵1 所需的空间
    46         for(i=0;i<row1;i++){
    47             for(j=0;j<col1;j++){
    48                 scanf("%d",myarr1+col1*i+j);    //scanf的输入特性    
    49             }
    50         } 
    51         
    52         //第二个矩阵资料的录入
    53         printf("请输入第二个矩阵的数据:
    ");
    54         int *myarr2=(int *)malloc(row2*col2*sizeof(int)) ;
    55         //申请矩阵1 所需的空间
    56         for(i=0;i<row2;i++){
    57             for(j=0;j<col2;j++){
    58                 scanf("%d",myarr2+col2*i+j);
    59             }
    60         } 
    61          
    62         //两个矩阵的显示
    63         printf("两个矩阵的资料分别为:
    ");
    64         for(i=0;i<row1;i++){
    65             for(j=0;j<col1;j++){
    66                 printf("%3d",*(myarr1+i*col1+j));
    67             }
    68             printf("
    ");
    69         }
    70         printf("
    ");
    71         for(i=0;i<row2;i++){
    72             for(j=0;j<col2;j++){
    73                 printf("%3d",*(myarr2+i*col2+j));
    74             }
    75             printf("
    ");
    76         }
    77         
    78         int *result=multiplication(myarr1,myarr2,row1,col1,row2,col2);
    79         printf("矩阵相乘的结果矩阵为:
    ");
    80         
    81         for(i=0;i<row1;i++){
    82             for(j=0;j<col2;j++){
    83                 printf("%3d",*(result+i*col2+j));
    84             }
    85             printf("
    ");
    86         }
    87     }
    88     else{
    89         printf("所输入的两个矩阵不可以相乘
    请重新输入:
    ");
    90         goto label;
    91     }
    92         
    93 } 
  • 相关阅读:
    b/s批量下载文件
    b/s批量下载图片
    python函数总结(转载的 有空看下)
    使用命令行执行需要传参的 py文件的方法
    Jmeter3.1官方自带的HTML图形测试报告 + 汉化 (Jmeter 3.1~5.0通用)(有空试一下)
    Jmeter 获取响应时间图形、TPS的三个插件(有空试一下)
    把表里面的字段连起来 输出到一个字段里面的方法 concat()
    testng要了解的
    包的相互调用的方法
    包目录展示方法设置,和 包里面建包的方法
  • 原文地址:https://www.cnblogs.com/liugl7/p/4821451.html
Copyright © 2020-2023  润新知