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

c語言兩個n階方陣相乘

發布時間: 2022-12-10 20:58:41

『壹』 c語言:編寫完整程序:計算兩個矩陣的乘積。

#include
"stdio.h"
#include
"stdlib.h"
void
main
()
{
int
m,l,p,q;
printf("輸入第一個矩陣的維數m和l:\n");
scanf("%d%d",&m,&l);
printf("輸入第二個矩陣的維數p和q:\n");
scanf("%d%d",&p,&q);
while
(l!=p)
{
printf("兩個矩陣不匹配,不能進行相乘運算,請重新輸入...\n\n");
printf("輸入第一個矩陣的維數m和l:\n");
scanf("%d%d",&m,&l);
printf("輸入第二個矩陣的維數p和q:\n");
scanf("%d%d",&p,&q);
}
double
a[200][200]={0},
b[200][200]={0},sum=0;
int
i,j,k=0;
for
(i=0;i<m;i++)
{
for
(j=0;j<l;j++)
{
a[i][j]=(double)rand()/RAND_MAX;
}
}
printf("隨機矩陣a是:\n");
for
(i=0;i<m;i++)
{
for
(j=0;j<l;j++)
{
printf("%f
",a[i][j]);
}
printf("\n");
}
//cout<<"輸入一個3*2的矩陣:"<<endl;
for
(i=0;i<p;i++)
{
for
(j=0;j<q;j++)
{
b[i][j]=(double)rand()/RAND_MAX;
}
}
printf("隨機矩陣b是:\n");
for
(i=0;i<p;i++)
{
for
(j=0;j<q;j++)
{
printf("%f
",b[i][j]);
}
printf("\n");
}
printf("ab相乘結果為:\n");
for
(i=0;i<m;i++)
{
while
(k<q)
{
for
(j=0;j<q;j++)
{
sum
=
a[i][j]*b[j][k]+sum;
}
printf("%f
",sum);
k++;
sum=0;
}
k=0;
printf("\n");
}
}

『貳』 編寫一個C函數實現兩個n階矩陣相乘。

float a[n1][m];
float b[m][n2];
float s[n1][n2];
for(w=0;w<n1;w++)
{
for(j=0;j<n2;j++)
{
for(i=0;i<m;i++)
{
s[n1][n2]+=a[n1][m]*b[m][n2];
}
}
}

n1=n2=m時,就是兩個m階方陣的乘積。

『叄』 c語言緊急求助

兩個方陣相乘的C語言演算法

上面是我為別人回答的兩個方陣相乘的C語言演算法,你點開修改一下就可以使用了。

修改意見:方陣緯度修改為M*N;矩陣乘法最開頭要判斷A的第二個下標和B的第一個下標是否相同,否則報錯。

如果你只是想用三個按鍵寫程序(Ctrl,C,V),那這道題無解。

『肆』 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"
#defineLANGA4
#defineLANGB3
#defineLANGCLANGB
intmulti(doubleA[][LANGA],doubleB[][LANGB],doubleC[][LANGC],intlanga,intlangb,intlangc){
inti,j,k;
if(langa==LANGB&&langb==LANGA){
for(i=0;i<langa;i++)
for(j=0;j<langc;j++)
for(C[i][j]=k=0;k<langb;k++)
C[i][j]+=A[i][k]*B[k][j];
return0;
}
return-1;
}
intmain(intargv,char*argc[]){
doubleA[LANGB][LANGA],B[LANGA][LANGB],C[LANGB][LANGC];
inti,j;
for(i=0;i<LANGB;i++)
for(j=0;j<LANGA;A[i][j++]=1.0/(i+j+1));
for(i=0;i<LANGA;i++)
for(j=0;j<LANGB;B[i][j]=1.0+j++);
if(multi(A,B,C,LANGB,LANGA,LANGB))
return-1;
for(i=0;i<LANGB;i++){
for(j=0;j<LANGC;printf("%12.4le",C[i][j++]));
printf(" ");
}
return0;
}

運行樣例:

『陸』 c語言初學求兩個矩陣乘積問題

若然一矩陣的列數與另一矩陣的行數相等,則可定義這兩個矩陣的乘積。如A是m×n矩陣和B是n×p矩陣,它們是乘積AB是一個m×p矩陣,其中

(AB)[i,j]=A[i,1]*B[1,j]+A[i,2]*B[2,j]+...+A[i,n]*B[n,j]對所有i及j。

此乘法有如下性質:

(AB)C=A(BC)對所有k×m矩陣A,m×n矩陣B及n×p矩陣C("結合律").

(A+B)C=AC+BC對所有m×n矩陣A及B和n&tiems;k矩陣C("分配律")。

C(A+B)=CA+CB對所有m×n矩陣A及B和k×m矩陣C("分配律")。

要注意的是:可置換性不一定成立,即有矩陣A及B使得AB≠BA。

Q=M*N(Q的行數和M相同,列數和N相同)

其中,M是m1*n1矩陣,N是m2*n2矩陣。當n1=m2時有:

for(i=1;i<=m1;++i)

for(j=1;j<=n2;++j){

Q[i][j]=0;

for(k=1;k<=n1;++k)Q[i][j]+=M[i][k]*N[k][j];

}

『柒』 用c語言實現兩個矩陣相乘怎麼做

1、程序運行輸入數據時,第一行為A矩陣的行列數和B矩陣的行列數,接著分別輸入A、B兩個矩陣的值。

『捌』 求高手幫忙用c語言求出兩個矩陣的乘積

1、首先打開編程軟體,新建一個項目,添加一個double.cpp文件,如圖所示。

『玖』 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語言寫一個兩個矩陣相乘的函數

自己看看吧,可以同時都換成注釋的行,有助於你理解參數傳遞
:)======================================================
#include<stdio.h>
#define M 5
#define P 4
#define N 3
void mltp(float (*a)[P],float (*b)[N],float (*c)[N])
//void mltp(float *a,float *b,float *c)
{
for(int i=0;i<M;i++)
for(int j=0;j<N;j++)
for(int k=0;k<P;k++)
c[i][j]+=a[i][k]*b[k][j];
//c[i*N+j]+=a[i*P+k]*b[k*N+j];
}

void main()
{
int i,j;
float a[M][P],b[P][N];
float c[M][N]={0};
printf("plz input a,b:\n");
for(i=0;i<M;i++)
for(j=0;j<P;j++)
scanf("%f",&a[i][j]);
for(i=0;i<P;i++)
for(j=0;j<N;j++)
scanf("%f",&b[i][j]);
mltp(a,b,c);
//mltp(&a[0][0],&b[0][0],&c[0][0]);//等
//mltp((float*)a,(float*)b,(float*)c);//價
printf("result is:\n");
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
printf("%f\t",c[i][j]);
printf("\n");
}
}