如果確定距陣的大小長度,定義兩個二維數組,用兩個for循環(huán)兩數據輸入到內存,是每兩個for輸入一個數組,然后定義另外一個數組,用來得到結果距陣,再用三個嵌套的for將結果放入第三個數組當中,即c[i][j]=a[i][k]+b[k][j],k是在第三重循環(huán),這樣就可以得到要求的距陣,如果不確定大小長度就在輸入語句的每個for循環(huán)的轄區(qū)內加一個變量作為標記程序運行時求出距陣的大小
防城港ssl適用于網站、小程序/APP、API接口等需要進行數據傳輸應用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!
#define?MAX?50
#define?M?MAX
#define?N?MAX
#define?T?MAX
#define?S?MAX
int?Mult(double?a[][N],int?m,int?n,double?b[][T]int?s,int?t,double?c[][T])?{
int?i,j,k;
if(n?!=?s)?{
printf("兩矩陣相乘,左矩陣的列數與右矩陣的行數必須相等。\n");
return?0;
}
int?c;
tmp.m_Mat?=?new?double?*[tmp.m_Rows];
for(int?i?=?0;i??tmp.m_Rows;i++)?tmp.m_Mat[i]?=?new?double[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];
}
}
return?1;
}
童鞋,不知道你是用的什么測試數據,在我的機器上測試了幾組數據,結果都是正確的。
重復下我的測試代碼。
#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;im;i++)
for(j=0;jn;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;gl;g++)
for(k=0;kh;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;ia;i++)
{
for(j=0;jc;j++)
{
sum=0;
for(k=0;kb;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
結果正確。
1,若程序定義為三行三列的矩陣,并在主函數中鍵盤賦值。請編寫函數juzhen(int a[][3],int n),函數功能是:使矩陣左下角元素中的值乘以.例如:若矩陣中的值為:
1 9 7
2 3 8
4 5 6
n=3,則矩陣值變?yōu)椋?/p>
1 9 7
6 9 8
12 15 18
注:二維數組下三角元素每行最后元素的列標和該列的列號一致
#include stdio.h
int juzhen(int a[][3],int n)
{
int i,j;
for (i=1;i3;i++)
for (j=0;j=i;j++)
a[i][j]=a[i][j]*n;
}
main()
{
int i,j,a[3][3],m;
clrscr();
printf("please enter 9 numbers :\n");
for (i=0;i3;i++)
for (j=0;j3;j++)
scanf("%d",a[i][j]);
printf("the old ju zhen is:\n");
for (i=0;i3;i++)
{
for (j=0;j3;j++)
printf("%3d",a[i][j]);
printf("\n");
}
printf("please enter a int number:\n");
scanf("%d",m);
juzhen (a,m);
printf("the new ju zhen is:\n");
for (i=0;i3;i++)
{
for (j=0;j3;j++)
printf("%3d",a[i][j]);
printf("\n");
}
}
2,請編寫函數juzhen,該函數的功能是:將三行四列矩陣x乘以四行三列矩陣y,結果放在三行三列矩陣中。矩陣相乘的基本方法是:矩陣Xy中行列下標分別為i,j的元素的值,是矩陣X中第i行上四個元素與矩陣Y中第j列上四個元素對應相乘的積。
X和Y矩陣原型可運行后看到!
#include conio.h
#include stdio.h
void juzhen (int a[3][4],int b[4][3],int ab[3][3])
{
int i,j,z;
for (i=0;i3;i++)
for (j=0;j4;j++)
for (z=0;z3;z++)
ab[i][z]=ab[i][z]+a[i][j]*b[j][z];/*此得為要填寫的內容*/
}
main()
{
int x[3][4]={1,0,1,1,2,1,0,1,1,2,0,3};
int y[4][3]={1,1,1,0,0,0,2,1,1,1,1,3};
int xy[3][3]={0},i,j;
clrscr();
juzhen (x,y,xy);
printf("x ju zhen is:\n");
for (i=0;i3;i++)
{
for (j=0;j4;j++)
printf("%3d",x[i][j]);
printf("\n");
}
printf("y ju zhen is:\n");
for (i=0;i4;i++)
{
for (j=0;j3;j++)
printf("%3d",y[i][j]);
printf("\n");
}
printf("xy ju zhen is:\n");
for (i=0;i3;i++)
{
for (j=0;j3;j++)
printf("%3d",xy[i][j]);
printf("\n");
}
}
由于你沒有說要求,我就寫了兩個,這是兩道比較精典的求c語言矩陣乘法程序
網站標題:c語言怎么寫矩陣相乘函數,c語言矩陣相乘是怎么乘的
新聞來源:http://chinadenli.net/article36/hdogpg.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站維護、小程序開發(fā)、網站收錄、定制網站、標簽優(yōu)化、建站公司
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)