c语言实现矩阵相乘

Posted luoqingci

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言实现矩阵相乘相关的知识,希望对你有一定的参考价值。

一、问题描述。

用动态二维数组的知识进行矩阵相乘。

二、设计思路。

1、申请两个动态二维数组。

2、输入两个矩阵的行数和列数。

3、如果满足前一个矩阵的列数等于第二个矩阵的行数,就让前一个矩阵的x行的第y个元素乘以后一个矩阵的x列的第y的元素。

4、以矩阵的形式输出。

三、程序流程图。

 

 

四、代码实现。

#include <stdio.h>
#include<stdlib.h>
#include<math.h>
int main()

int Ra, Ca, Rb, Cb;
int *p = NULL, *q = NULL, *y = NULL;
scanf("%d%d", &Ra, &Ca);
p = (int *)malloc((Ra*Ca)*sizeof(int));
if (p == NULL)

printf("没有足够空间!\\n");
exit(1);

else

for (int i = 0; i < Ra; i++)

for (int j = 0; j < Ca; j++)

scanf("%d", p + i*Ca + j);



scanf("%d%d", &Rb, &Cb);
q = (int *)malloc((Rb*Cb)*sizeof(int));
if (q == NULL)

printf("没有足够空间!\\n");
exit(1);

else

for (int i = 0; i < Rb; i++)

for (int j = 0; j < Cb; j++)

scanf("%d", q + i*Cb + j);



if (Ca != Rb)

printf("Error: %d != %d", Ca, Rb);

else

y = (int *)calloc((Ra*Cb), sizeof(int));
if (y == NULL)

printf("没有足够空间!\\n");
exit(1);

else

printf("%d %d", Ra, Cb);
printf("\\n");
for (int i = 0; i < Ra; i++)

for (int j = 0; j < Cb; j++)

for (int k = 0; k < Ca; k++)

*(y + i*Cb + j) += *(p + i*Ca + k)* *(q + k*Cb + j);

if (j < Cb - 1)

printf("%d ", *(y + i*Cb + j));

else if (j == Cb - 1)

printf("%d", *(y + i*Cb + j));


printf("\\n");



free(q);
free(p);
free(y);
return 0;

 

C语言中求两数相乘的程序

最好详细一点.

思路:double类型的范围: -1.7*10(-308)~1.7*10(308),如果两个数的乘积不超过这样的精度,可以直接使用*符号进行运算。

参考代码:

#include<stdio.h>
int main()

double a,b;
scanf("%lf%lf",&a,&b);
printf("%.2lf",a*b); //保留两位小数
return 0;

/*
运行结果:
1205 5985
7211925.00
*/
参考技术A #include "stdafx.h"
#include<stdio.h>

long int main(int argc, char* argv[])

long int x,y,num;
scanf("%d,%d",&x,&y);
num=x*y;
printf("num=%d\n",num);

return 0;


已经验证过,绝对可用。输入数字式格式格式为 34,35(就是2个数字) 然后点回车,就OK了.
一楼那位仁兄的程序我调试过了,运行没问题,但是输出格式有问题,看不懂得。
参考技术B #include<stdio.h>
void main()

double d;
scanf("%lf,%lf\n",&i,&j);
d=ji(i,j);
printf("%lf",d);

double ji(double i,double j)

double z;
z=i*j;
return z;

随手遍的不知道对不对呵呵
参考技术C int main()

double a, b;
scanf("%lf %lf", &a, &b);
printf("%lg\n", a * b);
return 0;
参考技术D 这个问题太低级了吧……

以上是关于c语言实现矩阵相乘的主要内容,如果未能解决你的问题,请参考以下文章

c语言的矩阵乘法问题 初学者求助

C语言2个数相乘

二阶矩阵与三阶矩阵相乘的C语言

c语言编程。两个5*5矩阵相乘

C语言矩阵相乘

C语言中求两数相乘的程序