c语言矩阵乘法和点乘,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语言 矩阵相乘

#include fstream

#include IOMANIP

#include stdio.h

using namespace std;

void input_data(float b[][50])

{

int r,l;

for(int i=0;i3;i++)

{

for(int j=0;j3;j++)

{

printf(“\n第%d个元素为:”,i*3+j+1);//去掉b[i][j]

scanf(“%f”,b[i][j]);

}

}

printf(“输入完毕!\n”);

}

void output_data(float b[][50])

{

int r,l;

for(int i=0;i3;i++)

{

for(int j=0;j3;j++)

{

printf(“%f “,b[i][j]);

}

printf(“\n”);

}

}

void multiply(float M[50][50],float N[50][50],float J[50][50])

{

float sum;

int l=3;

int l1=3;//都是三乘三的吧,方阵

int k=3;//K赋初值

for(int i=0;ik;i++)

{

for( k=0;kl;k++)

{

sum=0;//赋初值

for(int j=0;jl1;j++)

{

sum+=M[i][j]*N[j][k];

}

J[i][k]=sum;

sum=0;

}

}

}

void main()

{

float A[50][50];

float B[50][50];

float C[50][50]={0};//赋初值

input_data(A);

output_data(A);

multiply(A,A,C);

output_data(C);

}//1 2 3 4 5 6 7 8 9

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语言矩阵乘法程序

用c语言实现两个矩阵相乘怎么做?

1、程序运行输入数据时,第一行为A矩阵的行列数和B矩阵的行列数,接着分别输入A、B两个矩阵的值。

2、首先,定义6个整型变量,保存A、B矩阵的行和列,以及控制循环的变量,k则用于实现矩阵的乘法。

3、接着,定义三个整型二维数组,保存A、B和C矩阵的各元素。

4、输入三个矩阵的行数和列数,保存在变量a、b、c中。

5、输入矩阵A的各元素,保存在数组X中。

6、输入矩阵B的各元素,保存在数组Y中。

7、将二维数组Z的各元素,初始化为0。

8、用两层for循环,控制矩阵的乘法,并输出乘法所得的结果。

9、计算A矩阵和B矩阵的乘法,结果保存在数组Z中。

10、最后,输出乘法所得的结果,即输出Z数组中的所有元素。

11、运行程序,输入矩阵A和B的行数和列数,以及A矩阵和B矩阵的所有元素,电脑就会计算出乘积C矩阵的所有元素,并输出C矩阵。

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个以内)。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/194439.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-02 14:38
下一篇 2024-12-02 14:38

相关推荐

  • Python中new和init的区别

    new和init都是Python中常用的魔法方法,它们分别负责对象的创建和初始化,本文将从多个角度详细阐述它们的区别。 一、创建对象 new方法是用来创建一个对象的,它是一个类级别…

    编程 2025-04-29
  • Python将矩阵存为CSV文件

    CSV文件是一种通用的文件格式,在统计学和计算机科学中非常常见,一些数据分析工具如Microsoft Excel,Google Sheets等都支持读取CSV文件。Python内置…

    编程 2025-04-29
  • AES加密解密算法的C语言实现

    AES(Advanced Encryption Standard)是一种对称加密算法,可用于对数据进行加密和解密。在本篇文章中,我们将介绍C语言中如何实现AES算法,并对实现过程进…

    编程 2025-04-29
  • 学习Python对学习C语言有帮助吗?

    Python和C语言是两种非常受欢迎的编程语言,在程序开发中都扮演着非常重要的角色。那么,学习Python对学习C语言有帮助吗?答案是肯定的。在本文中,我们将从多个角度探讨Pyth…

    编程 2025-04-29
  • Sublime Test与Python的区别

    Sublime Text是一款流行的文本编辑器,而Python是一种广泛使用的编程语言。虽然Sublime Text可以用于编写Python代码,但它们之间有很多不同之处。接下来从…

    编程 2025-04-29
  • Python被称为胶水语言

    Python作为一种跨平台的解释性高级语言,最大的特点是被称为”胶水语言”。 一、简单易学 Python的语法简单易学,更加人性化,这使得它成为了初学者的入…

    编程 2025-04-29
  • Shell脚本与Python脚本的区别

    本文将从多个方面对Shell脚本与Python脚本的区别做详细的阐述。 一、语法差异 Shell脚本和Python脚本的语法存在明显差异。 Shell脚本是一种基于字符命令行的语言…

    编程 2025-04-29
  • Python中while语句和for语句的区别

    while语句和for语句是Python中两种常见的循环语句,它们都可以用于重复执行一段代码。然而,它们的语法和适用场景有所不同。本文将从多个方面详细阐述Python中while语…

    编程 2025-04-29
  • OpenJudge答案1.6的C语言实现

    本文将从多个方面详细阐述OpenJudge答案1.6在C语言中的实现方法,帮助初学者更好地学习和理解。 一、需求概述 OpenJudge答案1.6的要求是,输入两个整数a和b,输出…

    编程 2025-04-29
  • Web程序和桌面程序的区别

    Web程序和桌面程序都是进行软件开发的方式,但是它们之间存在很大的区别。本文将从多角度进行阐述。 一、运行方式 Web程序运行于互联网上,用户可以通过使用浏览器来访问它。而桌面程序…

    编程 2025-04-29

发表回复

登录后才能评论