當前位置:首頁 » 編程語言 » c語言矩陣乘法
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言矩陣乘法

發布時間: 2022-01-23 21:58:08

c語言矩陣乘法函數

函數類型是根據有無返回值判斷的,無返回值就把函數定義為void類型

如果是單純輸出矩陣那就不用返回了,如果還要傳回主函數有其它應用那就返回吧

❷ c語言 矩陣乘法

矩陣乘法程序,動態分配內存:

#include<stdio.h>

// b[j][k] * c[k][i] = a[j][i]
void matrix(int **b,int **c, int **a, int nx, int ny, int nk)
{
int i,j,k;
for (j=0;j<ny;j++)for(i=0;i<nx;i++)a[j][i]= 0;
for(j=0;j<ny;j++){
for(i=0;i<nx;i++){
for(k=0;k<nk;k++)a[j][i]+= b[j][k]*c[k][i];
};
};
}

void main()
{
int i,j,k,tmp;
int b_row,b_col;
int c_row,c_col;
int a_row,a_col;
int **b,**c,**a;

// 輸入B 陣 行數 列數
printf("please enter b_row b_col of matrix B\n");
scanf("%d %d",&b_row,&b_col);
c_row = b_col;

// 輸入C陣 列數
printf("please enter c_col of matrix C\n");
scanf("%d",&c_col);
a_row = b_row;
a_col = c_col;

a = (int **) malloc(sizeof(int *) * a_row);
for (j=0;j<a_row;j++){
a[j] = (int *) malloc(sizeof(int) * a_col);
}

b = (int **) malloc(sizeof(int *) * b_row);
for (j=0;j<b_row;j++){
b[j] = (int *) malloc(sizeof(int) * b_col);
}

c = (int **) malloc(sizeof(int *) * c_row);
for (j=0;j<c_row;j++){
c[j] = (int *) malloc(sizeof(int) * c_col);
}

if (!c[c_row-1]) {
printf("no enought memory\n");exit(0);
}
// 輸入B陣元素
printf("Please input int matrix b[%d][%d]\n",b_row,b_col);
for (j=0;j<b_row;j++)
for (i=0;i<b_col;i++){
scanf("%d",&tmp);
b[j][i] = tmp;
}
// 輸入C陣元素
printf("Please input int matrix c[%d][%d]\n",c_row,c_col);
for (j=0;j<c_row;j++)
for (i=0;i<c_col;i++){
scanf("%d",&tmp);
c[j][i] = tmp;
}

matrix( b ,c,a, a_col, a_row, b_col);

for(j=0;j<a_row;j++)
{
for (i=0;i<a_col;i++) printf("%d ",a[j][i]);
printf("\n");
};
}

❸ 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語言矩陣相乘

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語言矩陣乘法

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 "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"
#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語言編程求矩陣乘積

#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;
}

❾ 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語言編寫 :矩陣乘積的演算法

#include<stdio.h>
#include<string.h>
#define max_size 110
int a[max_size][max_size],b[max_size][max_size],c[max_size][max_size];
//a為x*y維 b為y*z維
void mxt_mul(int a[max_size][],int b[max_size][],int c[max_size][],int x,int y,int z)
{
memset(c,0,sizeof(c));
for(int k=0;k<y;k++)
{
for(int i=0;i<x;i++)
for(int j=0;j<y;j++)
{
c[i][j]+=a[i][k]*b[k][j];
}
}
}