qq_18147713 2021-12-14 20:20 采纳率: 73.8%
浏览 45
已结题

C语言编程问题求解答

题目描述
矩阵int a[n][n],矩阵int b[n][n](1≤n≤20)。矩阵的大小和数据由用户输入。输出新的矩阵c=a*b,以及其中的最小值和最大值,输出格式:
c00 c01 c02 …… c0(n-2) c0(n-1)
c10 c11 c12 …… c1(n-2) c1(n-1)
c20 c21 c22 …… c2(n-2) c2(n-1)
…… …… …… …… …… ……
c(n-2)0 c(n-2)1 c(n-2)2 …… c(n-2)(n-2) c(n-2)(n-1)
c(n-1)0 c(n-1)1 c(n-1)2 …… c(n-1)(n-2) c(n-1)(n-1)
cmin cmax

矩阵乘法的计算方法 :
对于矩阵A[n][n]*B[n][n],
相乘的结果为矩阵C[n][n],且对于矩阵C中每一项都有
C[i][j] = A[i][0]*B[0][j] + A[i][1]*B[1][j] + ..... + A[i][n-1]*B[n-1][j]

关于输入
第一行为矩阵的大小,后面跟着输入两个矩阵
n
a00 a01 a02 …… a0(n-2) a0(n-1)
a10 a11 a12 …… a1(n-2) a1(n-1)
a20 a21 a22 …… a2(n-2) a2(n-1)
…… …… …… …… …… ……
a(n-2)0 a(n-2)1 a(n-2)2 …… a(n-2)(n-2) a(n-2)(n-1)
a(n-1)0 a(n-1)1 a(n-1)2 …… a(n-1)(n-2) a(n-1)(n-1)
b00 b01 b02 …… b0(n-2) b0(n-1)
b10 b11 b12 …… b1(n-2) b1(n-1)
b20 b21 b22 …… b2(n-2) b2(n-1)
…… …… …… …… …… ……
b(n-2)0 b(n-2)1 b(n-2)2 …… b(n-2)(n-2) b(n-2)(n-1)
b(n-1)0 b(n-1)1 b(n-1)2 …… b(n-1)(n-2) b(n-1)(n-1)

关于输出
矩阵c
c00 c01 c02 …… c0(n-2) c0(n-1)
c10 c11 c12 …… c1(n-2) c1(n-1)
c20 c21 c22 …… c2(n-2) c2(n-1)
…… …… …… …… …… ……
c(n-2)0 c(n-2)1 c(n-2)2 …… c(n-2)(n-2) c(n-2)(n-1)
c(n-1)0 c(n-1)1 c(n-1)2 …… c(n-1)(n-2) c(n-1)(n-1)
cmin cmax

例子输入
3
1 2 3
4 5 6
7 8 9
1 2 3
4 5 6
7 8 9
例子输出
30 36 42
66 81 96
102 126 150
30 150
提示信息
注意矩阵边界,以防计算时越界

  • 写回答

2条回答 默认 最新

  • karma fire 2021-12-14 20:55
    关注

    请问有哪里需要解答的地方吗?

    #include<stdio.h>
    int main()
    {
        int a[20][20],b[20][20],c[20][20]={0},i,j,k,min,max,n;
        scanf("%d",&n);
        for(i=0;i<=n-1;++i)
            for(j=0;j<=n-1;++j)
                scanf("%d",&a[i][j]);
        for(i=0;i<=n-1;++i)
            for(j=0;j<=n-1;++j)
                scanf("%d",&b[i][j]);
        for(i=0;i<=n-1;++i)
            for(j=0;j<=n-1;++j)
                for(k=0;k<=n-1;++k)
                    c[i][j]+=a[i][k]*b[k][j];
        min=max=c[0][0];
        for(i=0;i<=n-1;++i)
            for(j=0;j<=n-1;++j)
            {
                if(min>c[i][j])
                    min=c[i][j];
                if(max<c[i][j])
                    max=c[i][j];
            }
        for(i=0;i<=n-1;++i)
        {
            for(j=0;j<=n-1;++j)
            {
                printf("%d",c[i][j]);
                if(j!=n-1)
                    printf(" ");
            }
            printf("\n");
        }
        printf("%d %d",min,max);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 12月23日
  • 已采纳回答 12月15日
  • 创建了问题 12月14日

悬赏问题

  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥20 java在应用程序里获取不到扬声器设备