本文目录一览:
- 1、c语言的矩阵乘法问题 初学者求助
- 2、c语言矩阵的乘法
- 3、C语言中两矩阵相乘
- 4、C语言实现矩阵乘法
c语言的矩阵乘法问题 初学者求助
//矩阵乘法属于线性代数;矩阵乘法的原理不难,只要原理搞请,代码很好写的
#includestdio.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("\n");
}
}
c语言矩阵的乘法
#includestdio.h
typedef struct
{
int m;
int n;
int array[100][100];
}Ju_def;
int main()
{
Ju_def Ju[11];
int i=0,m,n,k;
int flag[10];
while(1)
{
flag[i]=0;
printf("In put m and n:\n");
scanf("%d%d",Ju[i].m,Ju[i].n);
while(Ju[i].m=0||Ju[i].m100||Ju[i].n=0||Ju[i].m100)
{
printf("In put m and n again:\n");
scanf("%d%d",Ju[i].m,Ju[i].n);
}
printf("In put your array:\n");
for(m=0;mJu[i].m;m++)
{
for(n=0;nJu[i].n;n++)
{
scanf("%d",Ju[i].array[m][n]);
if(Ju[i].array[m][n]==0)
flag[i]++;
}
}
if(flag[i]==(Ju[i].m*Ju[i].n))//矩阵元素全为0才退出循环
{
flag[i]=1;
break;
}
else
flag[i]=0;
i++;
i=i%10;//超过10个矩阵,则又循环到第1个。
}
for(i=1;i10;i++)
{
if((Ju[i].m!=Ju[0].n)(flag[i]==0))
{
printf("Not satisfied the definition of matrix multiplication !\n");
return 0;
}
if(flag[i])
{
break;
}
for(m=0;mJu[0].m;m++)
{
for(n=0;nJu[0].n;n++)
{
Ju[10].array[m][n]=0;
for(k=0;kJu[i].m;k++)
{
Ju[10].array[m][n]+=Ju[0].array[m][n]*Ju[i].array[k][n];
}
Ju[0].array[m][n]=Ju[10].array[m][n];
}
}
}
for(m=0;mJu[0].m;m++)
{
for(n=0;nJu[0].n;n++)
{
printf("%-8d",Ju[0].array[m][n]);
}
printf("\n");
}
}
你试试这个我的矩阵乘法是这样的了,A=A*B*C...(10个以内)。
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;ix;i++){
for(j=0;jy;j++){
scanf("%d",a[i][j]);
}
}
printf("请输入矩阵b:\n");
for(i=0;iy;i++){
for(j=0;jz;j++){
scanf("%d",b[i][j]);
}
}
printf("矩阵a为:\n");
for(i=0;ix;i++){
for(j=0;jy;j++){
printf("%d",a[i][j]);
if(j==y-1)
printf("\n");
else
printf("\t");
}
}
printf("矩阵b为:\n");
for(i=0;iy;i++){
for(j=0;jz;j++){
printf("%d",b[i][j]);
if(j==z-1)
printf("\n");
else
printf("\t");
}
}
for(i=0;ix;i++){
for(l=0;lz;l++){
for(j=0;jy;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;ix;i++){
for(j=0;jz;j++){
printf("%d",c[i][j]);
if(j==z-1)
printf("\n");
else
printf("\t");
}
}
return 0;
}
C语言实现矩阵乘法
1,若程序定义为三行三列的矩阵,并在主函数中键盘赋值。请编写函数juzhen(int a[][3],int n),函数功能是:使矩阵左下角元素中的值乘以.例如:若矩阵中的值为:
1 9 7
2 3 8
4 5 6
n=3,则矩阵值变为:
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语言矩阵乘法程序