当前位置:首页 » 编程语言 » c语言两行三列矩阵
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言两行三列矩阵

发布时间: 2022-04-29 18:16:58

‘壹’ c语言:输入矩阵2行3列的矩阵A和矩阵3行4列的矩阵B,计算矩阵的乘积

#include <stdio.h>
#include <stdlib.h>

#define L 2
#define M 3
#define N 4

void genArr(double *Arr, int row, int col)
{
int i = 0;
int n = row * col;

srand(time(NULL));

for (i = 0; i < n; ++i)
{
Arr[i] = rand() % 10;
}
}

void printMatrix(double *Arr, int row, int col)
{
int i = 0;
int j = 0;

for (i = 0; i < row; ++i)
{
for (j = 0; j < col; ++j)
{
printf("%lf\t", *(Arr + i * col + j));
}

printf("\n");
}

return;
}

int main(void)
{
double A[L][M] = {{0}};
double B[M][N] = {{0}};
double C[L][N] = {{0}};
int i = 0, j = 0, k = 0;

printf("\nGenerate A[%d][%d]:\n", L, M);
genArr(&A[0][0], L, M);
printMatrix(&A[0][0], L, M);

printf("\nGenerate B[%d][%d]:\n", M, N);
genArr(&B[0][0], M, N);
printMatrix(&B[0][0], M, N);

for (i = 0; i < L; ++i)
{
for (k = 0; k < N; ++k)
{
C[i][k] = 0;
for (j = 0; j < M; ++j)
{
C[i][k] += A[i][j] * B[j][k];
}
}
}

printf("\nCalc C[%d][%d]:\n", L, N);
printMatrix(&C[0][0], L, N);

return 0;
}

‘贰’ c语言输入一个两行三列矩阵,将其行列互换后,将原矩阵和互换后矩阵输出

#include<stdio.h>
#include<math.h>
intmain()
{inti,j,a[2][3],b[3][2];
for(i=0;i<2;i++)
for(j=0;j<3;j++)
{scanf("%d",&a[i][j]);
b[j][i]=a[i][j];
}
printf(" ");
for(i=0;i<2;i++)
{for(j=0;j<3;j++)
printf("%4d",a[i][j]);
printf(" ");
}
printf(" ");
for(i=0;i<3;i++)
{for(j=0;j<2;j++)
printf("%4d",b[i][j]);
printf(" ");
}
return0;
}

‘叁’ 有一个2*3的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号要用C语言编写

#include<stdio.h>

intmain()

{

inta[2][3],i,j,max,n,m;

printf("inputthearray:");

for(i=0;i<2;i++)

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

scanf("%d",&a[i][j]);//输入两行三列的矩阵

for(i=0;i<2;i++)

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

{

printf("%5d",a[i][j]);

if(j==2)printf(" ");//输出矩阵

}

max=a[0][0];//先设第一个数位最大值

for(i=0;i<2;i++)

for(j=0;j<3;j++)//逐个比较

if(a[i][j]>max)

{

max=a[i][j];//如果比max大就重新赋予max

n=i;

m=j;//记录那个数的位置

}

printf("a[%d][%d]=%d ",n,m,max);//输出

return0;

}//数组是从0,开始的


‘肆’ c语言:输入一个2行3列的矩阵A和一个3行4列的矩阵B,计算两矩阵的乘积

解题过程如下:

#include <stdio.h>;#include <stdlib.h>

#define L 2,#define M 3,#define N 4

}printf(" ");}return;}int main(void){double A[L][M] = {{0}};

double B[M][N] = {{0}};double C[L][N] = {{0}};int i = 0, j = 0, k = 0;

printf(" Generate A[%d][%d]: ", L, M);

genArr(&A[0][0], L, M);

printMatrix(&A[0][0], L, M);

printf(" Generate B[%d][%d]: ", M, N);

{for (k = 0; k < N; ++k)

{C[i][k] = 0;for (j = 0; j < M; ++j)

{C[i][k] += A[i][j] * B[j][k];}}}printf(" Calc C[%d][%d]: ", L, N);

printMatrix(&C[0][0], L, N);return 0;}


(4)c语言两行三列矩阵扩展阅读

性质:

矩阵相乘最重要的方法是一般矩阵乘积。它只有在第一个矩阵的列数(column)和第二个矩阵的行数(row)相同时才有意义 。

一般单指矩阵乘积时,指的便是一般矩阵乘积。一个m×n的矩阵就是m×n个数排成m行n列的一个数阵。由于它把许多数据紧凑地集中到了一起,所以有时候可以简便地表示一些复杂的模型,如电力系统网络模型。

当矩阵A的列数(column)等于矩阵B的行数(row)时,A与B可以相乘。矩阵C的行数等于矩阵A的行数,C的列数等于B的列数。乘积C的第m行第n列的元素等于矩阵A的第m行的元素与矩阵B的第n列对应元素乘积之和。

当提及“矩阵相乘”或者“矩阵乘法”的时候,并不是指代这些特殊的乘积形式,而是定义中所描述的矩阵乘法。在描述这些特殊乘积时,使用这些运算的专用名称和符号来避免表述歧义。

把给定的图转为邻接矩阵,即A(i,j)=1当且仅当存在一条边i->j。令C=A*A,那么C(i,j)=ΣA(i,k)*A(k,j),实际上就等于从点i到点j恰好经过2条边的路径数(枚举k为中转点)。

类似地,C*A的第i行第j列就表示从i到j经过3条边的路径数。同理,如果要求经过k步的路径数,只需要二分求出A^k即可。

‘伍’ C语言中如何编程:将两行三列的二维数组转换为三行两列的二维数组

利用矩阵转置就行
#include <stdio.h>
#define MAX 20
int m,n;
void transpose(double a[][MAX],double b[][MAX])
{
int i,j;
for(i=0;i<MAX;i++)
for(j=0;j<MAX;j++)
b[i][j]=a[j][i];
}

void main()
{
int i,j;
double a[MAX][MAX],b[MAX][MAX];
puts("输入矩阵的行,列:");
scanf("%d %d",&m,&n);
puts("输入矩阵元素:");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
scanf("%lf",&a[i][j]);
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(a[i][j]-int(a[i][j])!=0)
printf("%lf ",a[i][j]);
else
printf("%d ",int(a[i][j]));
}
puts("");
}
transpose(a,b);

puts("转置后的矩阵为:");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(b[i][j]-int(b[i][j])!=0)
printf("%lf ",b[i][j]);
else
printf("%d ",int(b[i][j]));
}
puts("");
}
}

‘陆’ C语言 :编写 一个程序使一个2行3列的矩阵倒置成3行俩列的矩阵。就是矩阵的倒置、 谢谢拉 。。

#include<stdio.h>
void main()
{
int a[3][2]={1,2,3,4,5,6};
int b[2][3],i,j;
for(i=0;i<3;i++)
for(j=0;j<2;j++)
b[j][i]=a[i][j];
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
printf("%d ",b[i][j]);
printf("\n");
}
}

‘柒’ 二十、编程序,将2行3列的矩阵实现行列互换。(提示:定义两个二维数组,在程序中赋值,输出转置后的矩阵

main()
{
int t,i,j,r[3][3]={{1,2,3},{7,8,9}};
for(i=0;i<2;i++)
{ for(j=i;j<3;j++)
{t=r[i][j];
r[i][j]=r[j][i];
r[j][i]=t;}
}
for(i=0;i<3;i++)
{ for(j=0;j<2;j++)
printf("%d ",r[i][j]);
printf("\n");}
}

‘捌’ C语言实现有两个分别是2行3列和3行2列的矩阵,其数据均由键盘输入,这两个矩阵相乘后是一个2*2的矩阵

这是程序
#include <stdio.h>
int a[2][3],b[3][2],c[2][2]; //输入a和b,输出矩阵c
int temp; //计算c中每个元素时的中间变量
void main()
{
int i,j,k; //循环变量
//键盘输入矩阵a
printf("请输入矩阵a:"); //按行输入
for (i=0; i<2; i++)
{
for (j=0; j<3; j++)
{
scanf("%d",&a[i][j]);
}
}
//键盘输入矩阵b
printf("请输入矩阵b:"); //按行输入
for (i=0; i<3; i++)
{
for (j=0; j<2; j++)
{
scanf("%d",&b[i][j]);
}
}
//计算c=a*b
for (i=0; i<2; i++)
{

for (j=0; j<2; j++)
{
temp=0;
for (k=0; k<3; k++)
{
temp+=a[i][k]*b[k][j];
}
c[i][j]=temp;
}
}
printf("矩阵c为:\n");
printf("%d %d",c[0][0],c[0][1]);
printf("\n");
printf("%d %d",c[1][0],c[1][1]);
printf("\n");

}

经过VC++ 6.0调试通过的,你看行不行?

‘玖’ 输入2行3列的矩阵元素,存入二维数组,再按行列格式输出(要求用指针)C语言问题

for(int i=0;i<2;i++)
{
for(int j=0;j<3;j++)
printf("%i",array[i][j]);//如果矩阵元素是整数,
}

‘拾’ 请问C语言中如何计算任意两个两行三列矩阵相加

scanf("%d",a[i][j]);
改为:scanf("%d",&a[i][j]);
scanf("%d",a[i][j]);
改为:scanf("%d",&b[i][j]);