#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;
}
解答如下
#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编程,又巩固了高数,为何不自己试试呢?