童鞋,不知道你是用的什么測(cè)試數(shù)據(jù),在我的機(jī)器上測(cè)試了幾組數(shù)據(jù),結(jié)果都是正確的。
成都創(chuàng)新互聯(lián)公司是創(chuàng)新、創(chuàng)意、研發(fā)型一體的綜合型網(wǎng)站建設(shè)公司,自成立以來(lái)公司不斷探索創(chuàng)新,始終堅(jiān)持為客戶提供滿意周到的服務(wù),在本地打下了良好的口碑,在過(guò)去的十多年時(shí)間我們累計(jì)服務(wù)了上千家以及全國(guó)政企客戶,如成都自拌料攪拌車等企業(yè)單位,完善的項(xiàng)目管理流程,嚴(yán)格把控項(xiàng)目進(jìn)度與質(zhì)量監(jiān)控加上過(guò)硬的技術(shù)實(shí)力獲得客戶的一致贊美。
重復(fù)下我的測(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("請(qǐng)輸入a矩陣行數(shù)和列數(shù),以空格分開,,,");
scanf("%d
%d",m,n);
p=(int
*)malloc(sizeof(int)*m*n);
for(i=0;im;i++)
for(j=0;jn;j++)
{
printf("請(qǐng)輸入a矩陣%d行%d列的數(shù),,",(i+1),(j+1));
scanf("%d",(p+m*i+j));
}
printf("請(qǐng)輸入b矩陣行數(shù)和列數(shù),以空格分開,,,");
scanf("%d
%d",l,h);
q=(int
*)malloc(sizeof(int)*l*h);
for(g=0;gl;g++)
for(k=0;kh;k++)
{
printf("請(qǐng)輸入b矩陣%d行%d列的數(shù),,",(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");
}
}
附帶一組測(cè)試數(shù)據(jù)
A
3
4
2
1
B
3
4
Result
25
10
結(jié)果正確。
用C語(yǔ)言編寫程序(兩個(gè)矩陣相加)代碼如下:
/**
MatrixAddition.c
實(shí)現(xiàn)兩個(gè)矩陣相加
*/
#includestdio.h
const int COLS=3;
void printMatirx(int *pArray,int rows,int cols);
void printMatirx2(int (*pArray)[COLS],int rows);
int main()
{
int A[3][4]={{15,10,9,12},
{18,14,8,7},
{16,13,6,11}};
printf("矩陣A=\n");
printMatirx(A,3,4);
int B[3][4]={{4,3,5,2},
{0,9,6,1},
{5,7,2,6}};
printf("矩陣B=\n");
printMatirx(B,3,4);
int C[3][4];
int i,j;
//矩陣相加:兩個(gè)矩陣必須行數(shù)和列數(shù)一樣才能相加,
//和矩陣的每個(gè)元素分別是兩個(gè)矩陣對(duì)應(yīng)的元素的和
printf("矩陣A+矩陣B=\n");
for(i=0;i3;i++)//控制行
{
for(j=0;j4;j++)
{
C[i][j]=A[i][j]+B[i][j];
//printf("%3d",C[i][j]);//輸出結(jié)果
}
//? ? ? ? printf("\n");
}
int (*p)[COLS]=C;
printMatirx2(p,3);
/*結(jié)果應(yīng)為:
19 13 14 14
18 23 14? 8
21 20? 8 17
*/
printf("矩陣C-矩陣A=\n");
for(i=0;i3;i++)//控制行
{
for(j=0;j4;j++)
{
printf("%3d",C[i][j]-A[i][j]);//輸出結(jié)果
}
printf("\n");
}
/*結(jié)果應(yīng)為:
4? 3? 5? 2
0? 9? 6? 1
5? 7? 2? 6
*/
//矩陣數(shù)乘:
int D[3][4];
printf("矩陣D:\n");
for(i=0;i3;i++)//控制行
{
for(j=0;j4;j++)
{
D[i][j]=1;
printf("%d\t", D[i][j]);//輸出結(jié)果
}
printf("\n");
}
int mul;
printf("矩陣D數(shù)乘以:");
scanf("%d",mul);
printf("矩陣D數(shù)乘以%d=\n",mul);
for(i=0;i3;i++)//控制行
{
for(j=0;j4;j++)
{
D[i][j]=D[i][j]*mul;
printf("%d\t", D[i][j]);//輸出結(jié)果
}
printf("\n");
}
return 0;
}
擴(kuò)展資料:
C語(yǔ)言矩陣加減法函數(shù):
void matrix_a(double **a_matrix, const double **b_matrix, const double **c_matrix,int krow, int kline, int ktrl)
////////////////////////////////////////////////////////////////////////////
// ?a_matrix=b_matrix+c_matrix
// ? krow ? :行數(shù)
// ? kline ?:列數(shù)
// ? ktrl ? :大于0: 加法 ?不大于0:減法
////////////////////////////////////////////////////////////////////////////
{
int k, k2;
for (k = 0; k krow; k++)?
{
for(k2 = 0; k2 kline; k2++)
?
{
a_matrix[k][k2] = b_matrix[k][k2]
? ? ? ? ?
+ ((ktrl 0) ? c_matrix[k][k2] : -c_matrix[k][k2]);
}
}
}
參考資料:
百度百科-C語(yǔ)言
#include stdio.h
int main()
{ struct aaa
{ int x;
int y;
};
struct aaa t,a[3][3]= {0,0,0,1,0,2,1,0,1,1,1,2,2,0,2,1,2,2};
int i,j;
for(i=0; i3; i++)
{ for(j=0; j3; j++)
printf("[%d,%d]? ",a[i][j].x,a[i][j].y);
printf("\n");
}
printf("after:\n");
for(i=0; i3; i++)
for(j=0; ji; j++)
{ t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
for(i=0; i3; i++)
{ for(j=0; j3; j++)
printf("[%d,%d]? ",a[i][j].x,a[i][j].y);
printf("\n");
}
return 0;
}
或:
#include stdio.h
struct aaa
{ int x;
int y;
};
void zhuanzhi(struct aaa a[][3])
{ struct aaa t;
int i,j;
for(i=0; i3; i++)
for(j=0; ji; j++)
{ t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
}
void prt(struct aaa a[][3])
{ int i,j;
for(i=0; i3; i++)
{ for(j=0; j3; j++)
printf("[%d,%d]? ",a[i][j].x,a[i][j].y);
printf("\n");
}
}
int main()
{ struct aaa a[3][3]= {0,0,0,1,0,2,1,0,1,1,1,2,2,0,2,1,2,2};
prt(a);
zhuanzhi(a);
printf("after:\n");
prt(a);
return 0;
}