当前位置:首页 » 编程语言 » c语言矩阵乘法

c语言矩阵乘法

发布时间: 2022-02-04 03:21:18

c语言关于矩阵乘法的函数,,

#include "stdio.h"
#include "stdlib.h"
#include "malloc.h"
void multiplication(int a,int b,int c,int *p,int *q);
void main()
{
int m,n,l,h;
int i,j,g,k;
int *p,*q;
char x;
printf("请输入a矩阵行数和列数,以空格分开,,,");
scanf("%d %d",&m,&n);
p=(int *)malloc(sizeof(int)*m*n);

for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
printf("请输入a矩阵%d行%d列的数,,",(i+1),(j+1));
scanf("%d",(p+m*i+j));
}
printf("请输入b矩阵行数和列数,以空格分开,,,");
scanf("%d %d",&l,&h);
q=(int *)malloc(sizeof(int)*l*h);
for(g=0;g<l;g++)
for(k=0;k<h;k++)
{
printf("请输入b矩阵%d行%d列的数,,",(g+1),(k+1));
scanf("%d",(q+l*g+k));
}
multiplication( m, n, h, p, q);
}
void multiplication(int a,int b,int c,int *p,int *q)
{
int i,j;
int k;
int sum;
for(i=0;i<a;i++)
{
for(j=0;j<c;j++)
{
sum=0;
for(k=0;k<b;k++)
{
sum=sum+(*(p+a*i+k))*(*(q+b*k+j));
}
printf("%d ",sum);
}
printf("\n");
}
}
附带一组测试数据

A 3 4
2 1
B 3
4
Result
25
10
结果正确。

❷ C语言,矩阵乘法求解

给,改好的:
#include <stdio.h>
#include <math.h>
int main ()
{
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},b[4][2]={1,1,1,1,2,2,2,2},c[3][2],i,j;

for (i=0;i<3;i++)
{
for (j=0;j<2;j++)
{
c[i][j] = 0;
for (x=0;x<4;x++)
c[i][j]+=a[i][x]*b[x][j];
}
}
for (i=0;i<3;i++)
{
for (j=0;j<2;j++)
printf("%d ",c[i][j]);
printf("\n");
}
}

❸ c语言矩阵乘法函数

函数类型是根据有无返回值判断的,无返回值就把函数定义为void类型

如果是单纯输出矩阵那就不用返回了,如果还要传回主函数有其它应用那就返回吧

❹ c语言矩阵相乘

for(i=0;i<m;i++)
for(j=0;j<n;j++)
for(k=0;k<g;k++)
scanf("%d%d",&a[i][k],&b[k][j]);
不对

❺ C语言编程求矩阵乘积。

#include "iostream.h"

void MatrixChain(int *p,int n,int **m,int **s)

{

for(int i=1;i<=n;i++)

m[i][i]=0;

for(int r=2;r<=n;r++)

for( i=1;i<=n-r+1;i++)

{

int j=i+r-1;

m[i][j]=m[i+1][j]+p[i-1]*p[i]*p[j];

s[i][j]=i;

for(int k=i+1;k<j;k++)

{

int t=m[i][k]+m[k+1][j]+p[i-1]*p[k]*p[j];

if(t<m[i][j])

{

m[i][j]=t;

s[i][j]=k;

}

}

}

}

❻ C语言中两矩阵相乘

#include <stdio.h>
int main()
{
int x,y,z;
int i,j,l;
int sum=0;
printf("请输入前一个矩阵的行数,列数与后一个矩阵的列数:\n");
scanf("%d %d %d",&x,&y,&z);
int a[x][y];
int b[y][z];
int c[x][z];
//读入矩阵
printf("请输入矩阵a:\n");
for(i=0;i<x;i++){
for(j=0;j<y;j++){
scanf("%d",&a[i][j]);
}
}
printf("请输入矩阵b:\n");
for(i=0;i<y;i++){
for(j=0;j<z;j++){
scanf("%d",&b[i][j]);
}
}
printf("矩阵a为:\n");
for(i=0;i<x;i++){
for(j=0;j<y;j++){
printf("%d",a[i][j]);
if(j==y-1)
printf("\n");
else
printf("\t");
}
}
printf("矩阵b为:\n");
for(i=0;i<y;i++){
for(j=0;j<z;j++){
printf("%d",b[i][j]);
if(j==z-1)
printf("\n");
else
printf("\t");
}
}
for(i=0;i<x;i++){
for(l=0;l<z;l++){
for(j=0;j<y;j++){
sum+=a[i][j]*b[j][l];
if(j==y-1){
c[i][l]=sum,sum=0;
}
}
}
}
printf("矩阵a与矩阵b的乘积为:\n");
for(i=0;i<x;i++){
for(j=0;j<z;j++){
printf("%d",c[i][j]);
if(j==z-1)
printf("\n");
else
printf("\t");
}
}

return 0;
}

❼ c语言矩阵乘法

main()
{
int i=0,j=0,k=0,n=0,m=0;/*k
为待输入值
*/
int s=0;/*
此处作为输出变量
*/
int middle=0; /*
中间值
*/
int a[row][line],b[line][row];
long c[row][row];
for(i=0;i<row;i++)
{
for(j=0;j<line;j++)
{
scanf("%d",&k);
a[i][j]=k;
printf("\ta[%d][%d]=%d\n",i,j,a[i][j]);
}
}
printf("\n");
for(i=0;i<line;i++)
{
for(j=0;j<row;j++)
{
scanf("%d",&k);
b[i][j]=k;
printf("\tb[%d][%d]=%d\n",i,j,b[i][j]);
}
}

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

//矩阵乘法属于线性代数;矩阵乘法的原理不难,只要原理搞请,代码很好写的

#include<stdio.h>

/*功能为计算给定的矩阵a(m行n列)和矩阵b(n行t列)的乘积矩阵c*/

void f(int a[3][4], int b[4][3], int c[3][3], int m, int n, int t) {

//矩阵乘法:前行乘后列

//矩阵a的行(m)作为矩阵c的行

//矩阵b的列(t)作为矩阵c的列

for (int i = 0; i < m; i++) {//新矩阵m行

for (int j = 0; j < t; j++) {//新矩阵t列

int sum=0;

for (int k = 0; k < n; k++) {

sum += (a[i][k] * b[k][j]);//行列对应相乘,然后累加

}

c[i][j]=sum;

}

}

}

/* 请在这里填写答案 */

/*

1 2 3 4

2 3 4 5

3 4 5 6

1 2 3

2 3 4

3 4 5

4 5 6

*/

int main() {

int i, j, a[3][4], b[4][3], c[3][3];

for (i = 0; i < 3; i++)

for (j = 0; j < 4; j++)

scanf("%d", &a[i][j]);

for (i = 0; i < 4; i++)

for (j = 0; j < 3; j++)

scanf("%d", &b[i][j]);


f(a, b, c, 3, 4, 3);

for (i = 0; i < 3; i++) {

for (j = 0; j < 3; j++)

printf("%5d", c[i][j]);

printf(" ");

}

}

❾ c语言程序n维矩阵乘法

http://..com/q?word=C+%BE%D8%D5%F3%B3%CB%B7%A8&ct=17&pn=0&tn=ikaslist&rn=10

❿ C语言编程求矩阵乘积

#defineMAX50
#defineMMAX
#defineNMAX
#defineTMAX
#defineSMAX

intMult(doublea[][N],intm,intn,doubleb[][T]ints,intt,doublec[][T]){
inti,j,k;
if(n!=s){
printf("两矩阵相乘,左矩阵的列数与右矩阵的行数必须相等。 ");
return0;
}
intc;
tmp.m_Mat=newdouble*[tmp.m_Rows];
for(inti=0;i<tmp.m_Rows;i++)tmp.m_Mat[i]=newdouble[tmp.m_Cols];
for(i=0;i<m;++i){
for(j=0;j<n;++j){
c[i][j]=0;
for(k=0;k<t;++k)
c[i][j]+=c[i][k]*c[k][j];
}
}
return1;
}

热点内容
安卓手机怎么切两个屏 发布:2025-01-10 10:33:51 浏览:680
python上传图片 发布:2025-01-10 10:30:54 浏览:204
培训班编程 发布:2025-01-10 10:27:56 浏览:754
plc没有编译什么意思 发布:2025-01-10 10:17:20 浏览:841
jdk源码学习 发布:2025-01-10 10:07:15 浏览:7
lumion怎么更改缓存文件的路径 发布:2025-01-10 09:57:19 浏览:396
网吧收费主机怎么查服务器ip 发布:2025-01-10 09:52:16 浏览:748
如何测量出电脑配置 发布:2025-01-10 09:29:40 浏览:522
氟压缩机型号 发布:2025-01-10 09:25:07 浏览:117
溢价算法 发布:2025-01-10 09:23:04 浏览:201