2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > C语言求任意两个矩阵相乘的算法(初学尝试矩阵乘法)

C语言求任意两个矩阵相乘的算法(初学尝试矩阵乘法)

时间:2021-12-20 12:57:18

相关推荐

C语言求任意两个矩阵相乘的算法(初学尝试矩阵乘法)

C语言求任意两个矩阵相乘的算法(不同于大部分规格固定的矩阵乘法)

结果图如下 :

代码如下:

//----- 任意两个矩阵相乘

# include <stdio.h>

int main (void)

{

char ch;

int a, b, c, d;

printf ("此算法用于任意两个矩阵相乘 \n矩阵1(a行b列)乘以矩阵2(c行d列),请您按顺序输入a、b、c、d,中间以空格隔开:\n");

scanf ("%d %d %d %d", &a, &b, &c, &d);

while (b != c)

{

printf ("您输入的矩阵规格不能相乘,请重新输入。\n");

printf ("矩阵1(a行b列)乘以矩阵2(c行d列),请按顺序输入a、b、c、d,中间以空格隔开:\n");

scanf ("%d %d %d %d", &a, &b, &c, &d);

}

while ((ch = getchar()) != '\n')

continue;

printf ("\n");

int i, j;

int f[100][100] = {0}; //100是随机大数,是算法能计算的矩阵上限

int g[100][100] = {0};

int h[100][100] = {0};

printf ("\n");

for (i=0;i<a;++i)//输入矩阵1

{

printf ("请输入矩阵1的第%d行数据,元素之间用空格隔开:\n", (i+1));

for (j=0;j<b;++j)

{

scanf ("%d", &f[i][j]);

}

while ((ch = getchar()) != '\n')

continue;

}

printf ("矩阵1为:\n");

for (i=0;i<a;++i)//输出矩阵1

{

for (j=0;j<b;++j)

printf (" %-10d ", f[i][j]);//-10是指左对齐,每个数占10格

printf ("\n");

}

printf ("\n");

for (i=0;i<c;++i)//输入矩阵2

{

printf ("请输入矩阵2的第%d行数据,元素之间用空格隔开:\n", (i+1));

for (j=0;j<d;++j)

{

scanf ("%d", &g[i][j]);

}

while ((ch = getchar()) != '\n')

continue;

}

printf ("矩阵2为:\n");

for (i=0;i<c;++i)//输出矩阵2

{

for (j=0;j<d;++j)

printf (" %-10d ", g[i][j]);//-10是指左对齐,每个数占10格

printf ("\n");

}

printf ("\n");

int k;

for (i=0;i<a;++i)//矩阵相乘

{

for (j=0;j<d;++j)

for (k=0;k<b;++k)

{

h[i][j] = h[i][j] + f[i][k]*g[k][j];

}

}

printf ("结果矩阵为:\n");

for (i=0;i<a;++i)//输出结果矩阵

{

for (j=0;j<d;++j)

printf (" %-10d ", h[i][j]);//-10是指左对齐,每个数占10格

printf ("\n");

}

return 0;

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。