求解!!!c语言作业

img

#include <stdlib.h>
#include <time.h>
#include <stdio.h>

int main()
{
    int a[100][100],b[100][100],c[100][100],m,n,o,i,j,k;
    scanf("%d%d%d",&m,&n,&o);
    srand(time(NULL));
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            a[i][j] = rand()%100+1;
            printf("%4d",a[i][j]);
        }
        printf("\n");
    }
    printf("\n");
    for(i=0;i<n;i++)
    {
        for(j=0;j<o;j++)
        {
            b[i][j] = rand()%100+1;
            printf("%4d",b[i][j]);
        }
        printf("\n");
    }
    printf("\n");
    for(i=0;i<m;i++)
    {
        for(j=0;j<o;j++)
        {
            c[i][j] = 0;
            for(k=0;k<n;k++)
                c[i][j] += a[i][k]*b[k][j];
        }
    }
    for(i=0;i<m;i++)
    {
        for(j=0;j<o;j++)
            printf("%6d",c[i][j]);
        printf("\n");
    }
}

望采纳

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

// 随机产生一个m*n的100以内的正整数矩阵
int** create_matrix(int m, int n) {
    int** matrix = (int**)malloc(m * sizeof(int*));
    for (int i = 0; i < m; i++) {
        matrix[i] = (int*)malloc(n * sizeof(int));
        for (int j = 0; j < n; j++) {
            matrix[i][j] = rand() % 100;
        }
    }
    return matrix;
}

// 输出矩阵
void print_matrix(int** matrix, int m, int n) {
    for (int i = 0; i < m; i++) {
        for (int j = 0; j < n; j++) {
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }
}

// 求矩阵乘积
int** multiply_matrices(int** A, int** B, int m, int n, int o) {
    int** C = (int**)malloc(m * sizeof(int*));
    for (int i = 0; i < m; i++) {
        C[i] = (int*)malloc(o * sizeof(int));
        for (int j = 0; j < o; j++) {
            C[i][j] = 0;
            for (int k = 0; k < n; k++) {
                C[i][j] += A[i][k] * B[k][j];
            }
        }
    }
    return C;
}

int main() {
    srand(time(NULL));

    int m, n, o;
    printf("输入矩阵A的行数和列数:");
    scanf("%d%d", &m, &n);
    int** A = create_matrix(m, n);
    printf("矩阵A:\n");
    print_matrix(A, m, n);

    printf("输入矩阵B的行数和列数:");
    scanf("%d%d", &n, &o);
    int** B = create_matrix(n, o);
    printf("矩阵B:\n");
    print_matrix(B, n, o);

    int** C = multiply_matrices(A, B, m, n, o);
    printf("矩阵C:\n");
    print_matrix(C, m, o);

    return 0;
}

解答如下

img

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int i, j, k, sum;
    int m,n,o;
    printf("输入m n o:\n");
    scanf("%d%d%d",&m,&n,&o);
    int a[m][n], b[n][o], c[m][o];
    printf("\n得到一个%d * %d的矩阵a:\n",m,n);
    for(i=0; i<m; i++)                  //处理矩阵a中的一行中各元素
    {
        for(j=0; j<n; j++)
        {
            a[i][j]=rand()%100;
            printf("%d ",a[i][j]);
        }
        printf("\n");
    }
    printf("\n得到一个%d * %d的矩阵b:\n",n,o);
    for(i=0; i<n; i++)//处理矩阵b中的一行中各元素
    {
        for(j=0; j<o; j++)
        {
            b[i][j]=rand()%100;
            printf("%d ",b[i][j]);
        }
        printf("\n");
    }
    for(i=0; i<m; i++)               //对矩阵c进行处理
    {
        for(j=0; j<o; j++)
        {
            sum=0;
            for(k=0; k<n; k++) //矩阵c中每一个元素的循环计算
            {
                sum+=a[i][k]*b[k][j]; //对矩阵c中的某一元素进行计算
            }
            c[i][j]=sum;           //给矩阵c中的某一元素进行赋值
        }
    }
    printf("\n得到一个%d * %d的矩阵c:\n",m,o);
    for(i=0; i<m; i++)          //输出矩阵c
    {
        for(j=0; j<o; j++)
            printf("%d ",c[i][j]);
        printf("\n");
    }
}

如有帮助,望采纳

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>

//两个随机矩阵相乘
void main()
{
    double a[2][3], b[3][2],d;  //定义一个2×3和3×2的矩阵
    srand((unsigned)time(NULL));  //播种随机数
    int i, j,k,l;
    printf("the array a is:\n");
    for (i = 0; i < 2; i++)  //生成一个随机的2×3矩阵
    {
        for (j = 0; j < 3; j++)
        {
            a[i][j] = rand() *10/ (double)RAND_MAX;  //随机数的范围是0~10
            printf("%7.5lf ", a[i][j]);
        }
        j = 0;
        printf("\n");
    }
    printf("\n");
    printf("the array b is:\n");
    k = 0, l = 0;
    for (; k < 3; k++)   //生成一个随机的3×2矩阵
    {
        for (; l < 2; l++)
        {
            b[k][l] = rand()*10 / (double)RAND_MAX;
            printf("%7.5lf ", b[k][l]);
        }
        l = 0;
        printf("\n");
    }
    printf("\n");
    printf("the result is:\n");
    i = j = k = l = 0;  //实现上述生成的随机矩阵相乘
    for (i=0; i < 2; i++)
    {
        for (l=0; l < 2; l++)
        {
            for (j=0,k=0,d=0; j < 3; j++, k++)
            {
                d =d+ a[i][j] * b[k][l];
            }
            printf("%7.5lf ", d);
        }
        printf("\n");
    }
}


这里有原题,第三题:
关于c语言的16个问题 - 百度文库

即学习了c编程,又巩固了高数,为何不自己试试呢?