中国铁路事业奋斗者 2022-06-08 07:38 采纳率: 100%
浏览 198
已结题

C语言制作稀疏矩阵运算器,要求不使用三重及三重以上嵌套循环,时间复杂度较低

C语言做一个稀疏矩阵运算器,要求不使用三重及三重以上嵌套循环,并且时间复杂度较低,可以实现矩阵运算器的矩阵转置,矩阵加减法,矩阵乘法,退出运算五个功能,可以适当追加赏金。

  • 写回答

5条回答 默认 最新

  • fuill 2022-06-08 11:16
    关注

    解答如下

    img

    #include<stdio.h>
    void input(int n,int t[][n])
    {
        for(int i=0; i<n; i++)
        {
            for(int j=0; j<n; j++)
            {
                scanf("%d",&t[i][j]);
            }
        }
    }
    void put(int n,int t[][n])
    {
        for(int i=0; i<n; i++)
        {
            for(int j=0; j<n; j++)
            {
                printf("%d ",t[i][j]);
            }
            printf("\n");
        }
        printf("\n");
    }
    void swap(int *a,int *b)
    {
        int c=*a;
        *a=*b;
        *b=c;
    }
    void trans(int n,int t[][n])
    {
        for(int i=0; i<n; i++)
        {
            for(int j=i; j<n; j++)
            {
                swap(&t[i][j],&t[j][i]);
            }
        }
    }
    void add(int n,int t1[][n],int t2[][n])
    {
        for(int i=0; i<n; i++)
        {
            for(int j=0; j<n; j++)
            {
                t1[i][j]+=t2[i][j];
            }
        }
    }
    
    void mul(int n,int t1[][n],int t2[][n])
    {
        for(int i=0; i<n; i++)
        {
            for(int j=0; j<n; j++)
            {
                t1[i][j]*=t2[i][j];
            }
        }
    }
    int main()
    {
        int n;
        printf("1,转置\n");
        printf("2,加法\n");
        printf("3,乘法\n");
        printf("other,退出\n");
        int option;
        scanf("%d",&option);
        if(option==1)
        {
            printf("输入矩阵行数:");
            scanf("%d",&n);
            printf("输入矩阵:\n");
            int t1[n][n];
            input(n,t1);
            trans(n,t1);
            printf("--------\n");
            put(n,t1);
        }
        else if(option==2)
        {
            printf("输入矩阵行数:");
            scanf("%d",&n);
            int t1[n][n];
            int t2[n][n];
            printf("输入矩阵1:\n");
            input(n,t1);
            printf("输入矩阵2:\n");
            input(n,t2);
            add(n,t1,t2);
            printf("--------\n");
            put(n,t1);
        }
        else if(option==3)
        {
            printf("输入矩阵行数:");
            scanf("%d",&n);
            int t1[n][n];
            int t2[n][n];
            printf("输入矩阵1:\n");
            input(n,t1);
            printf("输入矩阵2:\n");
            input(n,t2);
            mul(n,t1,t2);
            printf("--------\n");
            put(n,t1);
        }
        else
        {
            return 0;
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 6月16日
  • 已采纳回答 6月8日
  • 修改了问题 6月8日
  • 修改了问题 6月8日
  • 展开全部

悬赏问题

  • ¥20 BAPI_PR_CHANGE how to add account assignment information for service line
  • ¥500 火焰左右视图、视差(基于双目相机)
  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?