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语言实现矩阵相乘的主要内容,如果未能解决你的问题,请参考以下文章